Agent skill

Broker Integration

by marketcalls in marketcalls/openalgo

Integrate a new Indian broker into OpenAlgo, or modify an existing broker plugin.

AGPL-3.0Auto-check: notesBackend & APIs

Install Broker Integration

skills CLI
$ npx skills add marketcalls/openalgo --skill broker-integration -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install marketcalls/openalgo broker-integration --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/marketcalls/openalgo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/broker-integration .claude/skills/broker-integration && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
broker-integration
GitHub stars
2.8k
Token cost
~4.7k tokens
SKILL.md length
1,846 words
Files
11 (incl. references)
Skills in repo
8
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Integrate a new Indian broker into OpenAlgo, or modify an existing broker plugin.

  • Works in 5 steps: identify the broker's family, then copy… → read the common contracts before writing… → the module contract → …
  • Wiring up a brokers auth/login
  • SKILL.md covers Where broker code sits in the…, Step 1 — identify the broker's…, Step 2 — read the common… and Step 3 — the module contract, plus 7 more sections
  • Calls pip

What it does

Broker Integration is an agent skill from marketcalls/openalgo. Integrate a new Indian broker into OpenAlgo, or modify an existing broker plugin. Use when wiring up a broker's auth/login, orders, quotes, depth, history, funds, margin, symbol master, or WebSocket streaming; when a broker does not appear in the login dropdown or fails to load; or when debugging broker-specific symbol, exchange-code, price-scaling, or order-field mapping.

Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including reference files (for example `references/auth-and-login.md`, `references/cross-broker-reference.md` and `references/data-and-account.md`).

It sits in Backend & APIs, covering Realtime and WebSockets and Trading and backtesting. The repository describes itself as: Open Source Algo Trading Platform for Everyone. The licence is AGPL-3.0.

When your agent uses it

  • Wiring up a brokers auth/login
  • WebSocket streaming
  • A broker does not appear in the login dropdown
  • Debugging broker-specific symbol

Example prompts

  • “/broker-integration”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. identify the broker's family, then copy that broker
  2. read the common contracts before writing anything
  3. the module contract
  4. required directory layout
  5. HTTP pooling and FD hygiene (mandatory, applies throughout)

What it can do on your machine

Read from SKILL.md and the folder at commit 12e1114. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Broker Integration loads about 4.7k tokens when it runs, and up to ~26k if it reads all its reference files. Until then it costs about 99 tokens; SKILL.md has 1,846 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~99
When it runs · the whole SKILL.md, loaded when a task matches
~4.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~26k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:270
    | Auth, login callback, `.env` + install wiring | `references/auth-and-login.md` |

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from marketcalls/openalgo at commit 12e1114, republished under its AGPL-3.0 licence (© marketcalls). 1,846 words, ~4,691 tokens.

Download SKILL.mdSave it as .claude/skills/broker-integration/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
broker-integration
description
Integrate a new Indian broker into OpenAlgo, or modify an existing broker plugin. Use when wiring up a broker's auth/login, orders, quotes, depth, history, funds, margin, symbol master, or WebSocket streaming; when a broker does not appear in the login dropdown or fails to load; or when debugging broker-specific symbol, exchange-code, price-scaling, or order-field mapping.

Integrating a broker into OpenAlgo

Golden rule: OpenAlgo has a common symbol format, common API, and common WebSocket format. Your only job per file is to translate the broker's specific shapes into those common contracts (and back). Copy the closest reference broker, then adapt the broker-specific bits.

36 broker plugins already exist. Almost every problem you will hit has been solved in one of them — the skill is knowing which one to copy, and which details are genuinely broker-specific.

Where broker code sits in the stack

