Web3 Polymarket
Polymarket/agent-skills
Polymarket integration for prediction market trading on Polygon.
Integrate a new Indian broker into OpenAlgo, or modify an existing broker plugin.
$ npx skills add marketcalls/openalgo --skill broker-integration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install marketcalls/openalgo broker-integration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "broker-integration" agent skill from https://github.com/marketcalls/openalgo/tree/main/.claude/skills/broker-integration into .claude/skills/broker-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "broker-integration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/marketcalls/openalgo/tree/main/.claude/skills/broker-integrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add marketcalls/openalgo --skill broker-integration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install marketcalls/openalgo broker-integration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marketcalls/openalgo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/broker-integration .agents/skills/broker-integration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "broker-integration" agent skill from https://github.com/marketcalls/openalgo/tree/main/.claude/skills/broker-integration into .agents/skills/broker-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "broker-integration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add marketcalls/openalgo --skill broker-integration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install marketcalls/openalgo broker-integration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marketcalls/openalgo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/broker-integration .cursor/skills/broker-integration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "broker-integration" agent skill from https://github.com/marketcalls/openalgo/tree/main/.claude/skills/broker-integration into .cursor/skills/broker-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "broker-integration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/marketcalls/openalgo.git --path .claude/skills/broker-integration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add marketcalls/openalgo --skill broker-integration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install marketcalls/openalgo broker-integration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marketcalls/openalgo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/broker-integration .gemini/skills/broker-integration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "broker-integration" agent skill from https://github.com/marketcalls/openalgo/tree/main/.claude/skills/broker-integration into .gemini/skills/broker-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "broker-integration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install marketcalls/openalgo broker-integrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add marketcalls/openalgo --skill broker-integration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/marketcalls/openalgo.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/broker-integration .github/skills/broker-integration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "broker-integration" agent skill from https://github.com/marketcalls/openalgo/tree/main/.claude/skills/broker-integration into .github/skills/broker-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "broker-integration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add marketcalls/openalgo --skill broker-integration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install marketcalls/openalgo broker-integration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marketcalls/openalgo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/broker-integration .opencode/skills/broker-integration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "broker-integration" agent skill from https://github.com/marketcalls/openalgo/tree/main/.claude/skills/broker-integration into .opencode/skills/broker-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "broker-integration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
broker-integrationIntegrate 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. 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.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 12e1114. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
pipFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
| 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.
The full file from marketcalls/openalgo at commit 12e1114, republished under its AGPL-3.0 licence (© marketcalls). 1,846 words, ~4,691 tokens.
.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.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.
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:
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.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.This is the highest-leverage decision. Indian brokers cluster into four auth families, and picking the right template saves days:
| Family | Members already in the tree | Auth shape | Copy |
|---|---|---|---|
| OAuth2 / checksum redirect | zerodha, upstox, fyers, dhan, arrow, groww, paytm, aliceblue, definedge | Redirect to broker, get request_token/code back on callback, exchange it (often SHA256 checksum of api_key + token + secret) | broker/zerodha/ |
| Noren / Finvasia | shoonya, flattrade, tradesmart, zebu, ibulls, wisdom | Shared upstream codebase. Near-identical endpoints, jData=/jKey= form bodies, susurl/scrip-master CSVs per exchange | broker/shoonya/ or broker/flattrade/ |
| Symphony XTS | fivepaisaxts, jainamxts, compositedge, rmoney, iiflcapital | Dual credentials: interactive + market-data. BROKER_API_KEY_MARKET / _SECRET_MARKET | broker/fivepaisaxts/ |
| Direct login + TOTP | angel, mstock, motilal, kotak, firstock, samco, nubra, tradejini, fivepaisa | User submits clientcode/password/TOTP in a form; no redirect | broker/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.
These define the format you must conform to. Do not infer them from a reference broker's code — read the specs:
| Topic | File |
|---|---|
| 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 conventions | docs/prompt/LotSize.md |
| Common API request/response per endpoint | docs/api/** (esp. account-services/, market-data/, order-management/) |
| WebSocket streaming format | docs/prompt/websockets-format.md, docs/api/websocket-streaming/* |
| Services layer contract | docs/prompt/services_documentation.md |
| Rate limits | docs/api/rate-limiting.md |
| Long-form integration notes | docs/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.
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/.
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:
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 parsersFor 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.
Services do importlib.import_module(f"broker.{broker}.api.<module>") and call
fixed names — these ARE the contract. Verified against services/*.py:
| Service | Module | Function | Returns |
|---|---|---|---|
| login | api.auth_api | authenticate_broker(...) | (auth_token, error) — arity varies, see below |
| place | api.order_api | place_order_api(data, auth) | (response, response_data, orderid); response.status == 200 = success |
| smart | api.order_api | place_smartorder_api(data, auth) | same shape |
| modify | api.order_api | modify_order(data, auth) | (dict, status_code) |
| cancel | api.order_api | cancel_order(orderid, auth) | (dict, status_code) |
| cancel all | api.order_api | cancel_all_orders_api(data, auth) | (canceled[], failed[]) |
| close | api.order_api | close_all_positions(api_key, auth) | (dict, status_code) |
| orderbook | api.order_api + mapping.order_data | get_order_book(auth); map_order_data, calculate_order_statistics, transform_order_data | raw -> normalized |
| tradebook | api.order_api + mapping.order_data | get_trade_book(auth); map_trade_data, transform_tradebook_data | |
| positions | api.order_api + mapping.order_data | get_positions(auth); map_position_data, transform_positions_data | |
| holdings | api.order_api + mapping.order_data | get_holdings(auth); map_portfolio_data, calculate_portfolio_statistics, transform_holdings_data | |
| (internal) | api.order_api | get_open_position(symbol, exchange, product, auth) | net qty as str (used by smart order) |
| funds | api.funds | get_margin_data(auth) | dict |
| quotes | api.data | BrokerData(auth).get_quotes(symbol, exchange) | dict |
| depth | api.data | BrokerData(auth).get_depth(symbol, exchange) | dict (5 levels) |
| history | api.data | BrokerData(auth).get_history(symbol, exchange, interval, start, end) | pandas DataFrame |
| multiquotes | api.data | BrokerData(auth).get_multiquotes(symbols) | list — optional, see below |
| intervals | api.data | BrokerData(auth).timeframe_map (attribute) | dict |
| master | database.master_contract_db | master_contract_download() | emits socketio event |
| margin | api.margin_api | calculate_margin_api(positions, auth) | (response, data); data.data = {total_margin_required, span_margin, exposure_margin} (+ optional total_charges) |
| GTT | api.gtt_api | place_gtt_order, modify_gtt_order, cancel_gtt_order, get_gtt_book | optional — 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.
BrokerData.__init__ arity is introspected, not fixedservices/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.
get_multiquotes is optional and silently degradesThe 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.
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).
Import from database.token_db (re-exported from token_db_enhanced) — never
hand-roll symbol lookups:
| Helper | Direction |
|---|---|
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 |
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 registriesplugin.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).
utils/ a broker plugin depends onNever 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:
| Module | Uses | What you must take from it |
|---|---|---|
utils.logging | ~361 | logger = 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 | ~197 | get_httpx_client() — the shared pooled HTTP/2 client. Never construct a per-call client. Always pass an explicit timeout=. |
utils.mpp_slab | ~18 | Market Price Protection slabs for emulating MARKET/SL-M. See references/order-type-emulation.md. |
utils.config | ~5 | get_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.constants | 2 | EXCHANGE_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.
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.
utils/httpx_client.get_httpx_client() — a shared pooled
HTTP/2 client. NEVER httpx.Client() / requests / urllib / aiohttp per call.timeout=
for large/slow calls (e.g. the instrument-master download).database.engine_factory.create_db_engine() (NullPool).with db_session() as session: for reads; db_session.remove() in a
finally for background-thread work.fd-audit skill on your change.| Phase | Read |
|---|---|
| Calibration: batch caps, rate limits, depth, capability gaps | references/cross-broker-reference.md |
Auth, login callback, .env + install wiring | references/auth-and-login.md |
Instrument master, SymToken, symbol construction | references/master-contract.md |
| Quotes / depth + account-data normalization | references/data-and-account.md |
| Historical data — timestamps, chunking, boundaries | references/history-data.md |
| Rate limiting — pacing strategy, 429 handling | references/rate-limiting.md |
| MARKET / SL-M emulation when the broker lacks them | references/order-type-emulation.md |
| Market-data WebSocket adapter, binary parsing, ZMQ | references/streaming.md |
| Account-level order/trade update stream | references/order-updates.md |
| Live-hardening pass, verification, cheat-sheet | references/hardening-and-verification.md |
symtoken, download the broker SDK.plugin.json + api/auth_api.py — get login working end-to-end first. Nothing else can be tested until a token is stored.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.database/master_contract_db.py — symbols must exist before quotes/orders can be tested. Validate offline against the live symtoken reference.mapping/ + api/data.py — quotes, depth, history.api/order_api.py + mapping/order_data.py — orders and books.api/funds.py, api/margin_api.py — funds and margin.streaming/ — market data first (the hardest part), then the optional order-update adapter.references/hardening-and-verification.md. Budget real time for this; it is where the actual bugs are.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
SKILL.md and 10 other files (references) in .claude/skills/broker-integration of marketcalls/openalgo.
Open the folder on GitHubat commit 12e1114
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Broker Integration this skillmarketcalls/openalgo | 2.8k | — | ~4.7k | Automated safety check: Notes | AGPL-3.0 | |
| Web3 PolymarketPolymarket/agent-skills | 192 | 1 repos | ~2k | Automated safety check: Pass | None | |
| Cryptofeed2025Emma/vibe-coding-cn | 23k | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Tiger Brokers C++ OpenAPI SDKqusong0627/QuantMind | 1.7k | — | ~942 | Automated safety check: Pass | Apache-2.0 | |
| Polymarket2025Emma/vibe-coding-cn | 23k | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Openalgo Chart Terminalmarketcalls/openalgo-charts | 146 | — | ~3.8k | Automated safety check: Notes | Apache-2.0 |
Polymarket/agent-skills
Polymarket integration for prediction market trading on Polygon.
2025Emma/vibe-coding-cn
Cryptofeed - Real-time cryptocurrency market data feeds from 40+ exchanges.
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.
2025Emma/vibe-coding-cn
Comprehensive Polymarket skill covering prediction markets, API, trading, market data, and real-time WebSocket data streaming.
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…
sendaifun/skills
Complete DFlow trading protocol SDK - the single source of truth for integrating DFlow on Solana.
marketcalls/openalgo
Audit a change for resource leaks in OpenAlgo — file descriptors AND unbounded memory growth.
marketcalls/openalgo
Build, edit or debug an OpenAlgo Flow workflow - the no-code node graph at /flow.
marketcalls/openalgo
Write an OpenScript study or strategy for OpenAlgo, and install it into strategies/openscript/ only after it compiles.
marketcalls/openalgo
Run OpenAlgo's periodic security audit across backend, frontend, database, cache, routes and dependencies, producing a dated xlsx report.
marketcalls/openalgo
Verify a claim before stating it, and verify a test before trusting it.
marketcalls/openalgo
Bump a version in the OpenAlgo repo. An agent skill from marketcalls/openalgo.
Categories
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.
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.
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.
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.
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.
Going by SKILL.md and its folder, Broker Integration needs the command-line tools its instructions call (pip). Our summary lists: Python 3.
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.
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.
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.
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.
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.
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.