Skip to main content
Glama
aranjan

kite-mcp

by aranjan

MCP server for Zerodha Kite -- trade Indian stocks through natural conversation with any MCP-compatible AI assistant.

Why an MCP server instead of a Python library?

Traditional Kite wrappers require you to write Python code to trade. With kite-mcp, you just talk:

You:       "Buy 50 Reliance at market price"
Assistant: checks quote, verifies funds, asks for confirmation, places order

You:       "How's my portfolio doing?"
Assistant: fetches holdings, calculates P&L, summarizes gainers and losers

You:       "Set a stop-loss on my HAL position at 3400"
Assistant: places a GTT trigger for you

No code. No scripts. No terminal. Just conversation.

kite-mcp connects any MCP-compatible AI assistant directly to your Zerodha account with 14 trading tools, automated TOTP login, and auto-retry on expired tokens.

Related MCP server: Zerodha MCP Server

How it works

You (natural language) --> AI Assistant --> kite-mcp (MCP server) --> Zerodha Kite API

Your AI assistant interprets your intent, maps stock names to symbols (e.g., "Infosys" to NSE:INFY), checks your funds, and executes trades -- all through the MCP protocol. The server handles authentication automatically, including daily token refresh via TOTP.

Features

14 tools for complete trading control:

Tool

Description

kite_login

Auto-authenticate with TOTP

get_holdings

Portfolio holdings with P&L

get_positions

Today's intraday/delivery positions

get_orders

Today's order history

get_margins

Available funds and margins

get_quote

Live market quotes

get_ohlc

Open, high, low, close data

get_historical_data

Historical candle data (minute to daily)

get_instruments

Search tradeable instruments across NSE, BSE, NFO, MCX

place_order

Place buy/sell orders (market, limit, stop-loss)

modify_order

Modify pending orders

cancel_order

Cancel pending orders

get_gtt_triggers

View Good Till Triggered orders

place_gtt

Place GTT single or OCO (stoploss + target) triggers

Key capabilities:

  • Fully automated login -- TOTP generated on the fly, no manual intervention

  • Auto-retry on stale tokens -- re-authenticates transparently if a token expires mid-session

  • Supports delivery (CNC), intraday (MIS), and F&O (NRML) orders

  • After-market orders (AMO) supported

Compatible with

Works with any MCP-compatible client, including:

Client

Platform

Claude Desktop

macOS, Windows

Claude Code

Terminal (macOS, Linux, Windows)

Cursor

macOS, Windows, Linux

Windsurf

macOS, Windows, Linux

Continue

VS Code, JetBrains

Any MCP-compatible client

See MCP clients list

Quick Start

1. Install

pip install kite-mcp

2. Get your credentials

You need a Kite Connect API app. From your app dashboard, note your API Key and API Secret.

You also need:

  • User ID -- your Zerodha client ID (e.g., AB1234)

  • Password -- your Zerodha login password

  • TOTP Secret (recommended) -- the base32 seed from setting up an external authenticator app for Zerodha 2FA. This enables fully automated login with no manual steps.

  1. Log in to console.zerodha.com

  2. Go to My Profile > Security > 2FA Settings

  3. Switch to an external authenticator app (Google Authenticator, Authy, etc.)

  4. When the QR code appears, look for a "Can't scan? Copy this key" link

  5. That key is your TOTP secret -- save it before completing setup

  6. Enter the 6-digit code from your authenticator to finish

3. Configure your MCP client

Add this to your MCP client configuration. The config location depends on your client -- refer to your client's documentation for the exact path.

{
  "mcpServers": {
    "kite": {
      "command": "kite-mcp",
      "env": {
        "KITE_API_KEY": "your-api-key",
        "KITE_API_SECRET": "your-api-secret",
        "KITE_USER_ID": "your-user-id",
        "KITE_PASSWORD": "your-password",
        "KITE_TOTP_SECRET": "your-totp-secret"
      }
    }
  }
}

Restart your MCP client. You're ready to trade.

4. Try it out

Open a new chat and try:

  • "Show my portfolio holdings"

  • "What's Tata Motors trading at?"

  • "Buy 10 Infosys at market price"

  • "How much cash do I have available?"

  • "Cancel my last pending order"

  • "Show my top gainers and losers"

