angelone-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANGELONE_PIN | Yes | Your login PIN | |
| ANGELONE_API_KEY | Yes | API key from your SmartAPI app | |
| ANGELONE_NO_PROXY | No | Optional comma-separated list of hosts to bypass the proxy for | |
| ANGELONE_HTTP_PROXY | No | Proxy URL used for http:// requests, e.g. http://user:pass@proxyhost:8080 | |
| ANGELONE_CLIENT_CODE | Yes | Your Angel One client/trading account code | |
| ANGELONE_HTTPS_PROXY | No | Proxy URL used for https:// requests (this is the one that matters — SmartAPI is https-only). Falls back to ANGELONE_HTTP_PROXY if unset. | |
| ANGELONE_TOTP_SECRET | Yes | Base32 TOTP secret for your account | |
| ANGELONE_SESSION_FILE | No | Override the file path used to persist the session. Default: a file under the OS temp directory, named from a hash of your client code (so multiple accounts on the same machine don't collide) | |
| ANGELONE_SESSION_PERSIST | No | Set to false/0/no/off to disable session persistence entirely (default: enabled) | |
| ANGELONE_RATE_LIMIT_DISABLED | No | Set to true/1/yes/on to disable proactive pacing (default: enabled) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| loginA | Explicitly (re)authenticate with Angel One using the configured client code, PIN, and TOTP secret. Normally not needed - the client logs in automatically on first use - but useful to force a fresh session or verify credentials are configured correctly. |
| logoutA | Terminate the current Angel One trading session. |
| get_profileA | Get the logged-in user's profile: client code, name, email, exchanges enabled, products enabled, and broker. |
| place_orderB | Place an order. variety: NORMAL | STOPLOSS | AMO | ROBO transactiontype: BUY | SELL exchange: NSE | BSE | NFO | MCX | BFO | CDS ordertype: MARKET | LIMIT | STOPLOSS_LIMIT | STOPLOSS_MARKET producttype: DELIVERY | CARRYFORWARD | MARGIN | INTRADAY | BO duration: DAY | IOC price/triggerprice: required for LIMIT/STOPLOSS order types (as strings, e.g. "199.50") squareoff/stoploss/trailingStopLoss: only used when variety=ROBO (bracket order) |
| modify_orderA | Modify an existing open order. All identifying fields (tradingsymbol, symboltoken, exchange) must match the original order. |
| cancel_orderA | Cancel an open order by its order id. variety: NORMAL | STOPLOSS | AMO | ROBO |
| get_order_bookA | Get all orders placed today, with their current status. |
| get_trade_bookB | Get all executed trades for the day. |
| get_individual_order_detailsA | Get full lifecycle detail/history for a single order by its unique order id. |
| get_positionsA | Get the day's open and net positions (intraday + carryforward). |
| get_holdingsB | Get the equity holdings currently in the demat account. |
| get_all_holdingsA | Get holdings plus a portfolio-level summary (total investment, current value, P&L). |
| get_rms_limitB | Get available margin / funds (RMS limits): net cash, available margin, utilised margin, etc. |
| convert_positionB | Convert a position from one product type to another (e.g. INTRADAY -> DELIVERY). |
| gtt_create_ruleA | Create a GTT (Good Till Triggered) rule that auto-places an order when the trigger price is hit. |
| gtt_modify_ruleC | Modify an existing GTT rule. |
| gtt_cancel_ruleB | Cancel a GTT rule by its id. |
| gtt_detailsB | Get details of a single GTT rule by id. |
| gtt_listB | List GTT rules. status is a list of any of: NEW, CANCELLED, ACTIVE, SENTTOEXCHANGE, FORALL, REJECTED, EXPIRED, DELETED. |
| get_ltpB | Get the last traded price (LTP) for a single instrument. |
| get_market_quoteA | Get market quotes for up to 50 instruments per exchange in one call. mode: LTP | OHLC | FULL exchange_tokens: e.g. {"NSE": ["3045", "881"], "NFO": ["58662"]} - a map of exchange -> list of symbol tokens. |
| search_scripA | Search for the tradingsymbol and symboltoken of an instrument by name, e.g. exchange='NSE', searchscrip='INFY'. Use this to resolve symboltoken before placing orders or requesting quotes. |
| get_candle_dataB | Get historical OHLCV candle data. interval: ONE_MINUTE | THREE_MINUTE | FIVE_MINUTE | TEN_MINUTE | FIFTEEN_MINUTE | THIRTY_MINUTE | ONE_HOUR | ONE_DAY fromdate/todate format: "YYYY-MM-DD HH:MM" (e.g. "2024-01-01 09:15") |
| get_oi_dataB | Get historical open-interest (OI) data for F&O instruments. Same interval/date format as get_candle_data. |
| get_option_greeksA | Get option greeks (delta, gamma, theta, vega, IV) for all strikes of an underlying. name: e.g. 'NIFTY'. expirydate format: '25MAR2024'. |
| get_gainers_losersB | Get top F&O gainers/losers. datatype: PercPriceGainers | PercPriceLosers | PercOIGainers | PercOILosers expirytype: NEAR | NEXT | FAR |
| get_put_call_ratioA | Get the current put-call ratio (PCR) across index/stock option contracts. |
| get_oi_buildupB | Get open-interest buildup data (long/short buildup, unwinding, etc.) for F&O contracts. datatype: Long Built Up | Short Built Up | Short Covering | Long Unwinding expirytype: NEAR | NEXT | FAR |
| get_nse_intraday_dataA | Get NSE intraday most-active-by-volume/value data. |
| get_bse_intraday_dataA | Get BSE intraday most-active-by-volume/value data. |
| get_marginA | Calculate span + exposure margin required for a basket of positions before placing them. Each position dict needs: exchange, qty, price, productType, token, tradeType (BUY/SELL), orderType. |
| estimate_chargesA | Estimate brokerage and other charges for a basket of prospective orders. Each order dict needs: product_type, transaction_type, quantity, price, exchange, symbol_name, token. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 32 tools
Most tools target distinct actions and resources—orders, positions, holdings, GTT rules, market data, and analytics are clearly separated. Minor overlap exists between get_holdings and get_all_holdings, and between get_ltp and get_market_quote, but descriptions clarify their scope.
The naming mostly follows a clear verb_noun snake_case pattern, such as place_order, cancel_order, get_positions, and search_scrip. The gtt_* tools deviate by leading with the domain prefix instead of the verb, and a few names like get_all_holdings vs get_holdings are slightly inconsistent, but overall the pattern is predictable.
With 32 tools, the surface feels heavy and exceeds the 25-tool threshold that typically signals over-expansion. Many market-data and analytics tools could be consolidated or grouped, though the breadth is understandable for a full brokerage API.
The tool surface covers the core brokerage lifecycle well: authentication, order placement/modification/cancellation, order and trade books, positions, holdings, GTT rules, margin checks, and charge estimation. Some gaps exist such as historical order history or bulk order capabilities, but agents can accomplish most common trading workflows without dead ends.