restx_api/<endpoint>.py     Marshmallow schema validation + per-IP rate limit. Thin.
  services/<x>_service.py   Auth resolution, analyze-mode branch, event emission.
                            Returns (success: bool, response_data: dict, status_code: int)
    broker/<name>/api/*     <- YOU ARE HERE. The only place broker specifics live.

Two consequences worth internalizing:

  • You never emit events. events/ and utils/event_bus.py are a services-layer concern (order placed, cancelled, GTT triggered). Broker modules do not import them. The one exception in the tree (broker/iiflcapital/streaming/iiflcapital_order_adapter.py) is an order-update stream, not the REST path — do not copy that pattern by default.
  • Analyze mode never reaches you. get_analyze_mode() in the service short-circuits to sandbox_service before any broker call. So "it works in analyzer" proves nothing about your integration.

Step 1 — identify the broker's family, then copy that broker

This is the highest-leverage decision. Indian brokers cluster into four auth families, and picking the right template saves days:

FamilyMembers already in the treeAuth shapeCopy
OAuth2 / checksum redirectzerodha, upstox, fyers, dhan, arrow, groww, paytm, aliceblue, definedgeRedirect to broker, get request_token/code back on callback, exchange it (often SHA256 checksum of api_key + token + secret)broker/zerodha/
Noren / Finvasiashoonya, flattrade, tradesmart, zebu, ibulls, wisdomShared upstream codebase. Near-identical endpoints, jData=/jKey= form bodies, susurl/scrip-master CSVs per exchangebroker/shoonya/ or broker/flattrade/
Symphony XTSfivepaisaxts, jainamxts, compositedge, rmoney, iiflcapitalDual credentials: interactive + market-data. BROKER_API_KEY_MARKET / _SECRET_MARKETbroker/fivepaisaxts/
Direct login + TOTPangel, mstock, motilal, kotak, firstock, samco, nubra, tradejini, fivepaisaUser submits clientcode/password/TOTP in a form; no redirectbroker/angel/

Special cases: broker/fyers/ if the broker offers depth beyond 5 levels (dual WebSocket, 50-level TBT socket). broker/deltaexchange/ is the only broker_type: "crypto" plugin and the only one with leverage_config: true — ignore it for Indian equity brokers.

If the broker is a white-label of one of the above (very common — many Indian brokers resell Noren or XTS), the family template is often 90% correct as-is. Check the API docs for tell-tale endpoint paths (/NorenWClientTP/, /interactive/user/session) before assuming it is bespoke.

Step 2 — read the common contracts before writing anything

These define the format you must conform to. Do not infer them from a reference broker's code — read the specs:

TopicFile
Symbol format (EQ/FUT/CE/PE, indices, exchange codes)docs/prompt/symbol-format.md
Order constants (product, pricetype, action, exchanges)docs/prompt/order-constants.md
Lot size conventionsdocs/prompt/LotSize.md
Common API request/response per endpointdocs/api/** (esp. account-services/, market-data/, order-management/)
WebSocket streaming formatdocs/prompt/websockets-format.md, docs/api/websocket-streaming/*
Services layer contractdocs/prompt/services_documentation.md
Rate limitsdocs/api/rate-limiting.md
Long-form integration notesdocs/broker-integration-guide.md
Runtime constraints (eventlet, NullPool, FD hygiene)root CLAUDE.md

Inspect the LIVE db/openalgo.db symtoken table of a working broker (e.g. connect zerodha once). This is the single most useful reference — it shows the exact column values your master contract must reproduce. Do this BEFORE wiping symtoken with your new broker's data — the old broker's rows are your ground truth for NCO symbol format, MCX_INDEX names, expiry formatting and the index symbol set. Once you overwrite the table, that reference is gone.

Calibrate against the plugins that already exist

Before deciding what is normal for a broker — batch caps, rate limits, depth levels, which capabilities OpenAlgo even has a contract for — read references/cross-broker-reference.md. It records how all 35 existing plugins actually behave, measured from the tree, so you are not guessing at defaults or reinventing a decision someone already made.

If you have no reachable documentation for your broker, read its family sibling in the tree — a Noren white-label behaves essentially like broker/flattrade/, an XTS white-label like broker/fivepaisaxts/.

The broker's official SDK is your second source of truth

When the broker's docs omit literal details (JSON field names, binary byte offsets, enum codes, endpoint routes), download their official Python SDK from PyPI and read its source — it encodes what the server actually accepts:

bash
pip download <broker-sdk-package> --no-deps -d /tmp/sdk && cd /tmp/sdk && unzip -o *.whl
# then read: routes/constants (endpoint paths, enum codes), the request
# plumbing (json vs form body), and any _parse_*_packet binary parsers

For Arrow this single trick resolved: the websocket binary offsets (docs don't publish them), the margin request field names + product enum (C/I/M), the basket-margin endpoint shape, and the quote modes/exchange enum. Reading the SDK is minutes; guessing wrong costs hours of cryptic 400s.

Step 3 — the module contract

Services do importlib.import_module(f"broker.{broker}.api.<module>") and call fixed names — these ARE the contract. Verified against services/*.py:

ServiceModuleFunctionReturns
loginapi.auth_apiauthenticate_broker(...)(auth_token, error) — arity varies, see below
placeapi.order_apiplace_order_api(data, auth)(response, response_data, orderid); response.status == 200 = success
smartapi.order_apiplace_smartorder_api(data, auth)same shape
modifyapi.order_apimodify_order(data, auth)(dict, status_code)
cancelapi.order_apicancel_order(orderid, auth)(dict, status_code)
cancel allapi.order_apicancel_all_orders_api(data, auth)(canceled[], failed[])
closeapi.order_apiclose_all_positions(api_key, auth)(dict, status_code)
orderbookapi.order_api + mapping.order_dataget_order_book(auth); map_order_data, calculate_order_statistics, transform_order_dataraw -> normalized
tradebookapi.order_api + mapping.order_dataget_trade_book(auth); map_trade_data, transform_tradebook_data
positionsapi.order_api + mapping.order_dataget_positions(auth); map_position_data, transform_positions_data
holdingsapi.order_api + mapping.order_dataget_holdings(auth); map_portfolio_data, calculate_portfolio_statistics, transform_holdings_data
(internal)api.order_apiget_open_position(symbol, exchange, product, auth)net qty as str (used by smart order)
fundsapi.fundsget_margin_data(auth)dict
quotesapi.dataBrokerData(auth).get_quotes(symbol, exchange)dict
depthapi.dataBrokerData(auth).get_depth(symbol, exchange)dict (5 levels)
historyapi.dataBrokerData(auth).get_history(symbol, exchange, interval, start, end)pandas DataFrame
multiquotesapi.dataBrokerData(auth).get_multiquotes(symbols)list — optional, see below
intervalsapi.dataBrokerData(auth).timeframe_map (attribute)dict
masterdatabase.master_contract_dbmaster_contract_download()emits socketio event
marginapi.margin_apicalculate_margin_api(positions, auth)(response, data); data.data = {total_margin_required, span_margin, exposure_margin} (+ optional total_charges)
GTTapi.gtt_apiplace_gtt_order, modify_gtt_order, cancel_gtt_order, get_gtt_bookoptional — only Dhan and Zerodha have one; the capability gate returns 501 when absent

auth is always the decrypted broker token string (last positional arg).

There is one more optional surface: an order-update stream (real-time fills, rejections, cancellations pushed to the client). 17 of 36 brokers implement it. It is registered separately in services/order_update_service.py, not in the table above — see references/order-updates.md.

NUANCE — BrokerData.__init__ arity is introspected, not fixed

services/quotes_service.py inspects BrokerData.__init__.__code__.co_argcount and passes (auth_token, feed_token) when the constructor takes two args, otherwise (auth_token). So a broker whose market-data API needs a separate feed token simply declares def __init__(self, auth_token, feed_token) and the service adapts. All the common templates (zerodha/dhan/fyers/flattrade/ angel/arrow) are single-arg — only add the second parameter if the broker truly has a distinct feed credential.

NUANCE — get_multiquotes is optional and silently degrades

The service does hasattr(data_handler, "get_multiquotes") and falls back to looping get_quotes per symbol if absent. That fallback works but is brutally slow for the options tools, which request 180+ symbols at once. Implement get_multiquotes for any broker with a batch quote endpoint.

NUANCE — margin: never sum legs when a basket endpoint exists

Copy broker/dhan/api/margin_api.py — it is the reference pattern: route ONE position to the broker's single-order calculator (detailed charge breakdown) and 2+ positions to the basket/multi calculator so the broker nets spread/hedge benefits (an Arrow NIFTY short straddle priced at ~207k via basket vs ~337k as a naive per-leg sum). Include Dhan's two guards: a JSON-decode guard (non-JSON broker reply -> 502) and _normalise_success_response (broker sends an error payload with HTTP 200 -> convert to a 400 response object, because margin_service trusts HTTP 200).

Show full SKILL.md (711 more words)Show less
Symbol translation helpers you must use

Import from database.token_db (re-exported from token_db_enhanced) — never hand-roll symbol lookups:

HelperDirection
get_token(symbol, exchange)OpenAlgo symbol -> broker instrument token
get_symbol(token, exchange)token -> OpenAlgo symbol
get_br_symbol(symbol, exchange)OpenAlgo symbol -> broker tradingsymbol
get_oa_symbol(brsymbol, exchange)broker tradingsymbol -> OpenAlgo symbol
get_brexchange(symbol, exchange)OpenAlgo exchange -> broker exchange code
get_symbol_info(symbol, exchange)full SymToken row (lotsize, tick_size, expiry, ...)
get_tokens_bulk(pairs)batch token lookup — use in get_multiquotes

Step 4 — required directory layout

broker/<name>/
  __init__.py
  plugin.json                         # metadata; see below
  api/__init__.py
  api/baseurl.py                      # (optional) hosts + auth-header builder (DRY)
  api/auth_api.py                     # authenticate_broker(...)
  api/order_api.py                    # place/modify/cancel/book/positions/holdings
  api/data.py                         # class BrokerData (quotes/depth/history)
  api/funds.py                        # get_margin_data(auth)
  api/margin_api.py                   # (optional) calculate_margin_api
  api/gtt_api.py                      # (optional) GTT support
  mapping/__init__.py
  mapping/transform_data.py           # OpenAlgo order -> broker payload + enum maps
  mapping/order_data.py               # broker JSON -> OpenAlgo normalized rows
  mapping/exchange.py                 # (optional) exchange/index translation (shared)
  database/__init__.py
  database/master_contract_db.py      # master_contract_download() + SymToken
  streaming/__init__.py               # exports <Name>WebSocketAdapter
  streaming/<name>_adapter.py         # class <Name>WebSocketAdapter(BaseBrokerWebSocketAdapter)
  streaming/<name>_websocket.py       # sync websocket-client thread
  streaming/<name>_mapping.py         # exchange + capability registries

plugin.json fields that actually do something: supported_exchanges (drives capability checks and what you must live-test), broker_type (IN_stock for all 35 Indian brokers, crypto for deltaexchange), leverage_config (false for every Indian broker in the tree).

Shared utils/ a broker plugin depends on

Never hand-roll these — the shared helper is the contract, and bypassing it is how FD leaks, unredacted secrets and rate-limit breaches get introduced. Usage counts across the 36 existing plugins:

ModuleUsesWhat you must take from it
utils.logging~361logger = get_logger(__name__) in every module. Its SensitiveDataFilter is what stops broker tokens reaching the logs — a bare print() or logging.getLogger() bypasses that redaction. Errors use logger.exception().
utils.httpx_client~197get_httpx_client() — the shared pooled HTTP/2 client. Never construct a per-call client. Always pass an explicit timeout=.
utils.mpp_slab~18Market Price Protection slabs for emulating MARKET/SL-M. See references/order-type-emulation.md.
utils.config~5get_broker_api_key(), get_broker_api_secret(), get_host_server(), rate-limit getters. Prefer these over raw os.getenv so composite ::: keys and defaults resolve consistently.
utils.constants2EXCHANGE_NSE, EXCHANGE_NFO, ... — canonical exchange codes. Use them instead of string literals.
utils.plugin_loader—Discovers broker/*/plugin.json at startup and requires the exact name authenticate_broker. You do not call it; it calls you.