The AI assistant understands stock names in plain English -- no need to use trading symbols.

Environment Variables

Variable

Required

Description

KITE_API_KEY

Yes

Kite Connect API key

KITE_API_SECRET

Yes

Kite Connect API secret

KITE_USER_ID

Yes

Zerodha client ID

KITE_PASSWORD

Yes

Zerodha login password

KITE_TOTP_SECRET

No

TOTP base32 seed for auto-login. Without this, you must run kite-mcp-login manually each day.

Manual Login

If you don't have a TOTP secret, you can log in manually each day:

export KITE_API_KEY=your-api-key
export KITE_API_SECRET=your-api-secret
export KITE_USER_ID=your-user-id
export KITE_PASSWORD=your-password
kite-mcp-login

This caches the access token for the rest of the day. The MCP server will use the cached token until it expires.

Use Cases

  • Daily portfolio monitoring -- "Give me a summary of my portfolio with top gainers and losers"

  • Quick trades -- "Buy 50 Reliance" / "Sell all my Yes Bank"

  • Research + action -- "What's the 52-week high of HDFC Bank? Should I add more at current levels?"

  • Risk management -- "Set a stop-loss GTT on my BDL position at 1100"

  • Scheduled reports -- Combine with MCP scheduled tasks to get a daily portfolio summary at 9am

  • Slack integration -- Pair with Slack MCP to receive portfolio alerts in your Slack channel

Roadmap

  • Option chain data for F&O traders

  • Basket orders -- place multiple orders in one command

  • Mutual fund tools -- buy, redeem, check SIPs

  • Watchlist management

  • Portfolio analytics -- sector allocation, diversification score

  • Webhook/streaming support for real-time price alerts

  • Support for multiple Zerodha accounts

Have an idea? Open a feature request.

Development

git clone https://github.com/aranjan/kite-mcp.git
cd kite-mcp
python -m venv venv
source venv/bin/activate
pip install -e .

Security

  • Credentials are passed via environment variables -- never stored in code

  • Access tokens are cached locally at ~/.zerodha_kite_token.json and expire daily

  • The server runs locally on your machine -- no data is sent to third-party servers

  • All communication with Zerodha uses HTTPS

License

MIT

Available Tools

14 tools
cancel_orderC
Destructive

Cancel a pending order.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes
varietyNoregular

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true and readOnlyHint=false. Description adds no extra behavioral context beyond stating the cancel action. No mention of permissions, reversibility, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise, one sentence. Front-loaded with purpose. Could be expanded slightly without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description lacks context on error conditions, success behavior, or prerequisites for a destructive action. Incomplete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%; description provides no explanation for order_id (required) or variety (optional with default). Agent gets no help understanding parameter roles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (cancel) and the resource (pending order). It distinguishes from sibling tools like 'place_order' or 'modify_order', though it doesn't specify outcomes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for pending orders only, but no explicit guidance on when to use vs. alternatives or prerequisites. Agent must infer from name and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_gtt_triggersA
Read-only

Get all active GTT (Good Till Triggered) triggers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and non-destructive behavior. The description adds no extra behavioral details (e.g., pagination, expiration rules) beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no filler. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, annotations present, and an output schema, the description is minimal but lacks context on what 'active' means or output structure. Adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has zero parameters, so schema coverage is 100%. The description correctly adds no parameter info, as none exist. Baseline for 0 parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves all active GTT triggers, using a specific verb ('Get') and resource. It distinguishes itself from siblings like 'place_gtt' and 'cancel_order' by focusing on retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. With siblings like 'place_gtt' and 'cancel_order', explicit context for selecting this tool over others is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_historical_dataB
Read-only