utils.event_bus exists but is a services-layer concern — broker modules do not publish events.

You do not touch restx_api/

No broker plugin references restx_api/, and a new broker must not add one. That layer is broker-agnostic: each file is a thin Marshmallow-validated, rate-limited Flask-RESTX resource that calls a service, which then dispatches to whichever broker is configured. Adding an endpoint there for one broker's special feature would break the "common API across all brokers" contract.

If a broker offers something OpenAlgo has no endpoint for (GTT on a third broker, bracket orders, 20-level depth), the change is: service layer first, then restx_api/ — as a capability available to every broker, not a one-off. See the capability list in references/cross-broker-reference.md.

Step 5 — HTTP pooling and FD hygiene (mandatory, applies throughout)

  • All REST via utils/httpx_client.get_httpx_client() — a shared pooled HTTP/2 client. NEVER httpx.Client() / requests / urllib / aiohttp per call.
  • The shared client has a default 120s timeout; add an explicit timeout= for large/slow calls (e.g. the instrument-master download).
  • DB engines via database.engine_factory.create_db_engine() (NullPool).
  • Use with db_session() as session: for reads; db_session.remove() in a finally for background-thread work.
  • After building, run the fd-audit skill on your change.

Detailed references — load the one for the phase you are in

PhaseRead
Calibration: batch caps, rate limits, depth, capability gapsreferences/cross-broker-reference.md
Auth, login callback, .env + install wiringreferences/auth-and-login.md
Instrument master, SymToken, symbol constructionreferences/master-contract.md
Quotes / depth + account-data normalizationreferences/data-and-account.md
Historical data — timestamps, chunking, boundariesreferences/history-data.md
Rate limiting — pacing strategy, 429 handlingreferences/rate-limiting.md
MARKET / SL-M emulation when the broker lacks themreferences/order-type-emulation.md
Market-data WebSocket adapter, binary parsing, ZMQreferences/streaming.md
Account-level order/trade update streamreferences/order-updates.md
Live-hardening pass, verification, cheat-sheetreferences/hardening-and-verification.md

Build order

  1. Research — API docs, pick the family template, read the common contracts, inspect a live symtoken, download the broker SDK.
  2. plugin.json + api/auth_api.py — get login working end-to-end first. Nothing else can be tested until a token is stored.
  3. Platform wiring — VALID_BROKERS, install scripts, BrokerSelect.tsx, websocket_proxy/__init__.py, brlogin.py branch. See references/auth-and-login.md. Without this the broker will not even appear in the dropdown.
  4. database/master_contract_db.py — symbols must exist before quotes/orders can be tested. Validate offline against the live symtoken reference.
  5. mapping/ + api/data.py — quotes, depth, history.
  6. api/order_api.py + mapping/order_data.py — orders and books.
  7. api/funds.py, api/margin_api.py — funds and margin.
  8. streaming/ — market data first (the hardest part), then the optional order-update adapter.
  9. Live-hardening pass — see references/hardening-and-verification.md. Budget real time for this; it is where the actual bugs are.

What "done" does not mean

  • Analyze mode passing proves nothing. It routes to the sandbox and never calls your code.
  • A clean code review proves little. All six Arrow bugs survived review; every one needed a live probe.
  • NSE working proves nothing about the other exchanges. Test every exchange listed in your plugin.json — that list is a promise.

© marketcalls, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 10 other files (references) in .claude/skills/broker-integration of marketcalls/openalgo.

  • SKILL.md
  • references/auth-and-login.md
  • references/cross-broker-reference.md
  • references/data-and-account.md
  • references/hardening-and-verification.md
  • references/history-data.md
  • references/master-contract.md
  • references/order-type-emulation.md
  • references/order-updates.md
  • references/rate-limiting.md
  • references/streaming.md