Get historical candle data for an instrument. Interval can be: minute, day, 3minute, 5minute, 10minute, 15minute, 30minute, 60minute.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_tokenYes
from_dateYes
to_dateYes
intervalYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe, read-only nature is clear. The description adds the list of intervals, which is useful behavior context beyond annotations. However, it does not disclose other traits like data limits, response structure, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, no redundant phrases. It front-loads the core purpose and includes essential interval information. Could be slightly more structured (e.g., bullet points) but is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given four required parameters with no schema descriptions, the description is incomplete. It fails to specify date formats, token sourcing, or response expectations. The presence of an output schema reduces the need to explain return values, but parameter guidance is critically absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate. It only adds meaning for the 'interval' parameter by listing valid values. It does not explain the format for 'from_date' and 'to_date' (e.g., ISO date strings) or how to obtain 'instrument_token'. This leaves three out of four parameters poorly defined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves historical candle data for an instrument, specifying the verb 'Get' and the resource 'historical candle data'. It lists the valid intervals, which distinguishes it from sibling tools like get_quote (current price) and get_ohlc (OHLC snapshot). The scope is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for historical data retrieval but does not provide explicit guidance on when to use this tool versus alternatives (e.g., get_quote or get_ohlc). It lacks context on prerequisites, limitations, or time ranges. No exclusions or alternative suggestions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_holdingsA
Read-only

Get all holdings in the portfolio with quantity, average price, last price, and P&L.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint true and destructiveHint false. Description adds context on returned fields (quantity, avg price, last price, P&L). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words, front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists to define return values; description lists key fields. Adequate for a no-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in input schema; description need not add param info. Baseline 4 for 0-param tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb ('Get'), specific resource ('holdings'), and explicit fields (quantity, average price, last price, P&L). Distinct from sibling tools like get_orders, get_positions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies retrieving all holdings, but no explicit when-to-use or when-not, nor alternatives listed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_instrumentsA
Read-only

Get list of tradeable instruments for an exchange. Use to find instrument_token for historical data. Exchange: NSE, BSE, NFO, BFO, CDS, MCX.

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYes
searchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read operation. The description adds that the tool lists tradeable instruments and valid exchanges, but no further behavioral details like pagination, rate limits, or response structure are provided. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with two sentences and a list, front-loaded with the purpose. Every sentence serves a clear function without verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (2 params, 1 required) and existing output schema (not shown), the description covers the basic purpose and usage. However, it lacks details on error handling, the meaning of the search parameter, or potential limitations, making it adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning for the 'exchange' parameter by listing valid values ('NSE, BSE, NFO, BFO, CDS, MCX'), but the 'search' parameter is left completely undocumented. This partial coverage earns a middle score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get list of tradeable instruments for an exchange' and its use case 'to find instrument_token for historical data.' It distinguishes itself from sibling tools like get_historical_data or get_quote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It specifies when to use the tool: 'Use to find instrument_token for historical data.' While it provides context, it does not explicitly mention when not to use or mention alternatives, leaving some room for improvement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_marginsA
Read-only

Get account margins/funds available for trading (equity and commodity segments).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds that it returns available margins/funds and specifies segments, which provides some behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the key action and scope. No unnecessary words. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and presence of output schema, the description is complete. It adequately describes a simple read operation with no additional context needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is 100%. Description does not need to add parameter details. Baseline for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it retrieves account margins/funds for trading, specifying equity and commodity segments. It uses a specific verb and resource, but does not explicitly distinguish from sibling tools like get_holdings or get_positions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Given the presence of many sibling tools (e.g., get_holdings, get_orders, get_positions), description lacks context on selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ohlcA
Read-only

Get OHLC (open, high, low, close) and last price for instruments. Falls back to holdings/positions data if the market data API is not available.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrumentsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint true and destructiveHint false. The description adds significant behavioral context by disclosing the fallback to holdings/positions data when the market data API is unavailable, which is valuable for agent decision-making.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose, no wasted words. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple read tool with good annotations and an output schema (exists but not shown). However, it omits prerequisites like authentication (requires a login session) and the expected format of instrument identifiers, leaving gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The 'instruments' parameter has no description in the schema (0% coverage) and the tool description does not explain its format or valid values. The agent must infer that instruments are likely identifiers, which is insufficient for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves OHLC and last price for instruments, distinguishing it from siblings like get_quote (current price) and get_historical_data (historical data) by specifying the data type and fallback behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for getting OHLC data but does not explicitly guide when to use this tool over alternatives like get_quote or get_historical_data. The fallback mention is behavioral, not a usage guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ordersA
Read-only