Open the folder on GitHubat commit 12e1114

Compare with similar skills

Broker Integration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Broker Integration compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Broker Integration this skillmarketcalls/openalgo2.8k—~4.7kAutomated safety check: NotesAGPL-3.0
Web3 PolymarketPolymarket/agent-skills1921 repos~2kAutomated safety check: PassNone
Cryptofeed2025Emma/vibe-coding-cn23k1 repos~1.6kAutomated safety check: PassMIT
Tiger Brokers C++ OpenAPI SDKqusong0627/QuantMind1.7k—~942Automated safety check: PassApache-2.0
Polymarket2025Emma/vibe-coding-cn23k1 repos~1.6kAutomated safety check: PassMIT
Openalgo Chart Terminalmarketcalls/openalgo-charts146—~3.8kAutomated safety check: NotesApache-2.0

Similar skills

  • Web3 Polymarket

    Polymarket/agent-skills

    Polymarket integration for prediction market trading on Polygon.

    192 GitHub starsUsed in 1 repo~2k tokens
    Backend & APIsAuto-check passed
  • Cryptofeed

    2025Emma/vibe-coding-cn

    Cryptofeed - Real-time cryptocurrency market data feeds from 40+ exchanges.

    23k GitHub starsUsed in 1 repo~1.6k tokens
    Backend & APIsAuto-check passed
  • Tiger Brokers C++ OpenAPI SDK

    qusong0627/QuantMind

    Guides an agent through the Tiger Brokers OpenAPI C++ SDK for build setup, market data, orders and real-time push, defaulting to paper trading.

    1.7k GitHub stars~942 tokensUpdated today
    Backend & APIsAuto-check passed
  • Polymarket

    2025Emma/vibe-coding-cn

    Comprehensive Polymarket skill covering prediction markets, API, trading, market data, and real-time WebSocket data streaming.

    23k GitHub starsUsed in 1 repo~1.6k tokens
    Backend & APIsAuto-check passed
  • Openalgo Chart Terminal

    marketcalls/openalgo-charts

    Build a full trading terminal on openalgo-charts - symbol search, interval switcher, chart-type picker, indicator menu, drawing rail with clipboard, live OpenAlgo REST plus WebSocket data behind a…

    146 GitHub stars~3.8k tokensUpdated 9 days ago
    Backend & APIsAuto-check: notes
  • Dflow

    sendaifun/skills

    Complete DFlow trading protocol SDK - the single source of truth for integrating DFlow on Solana.

    130 GitHub starsUsed in 1 repo~5.7k tokens
    Backend & APIsAuto-check passed

More from marketcalls/openalgo

All 8 skills in this repo
  • Fd Audit

    marketcalls/openalgo

    Audit a change for resource leaks in OpenAlgo — file descriptors AND unbounded memory growth.

    2.8k GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Flow Builder

    marketcalls/openalgo

    Build, edit or debug an OpenAlgo Flow workflow - the no-code node graph at /flow.

    2.8k GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Openscript

    marketcalls/openalgo

    Write an OpenScript study or strategy for OpenAlgo, and install it into strategies/openscript/ only after it compiles.

    2.8k GitHub stars~2.3k tokensUpdated yesterday
    Auto-check: notes
  • Security Audit

    marketcalls/openalgo

    Run OpenAlgo's periodic security audit across backend, frontend, database, cache, routes and dependencies, producing a dated xlsx report.

    2.8k GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Verify

    marketcalls/openalgo

    Verify a claim before stating it, and verify a test before trusting it.

    2.8k GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Version Bump

    marketcalls/openalgo

    Bump a version in the OpenAlgo repo. An agent skill from marketcalls/openalgo.

    2.8k GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Broker Integration

What does Broker Integration do?

Integrate a new Indian broker into OpenAlgo, or modify an existing broker plugin. Broker Integration is an agent skill from marketcalls/openalgo. Integrate a new Indian broker into OpenAlgo, or modify an existing broker plugin.

When should I use Broker Integration?

Broker Integration fits situations like: wiring up a brokers auth/login; webSocket streaming; A broker does not appear in the login dropdown; debugging broker-specific symbol.

How do I install Broker Integration in Claude Code?

Run `npx skills add marketcalls/openalgo --skill broker-integration -a claude-code`. Or copy the skill folder (.claude/skills/broker-integration in marketcalls/openalgo) into .claude/skills/broker-integration in your project. Claude Code loads it when a task matches its description.

How do I install Broker Integration in Codex?

Run `npx skills add marketcalls/openalgo --skill broker-integration -a codex`. Or copy the skill folder (.claude/skills/broker-integration in marketcalls/openalgo) into .agents/skills/broker-integration in your project. Codex loads it when a task matches its description.

Can I use Broker Integration in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add marketcalls/openalgo --skill broker-integration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/broker-integration, .gemini/skills/broker-integration, .github/skills/broker-integration and .opencode/skills/broker-integration in your project.

What does Broker Integration need to run?

Going by SKILL.md and its folder, Broker Integration needs the command-line tools its instructions call (pip). Our summary lists: Python 3.

Does Broker Integration access the network?

SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Broker Integration safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Broker Integration use?

Broker Integration is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Broker Integration use?

About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 21k tokens, read only when the agent opens those files.

What are the alternatives to Broker Integration?

Skills that share tags, products or a category with Broker Integration: Web3 Polymarket (Polymarket/agent-skills, 192 stars), Cryptofeed (2025Emma/vibe-coding-cn, 23k stars), Tiger Brokers C++ OpenAPI SDK (qusong0627/QuantMind, 1.7k stars) and Polymarket (2025Emma/vibe-coding-cn, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Broker Integration?

marketcalls (a GitHub user) maintains it in marketcalls/openalgo, which has 2,817 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 9, 2026.

Source: marketcalls/openalgo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.