Get all orders placed today.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds the temporal constraint 'today' but omits details like timezone, pagination, or scope limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, concise sentence with no extraneous words; efficiently communicates the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Has output schema and annotations covering safety, but lacks specification of timezone for 'today', order status, or user-specific scoping; adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; description adds no parameter info, but with 0 parameters and 100% schema coverage, the baseline score of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Get', the resource 'orders', and the filter 'placed today', distinguishing it from sibling tools like get_holdings or get_positions by time scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like get_historical_data or get_quote; lacks context for when not to use or related prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_positionsA
Read-only

Get current day's positions (both day and net).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that it returns current day's positions including day and net, but lacks further behavioral details like data freshness or response structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence with no superfluous words. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and an output schema, the description adequately specifies what is returned. However, it could mention that positions are for the current trading day or include a note about when data is updated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%. The description does not need to add param info; baseline is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('current day's positions'), and specifies the scope ('both day and net'), which distinguishes it from sibling tools like get_holdings or get_orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool instead of alternatives (e.g., get_holdings for overall portfolio, get_orders for trade history). The agent must infer context from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_quoteA
Read-only

Get live market quote for one or more instruments. Use NSE: prefix for stocks (e.g., NSE:RELIANCE, NSE:INFY). Falls back to holdings/positions data if the market data API is not available.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrumentsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond annotations by disclosing the fallback behavior to holdings/positions data when the market API is unavailable. No contradiction with annotations (readOnlyHint true).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states the core purpose, second adds usage prefix and fallback behavior. No wasted words; front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers key behavioral aspects and input requirements. Output schema likely explains return values. Lacks mention of performance constraints or count limits for multiple instruments, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0% description coverage, but the description compensates by explaining the NSE: prefix usage and implying that instruments are market symbols, providing crucial semantic context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves live market quotes, specifies the verb (get) and resource (live market quote), and distinguishes from sibling tools like get_historical_data and get_ohlc by focusing on real-time data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage context by explaining the NSE: prefix convention for stocks and mentions a fallback behavior, but it does not explicitly compare with sibling tools or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kite_loginA

Authenticate with Zerodha Kite. Auto-generates TOTP and logs in. Call this if other tools fail with auth errors.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false (readOnlyHint, destructiveHint), but the description adds value by revealing side effects like auto-generating TOTP and logging in. It does not disclose failure behaviors or session lifespan, but with minimal annotation help, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no fluff. The key action is front-loaded ('Authenticate with Zerodha Kite'). Every sentence is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is an authenticator with zero parameters and a clear use case (auth errors), the description covers the main points. It could mention that it should be called once at session start, but with the output schema existing (not needing return value clarification), it's nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has zero parameters and 100% coverage (no undocumented params). The description adds 'auto-generates TOTP' which is not a parameter detail but behavioral. Baseline for high schema coverage is 3, and description doesn't add parameter-specific meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool authenticates with Zerodha Kite, using specific verbs like 'Authenticate' and 'logs in'. It distinguishes itself from sibling tools (e.g., trade/order tools) by being an auth tool. No ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Call this if other tools fail with auth errors', providing a clear use case. However, it doesn't mention when not to use it (e.g., if already authenticated) or any prerequisites, leaving slight room for improvement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

modify_orderC

Modify a pending order.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes
quantityNo
priceNo
order_typeNo
trigger_priceNo
varietyNoregular

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is not read-only and not destructive (modification). Description merely restates the action without adding behavioral details like side effects or constraints. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise (3 words) but at the cost of informativeness. Would benefit from more detail while remaining efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema and 6 parameters, the description is nearly empty. Lacks essential context about required inputs, optional fields, and behavioral impact. Highly incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, and the description provides no explanation of any parameters. The agent gets no help understanding what 'order_id', 'quantity', 'price', etc., mean or how to use them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (modify) and the resource (pending order). It distinguishes from sibling tools like cancel_order and place_order, but lacks explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites mentioned (e.g., order must be pending), and no context about when modification is allowed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place_gttC

Place a GTT (Good Till Triggered) order. Supports single and two-leg (OCO) triggers.

ParametersJSON Schema
NameRequiredDescriptionDefault
trigger_typeYes
tradingsymbolYes
exchangeYes
trigger_valuesYes
last_priceYes
ordersYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate it is a write operation (readOnlyHint=false), but the description adds only minimal behavioral context (supports single/two-leg). It does not disclose any side effects, error conditions, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but it sacrifices information. It could be expanded without losing conciseness, e.g., by adding brief parameter explanations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 required parameters and no schema descriptions, the description is insufficient. It does not mention any prerequisites, return values (though output schema exists), or usage examples, making it incomplete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description fails to explain any of the 6 required parameters. The mention of 'single and two-leg' hints at trigger_type and orders but does not clarify their meaning or usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool places a GTT order and specifies it supports single and two-leg (OCO) triggers. This distinguishes it from sibling tools like place_order (regular orders) and modify_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like place_order or get_gtt_triggers. There is no mention of prerequisites or context for GTT orders.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place_orderB

Place a buy or sell order. Returns order ID on success. Use variety='regular' for normal orders, 'amo' for after-market orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
tradingsymbolYes
exchangeYes
transaction_typeYes
quantityYes
order_typeYes
productYes
priceNo
trigger_priceNo
varietyNoregular

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate the tool is not read-only or destructive, which aligns with placing an order. The description reveals the return value but does not discuss side effects like reduced buying power, potential order failures, or rate limits. Some behavioral context is missing beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and return value, followed by a targeted usage hint. No unnecessary words; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with 6 required fields, the description is insufficient. It does not cover error conditions, valid values for transaction_type/order_type, or how to handle optional fields like price and trigger_price. The output schema exists but is not leveraged in the description. Sibling tools like modify_order are not acknowledged.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds minimal parameter information beyond the schema. It only clarifies the 'variety' parameter (regular vs. amo). The other eight parameters (tradingsymbol, exchange, etc.) are left unexplained, requiring the agent to infer from names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Place a buy or sell order') and the return value ('Returns order ID on success'). It distinguishes between buy and sell but does not explicitly differentiate from sibling tools like cancel_order or modify_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on using the 'variety' parameter ('use variety='regular' for normal orders, 'amo' for after-market orders'). However, it does not specify when not to use this tool, such as for modifying or cancelling orders, nor does it mention prerequisites like authentication or margin requirements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.1.6
    • First observedcancel_order
    • First observedget_gtt_triggers
    • First observedget_historical_data
    • First observedget_holdings
    • First observedget_instruments
    • First observedget_margins
    • First observedget_ohlc
    • First observedget_orders
    • First observedget_positions
    • First observedget_quote
    • First observedkite_login
    • First observedmodify_order
    • First observedplace_gtt
    • First observedplace_order

TDQS

A3.6/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct action or data type (orders, holdings, quotes, etc.). The few tools with overlapping data (get_quote vs get_ohlc) have clear differences in what they return and when to use them, preventing confusion.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., cancel_order, get_holdings, place_gtt). Even kite_login uses the same convention with a prefix, maintaining uniformity.

Tool Count5/5

With 14 tools, the server covers the essential operations for a trading platform without being overwhelming. Each tool serves a clear purpose and contributes to a complete workflow.

Completeness4/5

Covers core trading lifecycle: authentication, order placement (regular, GTT, AMO), modification, cancellation, and retrieval of orders, positions, holdings, and market data. Minor gaps like missing bracket orders or trade history, but the surface is robust for typical use.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with the Zerodha trading platform for placing stock orders, viewing portfolio holdings, and managing mutual fund investments. Provides secure OAuth authentication and real-time trading capabilities through Zerodha's official API.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables trading operations on Zerodha platform through natural language, supporting account management, order placement/modification, portfolio holdings, positions, margins, and stock news retrieval.
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    Enables trading and portfolio management on Zerodha Kite Connect through natural language. Supports placing orders, viewing positions/holdings, accessing real-time market data, and managing GTT orders.
    24
    MIT