turtlestack-lite
OfficialAllows deployment of the MCP server on Cloudflare Workers for global edge computing, enabling low-latency trading operations.
Provides trading integration with Kite (Zerodha) including order placement, portfolio management, technical analysis with 40+ indicators, and real-time market data.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@turtlestack-liteshow my portfolio across all brokers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ TurtleStack Lite - Multi-Broker Trading MCP Server
๐ Most Advanced Multi-Broker Trading MCP Server for Claude AI - Unified API for Kite (Zerodha), Groww, and Dhan with 40+ Technical Indicators, Real-time Trading, Portfolio Management, and Cloudflare Workers Support.
โจ Features
๐ฏ Multi-Broker Support: Seamlessly trade across Kite (Zerodha), Groww, and Dhan
๐ Advanced Technical Analysis: 40+ indicators including RSI, MACD, Bollinger Bands, VWAP, ATR
๐ Real-time Trading: Live order placement, modification, and cancellation
๐ผ Portfolio Management: Unified portfolio tracking across all brokers
โ๏ธ Cloudflare Workers: Deploy globally with edge computing
๐ค Claude AI Integration: Natural language trading commands
๐ Enterprise Security: No stored credentials, session-based authentication
โก High Performance: Optimized for speed and reliability
๐๏ธ Modular Architecture: Easy to extend and customize
Related MCP server: tradingview-mcp
๐ Quick Start
git clone https://github.com/turtlehq-tech/turtlestack-lite.git
cd turtlestack-lite
npm install
npm startClaude AI Configuration
Add this configuration to your Claude Desktop settings (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"turtlestack-lite": {
"command": "node",
"args": ["/path/to/turtlestack-lite/src/index.js"]
}
}
}Replace /path/to/turtlestack-lite/ with your actual installation path:
# Example paths:
# macOS: "/Users/yourusername/Projects/turtlestack-lite/src/index.js"
# Linux: "/home/yourusername/turtlestack-lite/src/index.js"
# Windows: "C:\\Users\\yourusername\\turtlestack-lite\\src\\index.js"๐ Security Note: No API keys or secrets are stored in the configuration. All credentials must be provided through Claude commands for maximum security.
๐ง Configuration Setup
Important: This repository contains dummy placeholder values for all sensitive IDs and tokens. Before using the project, you must replace these placeholders with your actual credentials.
๐ Required Replacements
The following files contain placeholder values that need to be replaced with your actual credentials:
1. Test Files (for development/testing):
tests/debugAuthentication.js:16,17- ReplaceYOUR_CLIENT_ID_HEREandYOUR_PROGRESS_TOKEN_HEREtests/testClaudeConnection.js:21,22- ReplaceYOUR_CLAUDE_SESSION_TOKEN_HEREandYOUR_CLAUDE_CLIENT_ID_HEREtests/testGrowwOrderFix.js:13- ReplaceYOUR_GROWW_API_KEY_HEREtests/testGrowwOrderReference.js:11- ReplaceYOUR_GROWW_API_KEY_HEREtests/debugAuthentication.js:44- ReplaceYOUR_GROWW_JWT_TOKEN_HEREtests/testClaudeConnection.js:40,52- ReplaceYOUR_GROWW_JWT_TOKEN_HERE
2. Cloudflare Configuration (for Cloudflare Workers deployment):
bridge.js:4- ReplaceYOUR_WORKER_SUBDOMAIN.YOUR_USERNAME.workers.devcloudflare/wrangler.toml:17- ReplaceYOUR_KV_NAMESPACE_ID_HEREcloudflare/mcp-config-for-claude.json:5- Replace worker URL in the embedded command
๐ How to Get Your Credentials
For Kite (Zerodha):
Create an app to get
api_keyandapi_secretGenerate access token using the authentication flow
For Groww:
Use browser developer tools to inspect network requests on Groww web app
Extract JWT token from Authorization header
Token format:
eyJraWQiOiJ...(long JWT string)
For Dhan:
Go to Dhan API Portal
Get your
access_tokenandclient_id
For Cloudflare Workers:
Create KV namespace:
wrangler kv:namespace create "SESSIONS_KV"Note the namespace ID from the output
Update your worker subdomain based on your Cloudflare account
โ ๏ธ Security Best Practices
Never commit real credentials to version control
Use environment variables for production deployments
Rotate tokens regularly for security
Test with dummy data first before using real credentials
๐งช Quick Setup for Testing
Replace these specific placeholders to get started quickly:
# 1. Update test files with your tokens
sed -i 's/YOUR_GROWW_JWT_TOKEN_HERE/your_actual_groww_token/g' tests/testClaudeConnection.js
sed -i 's/YOUR_GROWW_API_KEY_HERE/your_actual_api_key/g' tests/testGroww*.js
# 2. Update Cloudflare config (if using workers)
sed -i 's/YOUR_WORKER_SUBDOMAIN.YOUR_USERNAME.workers.dev/your-worker.your-account.workers.dev/g' bridge.js
sed -i 's/YOUR_KV_NAMESPACE_ID_HERE/your_actual_kv_id/g' cloudflare/wrangler.tomlInstallation
npm installTesting
# Run all tests
npm test
# Run unit tests only
npm run test:unit
# Run integration tests only
npm run test:integration
# Run tests with watch mode
npm run test:watch
# Demo technical indicators
node tests/demo.jsProject Structure
src/
โโโ brokers/
โ โโโ BaseBroker.js # Base interface for all brokers
โ โโโ KiteBroker.js # Kite (Zerodha) implementation
โ โโโ GrowwBroker.js # Groww implementation
โ โโโ DhanBroker.js # Dhan implementation
โ โโโ index.js # Broker exports and factory
โโโ server/
โ โโโ UnifiedTradingServer.js # Main MCP server (v2.0.0)
โโโ utils/
โ โโโ logger.js # Logging utility
โ โโโ formatters.js # Data formatting utilities
โ โโโ technicalIndicators.js # Backward compatibility wrapper
โ โโโ technicalIndicators/ # Modular technical analysis
โ โโโ index.js # Main aggregation file
โ โโโ trendIndicators.js # SMA, EMA, VWAP, ADX, Parabolic SAR
โ โโโ momentumIndicators.js # RSI, MACD, Stochastic, Williams %R, CCI, MFI
โ โโโ volatilityIndicators.js # Bollinger Bands, ATR
โ โโโ volumeIndicators.js # OBV
โ โโโ supportResistanceIndicators.js # Fibonacci, Support/Resistance
โโโ index.js # Entry point
tests/
โโโ unit/
โ โโโ technicalIndicators.test.js # Technical indicators unit tests
โโโ integration/
โ โโโ brokers.test.js # Broker integration tests
โ โโโ unifiedTradingServer.test.js # Server integration tests
โโโ fixtures/
โ โโโ mockData.js # Test data fixtures
โโโ demo.js # Technical indicators demoUsage
Start Unified Trading Server
npm start
# or for development
npm run devFeatures
Multi-Broker Support
โ Kite (Zerodha) - Fully implemented with advanced features
โ Groww - Fully implemented with advanced features
โ Dhan - Fully implemented with advanced features
Architecture Benefits
๐๏ธ Modular Design: Each broker in separate file
๐ Pluggable: Easy to add new brokers
๐งช Testable: Individual components can be tested
๐ Maintainable: Clean separation of concerns
๐ Scalable: Supports unlimited brokers
Key Commands
Broker Management
# List all available brokers
List brokers
# Set active broker
Set active broker to kiteAuthentication (Secure - No Stored Credentials)
# Authenticate Kite with access token
Authenticate kite with api_key: your_api_key and access_token: your_access_token
# Authenticate Kite with request token
Authenticate kite with api_key: your_api_key, api_secret: your_api_secret, and request_token: your_request_token
# Authenticate Groww
Authenticate groww with access_token: your_groww_access_token
# Authenticate Dhan
Authenticate dhan with access_token: your_dhan_access_token and client_id: your_dhan_client_idTrading Operations
# Get portfolio from active broker
Show my portfolio
# Get portfolio from specific broker
Show my groww portfolio
# Compare portfolios across brokers
Compare my portfolios across all brokers
# Place order using active broker
Create buy order for RELIANCE 10 shares at market price
# Get margins
Show my account marginsAdvanced Features
# Get consolidated portfolio across all brokers
Show me my consolidated portfolio across all brokers
# Kite Advanced Features
Get my Kite mutual fund holdings
Place GTT order for RELIANCE
Get historical data for INFY
# Groww Advanced Features
Get technical indicators RSI for RELIANCE
Search for instruments containing "TATA"
Get historical candle data for HDFC
# Dhan Advanced Features
Get option chain for NIFTY
Place bracket order with stop loss and target
Get live market feed for instruments
# Logout from specific broker
Logout from kite
# Logout from all brokers
Logout from all brokers
# Technical Analysis Operations
Get RSI for RELIANCE
Get MACD for INFY
Get Bollinger Bands for HDFC
Get VWAP for TATA STEEL
Get ATR for NIFTY
# Cross-broker technical comparison
Compare RSI for RELIANCE across all brokers
Compare MACD for INFY across kite and growwAdvanced Broker Features
๐ Kite (Zerodha) Advanced Features:
โ Technical Analysis: RSI, MACD, Bollinger Bands, SMA, EMA, Stochastic
Mutual Funds: Holdings, orders, SIP management
GTT (Good Till Triggered): Advanced conditional orders
Historical Data: OHLC data with custom intervals
Instruments: Complete instrument master data
Order Management: Modify, cancel, bracket orders
Profile & Margins: Account details and fund limits
๐ Groww Advanced Features:
โ Technical Analysis: RSI, MACD, Bollinger Bands (Native API support)
Historical Data: Candlestick data for any time period
Advanced Search: Complex instrument filtering
Order Management: Create, modify, cancel orders
Market Data: Real-time quotes and live feeds
Instrument Details: Complete security information
โก Dhan Advanced Features:
โ Technical Analysis: RSI, MACD, Bollinger Bands, SMA, EMA, Stochastic
Option Chain: Complete options data with Greeks
Bracket/Cover Orders: Advanced order types with SL/Target
Kill Switch: Emergency stop for all trading activities
Live Market Feed: Real-time price updates
Security Info: Detailed instrument information
Order Book/Trade Book: Complete trading history
Exchange Status: Real-time market status updates
Technical Indicator Support
๐ Unified Technical Analysis Commands:
Individual Indicators:
# Get specific technical indicators
Get RSI for RELIANCE with period 14
Get MACD for INFY from kite broker
Get Bollinger Bands for HDFC with period 20
Get VWAP for TATA STEEL from groww
Get ATR for NIFTY with period 14
Get ADX for RELIANCE with period 14
# Multiple indicators at once
Get technical indicators RSI,MACD,BOLLINGER for RELIANCECross-Broker Comparison:
# Compare same indicator across brokers
Compare RSI for RELIANCE across all brokers
Compare MACD for INFY across kite,groww,dhan
Compare Bollinger Bands for HDFC across authenticated brokersAdvanced Parameters:
# With custom periods and timeframes
Get RSI for RELIANCE with period 21 and interval 1h
Get MACD for INFY with fast_period 10, slow_period 20, signal_period 7
Get Bollinger Bands for HDFC with period 20 and standard_deviations 2.5โ All Brokers Support:
๐ Trend Indicators:
SMA (Simple Moving Average): Any period
EMA (Exponential Moving Average): Any period
VWAP (Volume Weighted Average Price): Intraday trading benchmark
Parabolic SAR: Stop and Reverse trend following system
ADX (Average Directional Index): Trend strength indicator
๐ Momentum Indicators:
RSI (Relative Strength Index): 14-period default, overbought/oversold
MACD (Moving Average Convergence Divergence): 12,26,9 default parameters
Stochastic Oscillator: %K and %D lines
Williams %R: Momentum oscillator
CCI (Commodity Channel Index): Price deviation indicator
MFI (Money Flow Index): Volume-weighted RSI
๐ Volatility Indicators:
Bollinger Bands: 20-period with 2 standard deviations default
ATR (Average True Range): Volatility measurement
๐ฐ Volume Indicators:
OBV (On-Balance Volume): Volume flow indicator
MFI (Money Flow Index): Price and volume momentum
๐ฏ Support & Resistance:
Fibonacci Retracement: Key retracement levels (23.6%, 38.2%, 50%, 61.8%)
Support/Resistance Levels: Automated level detection
๐ง Implementation Details:
Groww: Native API support for technical indicators via
/technical/{indicator}endpointsKite & Dhan: Historical data + local calculation using comprehensive TechnicalIndicators utility class
Consistent API: Unified command interface across all brokers regardless of implementation
Cross-Broker Comparison: Compare same indicator across multiple brokers simultaneously
Real-time Calculation: Indicators calculated from live historical data with customizable parameters
Intelligent Routing: UnifiedTradingServer automatically routes requests to appropriate broker methods
๐ Available Technical Analysis Tools:
MCP Commands:
get_technical_indicators- Multiple indicators at onceget_rsi- Relative Strength Indexget_macd- Moving Average Convergence Divergenceget_bollinger_bands- Bollinger Bandsget_vwap- Volume Weighted Average Priceget_atr- Average True Rangeget_adx- Average Directional Indexcompare_technical_indicators- Cross-broker comparison
Unified Command Examples:
# Individual technical indicators
Get RSI for RELIANCE with period 14
Get MACD for INFY from kite
Get Bollinger Bands for HDFC with period 20 and standard_deviations 2
Get VWAP for TATASTEEL from groww
Get ATR for NIFTY with period 14 from dhan
Get ADX for RELIANCE with period 14
# Multiple indicators
Get technical indicators RSI,MACD,BOLLINGER,VWAP for RELIANCE
# Cross-broker comparison
Compare RSI for RELIANCE across all brokers
Compare MACD for INFY across kite,groww
Compare VWAP for HDFC across authenticated brokersSecurity Features
โ No stored credentials: All API keys/tokens provided via commands
โ Session-based: Credentials cleared when server restarts
โ Broker isolation: Each broker maintains separate credentials
โ Runtime authentication: Authenticate only when needed
โ Modular security: Each broker handles its own authentication
Adding New Brokers
To add a new broker (e.g., Upstox):
Create broker file:
src/brokers/UpstoxBroker.jsExtend BaseBroker: Implement all required methods
Add to index: Export in
src/brokers/index.jsUpdate server: Add to broker registry in
UnifiedTradingServer.jsTest: Authenticate and test all operations
The modular architecture makes adding new brokers straightforward and maintainable.
๐ Cloudflare Workers Deployment
For deploying to Cloudflare Workers, see the complete setup guide in /cloudflare/README.md.
๐ License
Apache 2.0 License - see LICENSE file for details.
Available Tools
37 toolsauthenticate_brokerC
Authenticate with a specific broker using credentials (session-isolated)
| Name | Required | Description | Default |
|---|---|---|---|
| broker | Yes | Broker name | |
| api_key | No | API key (required for Kite) | |
| jwtToken | No | JWT Token (for AngelOne, recommended for repeat logins) | |
| password | No | PIN/Password (for AngelOne) | |
| client_id | No | Client ID (for AngelOne and Dhan) | |
| feedToken | No | Feed Token (for AngelOne, optional) | |
| api_secret | No | API secret (required for Kite with request_token) | |
| client_code | No | Client code (for AngelOne) | |
| totp_secret | No | TOTP Secret Key (for AngelOne, automated TOTP generation) | |
| access_token | No | Access token | |
| refreshToken | No | Refresh Token (for AngelOne, optional) | |
| request_token | No | Request token (for Kite) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only mentions 'session-isolated', which hints at isolation but doesn't explain what happens to existing credentials, whether tokens are persisted or overwritten, or what success/failure looks like. For an authentication tool handling sensitive data, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and wastes no words. However, given the tool's complexity (12 parameters), it may be too terse, but as a concise statement of purpose it is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 12 parameters, no annotations, and no output schema, yet the description is just one sentence. It fails to explain the authentication flow, which credentials are needed per broker, the full implication of 'session-isolated', or how it relates to siblings like get_broker_login_instructions. This is incomplete for such a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having broker-specific notes (e.g., 'required for Kite', 'for AngelOne'). The description adds no additional parameter meaning beyond the generic 'using credentials', so baseline 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Authenticate' and resource 'broker', making the core action clear. It adds 'using credentials' and 'session-isolated', but doesn't differentiate from sibling tools like set_active_broker or get_broker_login_instructions, so it doesn't earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 set_active_broker or get_broker_login_instructions. There are no prerequisites, exclusions, or context cues for choosing authentication versus other broker-related operations. The agent is left without direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_kite_basket_marginsB
Calculate basket margins for spread orders on Kite
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Calculation mode (optional) | |
| broker | No | Must be kite for basket margin calculation | |
| orders | Yes | Array of order objects for basket | |
| consider_positions | No | Consider existing positions (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the calculation intent, omitting any mention of read-only nature, authentication requirements, or potential error conditions. This leaves the agent without information about side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundancy. Every word contributes to the core purpose, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a clear schema, the description omits crucial context such as what the output looks like (no output schema exists), when to choose this over the similar calculate_kite_order_margins, and any constraints on the 'orders' array for spread orders. The tool's complexity and the presence of closely related siblings demand more explanatory content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for all four parameters, so the baseline is 3. The description adds no additional parameter semantics beyond what the schema already documents, such as the need for 'broker' to be 'kite' or the optional nature of 'mode'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calculates basket margins specifically for spread orders on Kite, distinguishing it from sibling tools like calculate_kite_order_margins which handle single orders. The verb 'Calculate' is specific and the resource 'basket margins' 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.
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 such as calculate_kite_order_margins or calculate_order_margin. The description implies a use case for basket/spread orders but does not explicitly state the distinction or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_kite_order_chargesB
Get detailed charges breakdown for Kite orders
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Must be kite for order charges calculation | |
| orders | Yes | Array of order objects for charges calculation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description is too brief to disclose behavioral traits such as whether it requires an active broker session, whether it places orders, or what the breakdown includes. With no annotations, the description carries the full burden but does not address any side effects or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence, front-loaded with the verb and resource; no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool accepts a complex nested orders array and has no output schema, but the description offers no information about return format, per-order vs aggregate breakdown, or any limitations. This is insufficient for an agent to anticipate the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage, so the description doesn't need to add parameter details. The description adds no extra meaning beyond the schema's existing property descriptions, giving a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('detailed charges breakdown for Kite orders'), clearly distinguishing from sibling margin calculation tools like calculate_kite_order_margins. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as calculate_kite_order_margins or calculate_kite_basket_margins. The description only states its function without exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_kite_order_marginsC
Calculate required margins for Kite orders
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Must be kite for order margin calculation | |
| orders | Yes | Array of order objects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action, with no mention of side effects, return format, authentication requirements, or whether it is a read-only operation. This leaves the agent unaware of key behavioral characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words, earning points for efficiency and front-loading. However, it is extremely brief, which may under-specify, but this is not a verbosity issue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a complex nested schema and no output schema, the description explains nothing about the calculation process, return value, prerequisites, or how it fits among the many sibling tools. This leaves the agent with an incomplete understanding and likely to mis-select or misuse the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides complete descriptions for all parameters, including enums and per-field details, yielding 100% schema coverage. The description adds no additional parameter semantics, but the schema already carries the burden, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calculates required margins for Kite orders, using a specific verb and resource. However, it does not distinguish this from sibling tools like calculate_kite_basket_margins or calculate_order_margin, which also calculate margins, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not clarify whether it is for multiple individual orders, a basket, or how it differs from other margin-related tools. With numerous sibling tools, this is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_order_marginA
Calculate required margin for a specific order (Groww only)
| Name | Required | Description | Default |
|---|---|---|---|
| price | No | Price (required for LIMIT/SL orders) | |
| broker | No | Must be groww for margin calculation | |
| product | Yes | Product type | |
| segment | No | Market segment | |
| exchange | Yes | Exchange | |
| quantity | Yes | Number of shares | |
| order_type | Yes | Order type | |
| trigger_price | No | Trigger price (required for SL/SL-M orders) | |
| trading_symbol | Yes | Trading symbol | |
| transaction_type | Yes | Transaction type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Calculate' implies a non-destructive, read-only operation, but the description does not disclose whether authentication is required, whether it hits a live broker API, or what exactly the calculation is based on. For a tool with zero annotation coverage, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the key action and scope, with no redundant words. It is an excellent example of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no output schema and no annotations, the description is minimal. It communicates the Groww-only scope and purpose, but does not explain what the returned margin value represents, any prerequisites, or how it differs from similar margin-related siblings like get_margin_for_orders. The schema covers parameters, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 10 parameters are already fully described in the input schema. The description adds no additional parameter-specific meaning beyond saying it is for a 'specific order', so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Calculate' and a specific resource 'required margin for a specific order', with an explicit '(Groww only)' scope. This clearly distinguishes it from sibling tools like calculate_kite_order_margins or get_margin_for_orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The '(Groww only)' qualifier gives clear context that this tool is exclusively for Groww broker margin calculations, which helps differentiate it from Kite-based alternatives. However, it does not explicitly name alternatives or state when not to use them, so guidance is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_orderB
Cancel an existing order with support for all order varieties
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional, uses active if not specified) | |
| variety | No | Order variety | |
| order_id | Yes | Order ID to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It implies a destructive operation but does not mention requirements like authentication, active broker selection, or the finality of the cancellation. This is insufficient for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action ('Cancel') and resource ('existing order'). It contains no filler and is immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides the core purpose but omits practical context such as using the active broker, authentication requirements, and behavior across different order varieties. Given the simple schema and no output schema, it is minimally adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions, so the baseline is 3. The description adds 'all order varieties', which gives extra meaning to the variety parameter, but it does not add semantics for 'broker' or 'order_id' beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Cancel an existing order'. It also mentions 'support for all order varieties', adding scope. While it doesn't explicitly distinguish from sibling tools like modify_order, the purpose is clear and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description simply states the action without context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_portfoliosA
Compare portfolios across multiple authenticated brokers in your session
| Name | Required | Description | Default |
|---|---|---|---|
| brokers | No | Array of broker names to compare (optional, compares all authenticated if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It only adds that it operates across 'authenticated brokers' and 'in your session', but does not disclose read-only status, return format, error handling, or behavior when some brokers are unauthenticated. This is a significant gap for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently states the tool's purpose without fluff or repetition. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and the description does not explain what the comparison result looks like (e.g., metrics, format). It also does not describe how to interpret results when multiple brokers are involved or what happens if authentication is missing. For a comparison tool with one optional parameter, this is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the single optional parameter 'brokers' with a clear explanation, so the tool description does not need to add parameter details. The description itself adds no extra parameter semantics, staying at the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Compare') and resource ('portfolios across multiple authenticated brokers'). This distinguishes it from sibling tools like get_portfolio (single portfolio) and get_consolidated_portfolio (aggregated but not comparative), as well as compare_technical_indicators (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: use this tool when you need to compare portfolios across multiple authenticated brokers within your session. However, it does not explicitly mention alternatives or exclusions, which would be needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_technical_indicatorsA
Compare same technical indicator across multiple brokers in your session
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Period for calculation | |
| symbol | Yes | Trading symbol | |
| brokers | No | Brokers to compare | |
| indicator | Yes | Technical indicator |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It does not mention that this is a read-only operation, any authentication prerequisites, what happens if no brokers are available, or error conditions. The description is minimal and leaves the agent guessing about important behavioral aspects, similar to the 'update_drive' example.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It directly conveys the core action, resource, and scope, earning a high score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description needs to provide more context. It does not explain what the tool returns, how multiple brokers are selected, or any limitations (e.g., requires at least two authenticated brokers). Given the tool's moderate complexity (multi-broker comparison), this description is insufficient for an agent to fully understand behavior and expected results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a hint about the 'brokers' parameter via 'across multiple brokers,' but it does not elaborate on period, indicator specifics, or the need for at least two brokers. Since the schema already describes each parameter, the description provides marginal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Compare same technical indicator across multiple brokers in your session.' It uses a specific verb ('compare'), names the resource ('technical indicator'), and specifies the scope ('across multiple brokers'), which also distinguishes it from sibling tools like get_rsi or get_macd that operate on a single broker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to compare an indicator across brokers, and the phrase 'in your session' gives context that brokers must be in the session. However, it does not explicitly mention alternatives or exclusions (e.g., 'use this instead of get_rsi for multi-broker comparison'). Still, the context is clear enough to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_orderC
Create a new trading order with full support for all Kite order types and varieties
| Name | Required | Description | Default |
|---|---|---|---|
| amo | No | Place as After Market Order | |
| tag | No | Order tag for tracking | |
| price | No | Price per share (required for LIMIT/SL orders) | |
| broker | No | Specific broker (optional, uses active if not specified) | |
| product | Yes | Product type | |
| segment | No | Market segment (required for Groww) | |
| variety | No | Order variety (optional, auto-determined) | |
| exchange | Yes | Exchange | |
| quantity | Yes | Number of shares | |
| stoploss | No | Stop loss price (required for CO/BO orders) | |
| validity | No | Order validity | |
| squareoff | No | Square off price (required for BO orders) | |
| order_type | Yes | Order type | |
| symboltoken | No | Symbol token (required for AngelOne, unique identifier for instrument) | |
| trigger_price | No | Trigger price (required for SL/SL-M orders) | |
| trading_symbol | Yes | Trading symbol (e.g., RELIANCE-EQ, INFY-EQ) | |
| transaction_type | Yes | Transaction type | |
| trailing_stoploss | No | Trailing stop loss (optional for CO orders) | |
| disclosed_quantity | No | Disclosed quantity for iceberg orders | |
| order_reference_id | No | Custom order reference ID (8-20 alphanumeric chars, max 2 hyphens, auto-generated if not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral disclosure burden, but it only gives a high-level summary. It doesn't mention that variety is auto-determined, that broker is optional, or any error/return behavior. This is a significant omission for a complex order placement tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose. It contains no filler or redundant information, earning full marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 20 parameters, no annotations, and no output schema, the description is severely incomplete. It fails to explain return values, prerequisites (like auth), conditional parameter requirements, or how this differs from sibling order tools. This leaves the agent without enough context to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions, so the schema already provides semantics. The description adds no additional parameter meaning beyond what is already in the schema. Thus, the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a trading order, using the verb 'Create' and specifying the resource ('trading order'). It also indicates broad support for 'all Kite order types and varieties', which conveys scope. However, it does not explicitly distinguish itself from specialized sibling tools like place_amo or place_bracket_order, leaving some potential for confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. Given the many specialized order placement siblings (place_amo, place_cover_order, etc.), the absence of usage context or exclusions is a notable gap. The claim 'full support' implies generality but doesn't clarify when a specialized tool would be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_adxA
Get ADX (Average Directional Index) for a symbol from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional) | |
| period | No | ADX period (default: 14) | |
| symbol | Yes | Trading symbol | |
| to_date | No | End date (YYYY-MM-DD) | |
| interval | No | Time interval (1m, 5m, 15m, 1h, 1d) | |
| from_date | No | Start date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does add the prerequisite of an active broker session or specific broker, which is useful, but it does not mention whether the operation is read-only, what data is required, or any error conditions. The description is factual about the data source but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundancy. Every word contributes meaning, achieving high conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (six parameters, no output schema), the description provides the essential purpose and a key prerequisite (active broker/session) but lacks information about return format, parameter interactions, or potential errors. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All six parameters are fully described in the schema (100% coverage), so the baseline is 3. The description adds minor semantic value by indicating that the 'symbol' and 'broker' parameters relate to the symbol and broker context, but it does not elaborate on period, interval, or date ranges beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as retrieving the ADX indicator for a given symbol, using a specific verb and resource. The expansion of the acronym and mention of broker context distinguish it from other indicator tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to choose ADX over other indicators like RSI or MACD, nor any exclusions or alternatives. The only usage context is the need for an active broker session or specified broker, which is implied by 'from active or specific broker in your session'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_atrB
Get ATR (Average True Range) for a symbol from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional) | |
| period | No | ATR period (default: 14) | |
| symbol | Yes | Trading symbol | |
| to_date | No | End date (YYYY-MM-DD) | |
| interval | No | Time interval (1m, 5m, 15m, 1h, 1d) | |
| from_date | No | Start date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose any behavioral traits such as whether it is read-only, what happens if no active broker is found, authentication requirements, or potential errors. The only behavioral hint is the need for a broker session, which is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately conveys the core purpose. It is front-loaded with the essential function and avoids superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters and no output schema, the description is too minimal to be considered complete. It fails to explain how ATR is calculated, the role of date ranges, interval handling, or what the response contains. The schema describes fields, but the overall behavior and use case remain ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all six parameters have descriptions. The tool description adds no additional semantic meaning beyond 'symbol' and 'broker' context, effectively relying on the schema. It does not clarify interactions between parameters like period, from_date, to_date, or interval.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function: 'Get ATR (Average True Range) for a symbol', specifying both the verb and resource. It also notes 'from active or specific broker in your session', which distinguishes it from other technical indicator tools like get_rsi or get_macd by focusing on ATR.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'from active or specific broker in your session', implying the tool requires an active broker session, but it does not explicitly state when to use this tool over alternatives or provide exclusion criteria. Usage context is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bollinger_bandsA
Get Bollinger Bands for a symbol from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional) | |
| period | No | Period (default: 20) | |
| symbol | Yes | Trading symbol | |
| to_date | No | End date (YYYY-MM-DD) | |
| interval | No | Time interval (1m, 5m, 15m, 1h, 1d) | |
| from_date | No | Start date (YYYY-MM-DD) | |
| standard_deviations | No | Standard deviations (default: 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose behavior beyond the basic operation, such as what happens without an active broker, return format, or error conditions. This is a significant gap for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence, front-loaded with action and resource, no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimally complete for a list-like tool with well-documented parameters, but lacks behavioral context (e.g., return format, broker selection behavior) and there is no output schema to compensate. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions (100% coverage), so baseline 3 applies. The description adds no additional parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and resource 'Bollinger Bands' with clear scope (symbol, broker session). It clearly distinguishes from sibling indicator tools by naming the specific indicator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Context is provided: 'from active or specific broker in your session' implies an existing broker session. However, there are no explicit alternatives or exclusions relative to other technical indicator tools, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_broker_login_instructionsB
Get detailed login instructions for a specific broker
| Name | Required | Description | Default |
|---|---|---|---|
| broker | Yes | Broker name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that instructions are returned, but does not clarify whether the operation is read-only, whether it requires an established session, the format of the instructions, or any side effects. This is a significant gap for a tool that interacts with broker-specific data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action and object. There is no redundant wording or unnecessary detail, making it appropriately sized for the simplicity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is minimally adequate: it names the operation and the resource. However, it omits relevant context such as when these instructions are needed, whether they are for the broker's web portal or API, and how they relate to authentication workflows. It lacks enough contextual depth to fully support an agent in selecting and using the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the broker parameter with a description and enum values, achieving 100% coverage. The description phrase 'for a specific broker' adds no new semantic detail beyond what the schema provides. Since schema coverage is high, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: fetching detailed login instructions for a specific broker. The verb 'Get' combined with the resource 'detailed login instructions' and the qualifier 'for a specific broker' makes the purpose unmistakable and distinguishes it from sibling tools like authenticate_broker, which performs the actual login, and list_brokers, which lists available brokers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., whether a broker must be set active), nor does it reference related tools like authenticate_broker or set_active_broker. The usage context is entirely implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_consolidated_portfolioA
Get consolidated view of all holdings across all authenticated brokers in your session
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It indicates a read-only operation via 'Get' and clarifies session/authentication scope, but it doesn't describe failure modes, empty states, or whether any side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence, front-loaded with the verb and resource, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complexity is low (no params), but without annotations or an output schema, the description could say more about the composition of the consolidated view and prerequisites. It communicates the key aggregation scope but leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the description adds meaningful context by explaining that the operation implicitly spans all authenticated brokers in the session. This justifies the empty schema and adds value beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' with a clear resource ('consolidated view of all holdings') and scope ('across all authenticated brokers in your session'). This distinguishes it from sibling tools like get_portfolio and get_positions, which appear to operate per broker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the intended context: use when you need holdings aggregated across all authenticated brokers. It does not explicitly name alternatives or exclusions, but the per-broker siblings make the distinction obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_macdA
Get MACD (Moving Average Convergence Divergence) for a symbol from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional) | |
| symbol | Yes | Trading symbol | |
| to_date | No | End date (YYYY-MM-DD) | |
| interval | No | Time interval (1m, 5m, 15m, 1h, 1d) | |
| from_date | No | Start date (YYYY-MM-DD) | |
| fast_period | No | Fast EMA period (default: 12) | |
| slow_period | No | Slow EMA period (default: 26) | |
| signal_period | No | Signal line period (default: 9) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It mentions the session/broker dependency but does not disclose return format, required authentication state, error behavior, or whether it is read-only. It also doesn't explain how parameters like fast_period or to_date affect the calculation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and resource, with no filler or redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters, a moderately complex domain (technical indicators), and no output schema or annotations. The description only provides the basic purpose and a hint about broker sessions; it lacks any guidance on how the parameters relate (e.g., period interactions, date range validation) or what the response will contain. This is insufficient for correct invocation without further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents all 8 parameters with descriptions, including defaults for the period parameters. The tool description itself does not add any additional meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and resource 'MACD (Moving Average Convergence Divergence)', and clarifies the data source ('from active or specific broker in your session'). This clearly distinguishes it from sibling indicator tools like get_rsi or get_adx.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context that a broker session is required and indicates the ability to choose a specific broker, which is a useful usage condition. However, it does not explicitly mention alternatives or when not to use this tool, such as using get_technical_indicators for multiple indicators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_margin_for_ordersA
Calculate required margin for multiple orders (Groww only)
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Must be groww for bulk margin calculation | |
| orders | Yes | Array of order objects | |
| segment | No | Market segment (default: CASH) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the Groww-only restriction, which is a behavioral constraint, but does not mention authentication prerequisites, potential side effects, or what happens if the Groww session is invalid. For a calculation tool, this is moderate but incomplete transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the verb and resource, and contains zero waste. It is minimal but effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three params, rich schema descriptions, and no output schema, the description adequately conveys core purpose and broker restriction. It lacks some context like whether an active Groww session is required, but the schema's broker parameter description reinforces the Groww-only constraint, making the tool usable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly (orders array, broker enum, segment enum). The description adds no additional parameter context beyond what the schema provides, which is acceptable per the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Calculate), resource (required margin), and scope (multiple orders, Groww only). It distinguishes from sibling margin tools like 'calculate_order_margin' (singular) and 'calculate_kite_order_margins' (Kite-specific) by explicitly specifying 'multiple orders' and 'Groww only'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Groww only' qualifier provides clear context for when to use this tool โ specifically for Groww broker margin calculations on multiple orders. However, it does not explicitly mention alternatives for single-order or other brokers, so it lacks when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_marginsA
Get account margins from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional, uses active if not specified) | |
| segment | No | Specific segment for Kite broker (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the core behavior (getting margins) and the session context, but it does not disclose potential failure modes (e.g., no active broker), return format, or whether the operation is read-only beyond the verb 'Get'. The description adds some session context but is not rich in behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 13 words, front-loaded with the verb 'Get' and the primary object 'account margins'. There is no redundant or extraneous wording, making it highly concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional params, no output schema, no annotations), the description covers the primary purpose but omits useful context such as what margin figures are returned (e.g., available vs. used margin) and prerequisites like requiring an authenticated broker. It is adequate for a simple getter but leaves gaps that could affect correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the broker parameter already explains it is optional and uses the active broker if not specified, and the segment parameter is clearly scoped to Kite. The description only reinforces the 'active or specific broker' concept without adding new semantic meaning or elaborating on parameter interactions, so it provides marginal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' with resource 'account margins' and scoping 'from active or specific broker in your session.' This clearly distinguishes it from sibling tools like calculate_order_margin or get_margin_for_orders, which focus on order-specific margin calculations rather than account-level margins.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when account-level margins are needed, but it does not explicitly state when not to use this tool or mention alternatives such as calculate_order_margin for order-level calculations. It also lacks guidance on prerequisites like requiring an active authenticated broker session, leaving usage context partially implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ordersA
Get order history from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional, uses active if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It indicates that the tool operates within a session and can target a specific broker, but it does not disclose return format, whether only historical orders are included, or any prerequisites like authentication. It is sufficient for a simple read operation but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action and resource. Every word adds value, with no filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter, no output schema), the description covers the essential context: what it returns and how broker selection works. It doesn't explain the exact structure of order history, but for a getter of this simplicity, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single 'broker' parameter, describing it as optional and defaulting to the active broker. The description mirrors this without adding new syntax or constraints, so it does not elevate beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('order history'), and the scope ('from active or specific broker in your session'). This distinguishes it from sibling order-manipulation tools like place_order, modify_order, and cancel_order, which are clearly different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: to retrieve order history from either the active broker or a specific broker. It implies the optionality of the broker parameter, but does not explicitly mention exclusions or alternative tools for similar functions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_order_types_infoB
Get information about supported order types, varieties, and their parameters
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional, uses active if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get information,' which implies a read operation, but it does not explicitly state that it is read-only, whether it requires authentication, or if it has any side effects. For a simple info tool this is a moderate gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise, and front-loaded with the action. It contains no fluff and every word adds value. It is appropriately sized for a simple informational tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description is fairly complete. It correctly conveys the purpose without overcomplicating. A slight gap is that it doesn't indicate what 'parameters' refers to or whether the return includes broker-specific differences, but the low complexity makes this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100% for the single optional 'broker' parameter, which includes a clear enum and description of the default behavior. The description adds no extra parameter details, but the schema already provides sufficient meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get information') and the resource ('supported order types, varieties, and their parameters'). It distinguishes from sibling tools like create_order or get_orders by focusing on metadata about order types rather than placing or listing actual orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. The description does not mention related tools such as place_amo or place_bracket_order, nor does it explain scenarios where checking order type info would be useful. The intended context is only implied by the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portfolioA
Get portfolio holdings from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional, uses active if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It reveals that the tool operates within a session and can target a specific broker, but does not disclose what happens if no active broker exists, whether authentication is required, or if it is strictly read-only. The 'Get' verb implies read-only, but this is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the action and resource. It contains no fluff and every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one optional parameter and no output schema, the description adequately covers what the tool does and the broker-selection context. It could be more explicit about prerequisites (e.g., active session) and the nature of 'holdings', but overall it is sufficient for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'broker', meaning the schema already provides a description ('Specific broker (optional, uses active if not specified)'). The tool description adds minimal semantic value by restating this relationship, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Get') and resource ('portfolio holdings') with a defined scope ('from active or specific broker in your session'). It effectively distinguishes from siblings like get_consolidated_portfolio by emphasizing single-broker retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates usage context (active broker or a specific broker via the broker parameter), which implies when to use this tool. However, it does not explicitly mention alternatives like get_consolidated_portfolio for multi-broker aggregation, so a slight gap exists in exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_positionsA
Get current trading positions from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional, uses active if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It only states what the tool does without disclosing behavior like authentication requirements, error handling, or output format. This is minimal and lacks useful behavioral context for a tool that may depend on session state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It conveys the purpose and scope efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and no output schema, so the description covers the main use case. However, it omits details like required authentication/session state and what the returned data looks like. Given no annotations, it is minimally viable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single optional broker parameter with a clear enum and description. The description reinforces 'active or specific broker' but adds little beyond the schema. With 100% schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets current trading positions, with the scope of active or specific broker. It is specific with a verb+resource combination and distinguishes itself from sibling tools like get_orders and get_portfolio by naming 'positions' as the resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context (positions from active or specific broker in the session) but does not explicitly say when to use this tool over alternatives like get_portfolio or get_consolidated_portfolio. It lacks exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quoteA
Get live market quotes from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional, uses active if not specified) | |
| symbols | Yes | Array of symbol objects with trading symbol and token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It adds context about requiring an active session and the option to specify a broker, but does not mention authentication, rate limits, or error behavior. The term 'live' indicates real-time data, which is useful but limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and front-loaded. No redundant or irrelevant information is present, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple quote tool, the description provides the core purpose and broker context, but lacks information about return format, error conditions, or requirements like authentication. Given no output schema, the description could offer more details, but it is adequate for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the parameters. The description does not add additional parameter semantics beyond what is in the schema, such as the meaning of symbols or broker. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('live market quotes'), clearly distinguishing this tool from siblings like get_orders or get_portfolio. It also specifies the context of 'active or specific broker in your session', which adds clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: retrieving live quotes from the active broker or a specified broker. It does not mention alternatives or exclusions, but the scenario is well-defined. Sibling tools like get_technical_indicators are not mentioned, so no explicit guidance on choosing between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rsiA
Get RSI (Relative Strength Index) for a symbol from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional) | |
| period | No | RSI period (default: 14) | |
| symbol | Yes | Trading symbol | |
| to_date | No | End date (YYYY-MM-DD) | |
| interval | No | Time interval (1m, 5m, 15m, 1h, 1d) | |
| from_date | No | Start date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It adds useful context about broker selection (active vs. specific) but does not disclose the return format, potential errors (e.g., no active broker), or whether it supports multiple data points. This is a moderate level of transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action ('Get RSI') and then adds essential context ('from active or specific broker in your session'). Every word earns its place; no redundancy or wasted detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description, combined with the schema, tells the agent what parameters to use and the broker context. However, there is no output schema, so the description should explain what the tool returns (e.g., a single RSI value or a time series). Omitting return information creates an incomplete picture for a tool of moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining that the broker parameter falls back to the active broker if not specified, a semantic detail not captured in the schema's description of 'Specific broker (optional)'. This helps the agent understand parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the RSI (Relative Strength Index) for a symbol, using a specific verb 'Get' and a distinct resource. It distinguishes itself from sibling technical indicator tools (e.g., get_macd, get_atr) by naming the exact indicator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: the RSI is fetched from either the active broker or a specific broker in the session. This implies the tool requires an established broker session and gives a hint about when to use it, though it does not explicitly exclude alternatives or state 'use this when you need RSI'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_infoB
Get information about your current session
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get information', which implies a read operation, but gives no details about what session information is returned, whether authentication is required, or what happens if no session exists. This lack of detail could lead to incorrect assumptions about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action ('Get') and the object ('information about your current session'). There is no wasted text or redundancy, making it highly concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is extremely simple with no parameters and no output schema, but the description still does not clarify what the returned session information includes (e.g., session ID, broker connections, login status). Given the lack of annotations and output schema, the description is minimally viable but leaves significant room for ambiguity about the tool's actual output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description need not explain parameter semantics. Per the guidelines, a baseline of 4 is appropriate when no parameters exist. The description is consistent with the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and identifies the resource as 'information about your current session'. This clearly distinguishes it from sibling tools like get_orders or get_portfolio, as no other tool mentions session info. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention related session-management tools like authenticate_broker or logout_broker, nor does it state any prerequisites or typical use cases. The only implied usage is checking session details, but no explicit context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_technical_indicatorsB
Get multiple technical indicators for a symbol from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional) | |
| period | No | Period for calculation (default: 14) | |
| symbol | Yes | Trading symbol | |
| to_date | No | End date (YYYY-MM-DD) | |
| interval | No | Time interval (1m, 5m, 15m, 1h, 1d) | |
| from_date | No | Start date (YYYY-MM-DD) | |
| indicators | No | Array of indicators (RSI, MACD, BOLLINGER, SMA, EMA, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions the broker session context and fails to disclose what happens if no active broker exists, whether data is fetched live or historically, the return format for multiple indicators, or any potential side effects. This is a significant gap for a tool with zero annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the main action ('Get multiple technical indicators') and includes the key contextual qualifier about the broker session. It is concise with no wasted words, though it sacrifices some informational depth for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no output schema, no annotations), the description is under-specified. It does not explain what indicators are supported beyond the schema's vague 'etc.', nor does it clarify the expected response structure, error conditions, or the significance of the 'active or specific broker' setting. This incompleteness would leave an agent under-informed for correct invocation and result interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all 7 parameters (100% coverage), so the baseline is 3. The description adds minimal semantic value beyond the schema by emphasizing 'multiple' indicators and the 'active or specific broker' selection, which maps to the `indicators` and `broker` parameters. However, it does not explain any parameter interplay or edge cases, keeping it at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves multiple technical indicators for a symbol, which distinguishes it from single-indicator siblings like get_rsi and get_macd. However, it does not explicitly name an alternative or mention that this is the preferred tool for batch queries, so it lacks the strong differentiation seen in the highest-caliber examples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from active or specific broker in your session' provides context on the prerequisite of an active broker session or an explicitly specified broker, but it gives no explicit guidance on when to use this tool versus calling individual indicator tools repeatedly. There is no mention of when-not-to-use or alternative tool names, leaving usage decisions partially implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vwapA
Get VWAP (Volume Weighted Average Price) for a symbol from active or specific broker in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Specific broker (optional) | |
| symbol | Yes | Trading symbol | |
| to_date | No | End date (YYYY-MM-DD) | |
| interval | No | Time interval (1m, 5m, 15m, 1h, 1d) | |
| from_date | No | Start date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only operation via 'Get' but does not disclose authentication requirements, error conditions (e.g., what happens if no active broker session), or the nature of the returned data (e.g., single value vs time series). This is a significant gap for a tool with broker-dependent behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the core function and key selection criterion (active or specific broker). There is zero wasted verbiage, making it highly concise and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no output schema, the description is too sparse. It does not explain that VWAP may be returned as a time series based on 'from_date', 'to_date', and 'interval', nor does it mention broker session prerequisites. The schema describes parameters but the description should clarify the tool's overall behavior and return structure, which it fails to do.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal semantic value beyond the schemaโ'from active or specific broker' aligns with the 'broker' parameter but does not clarify formats or relationships. It does not compensate for any gaps because there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves VWAP for a symbol, with the verb 'Get' and the resource 'VWAP'. It distinguishes itself from sibling indicators like RSI or MACD by explicitly naming VWAP, and adds the broker context ('from active or specific broker'), which sets it apart from generic quote tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: when needing VWAP for a symbol, and it explains the broker selection nuance (active vs specific). However, it does not explicitly mention alternatives or when not to use it, though the purpose is specific enough to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_brokersA
List all available brokers and their authentication status for your session
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It clearly indicates a read-only operation ('List') and scopes the data to the current session, but it does not mention potential side effects (none expected) or any authentication requirements. This is adequate for a simple listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states exactly what the tool does without redundancy. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no output schema, and a very simple purpose, the description fully covers the essential information: the tool lists brokers and their authentication status. This is complete enough for an agent to select and invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description does not need to add parameter semantics, and the empty schema is not a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and clearly identifies the resource ('all available brokers') and the scope ('authentication status for your session'). This distinguishes it from sibling tools like set_active_broker or authenticate_broker, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to see available brokers and their auth status) but does not explicitly state when not to use it or name alternatives. The context is clear enough for a simple listing tool, but there is no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logout_brokerA
Logout from a specific broker or all brokers in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | Broker name or 'all' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It adds 'in your session' which indicates it affects the current session state, but it does not disclose side effects such as token invalidation, need for re-authentication, or impact on orders. This is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no fluff. It is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional param, no nested objects, no output schema), the description adequately covers the main action and the 'all' option. However, it does not mention default behavior when the parameter is omitted or the return value, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter, including its enum values and a description ('Broker name or all'). The description repeats the 'specific or all' concept but adds no extra syntax or behavioral detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Logout') and identifies the resource ('broker or all brokers in your session'). It clearly distinguishes from sibling tools like set_active_broker or authenticate_broker by indicating an action to end a session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool (when the agent needs to log out of a broker session) and the 'specific or all' scope provides context. However, it does not explicitly mention alternatives or when not to use it, so a score of 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_orderB
Modify an existing order with support for all order varieties
| Name | Required | Description | Default |
|---|---|---|---|
| price | No | New price | |
| broker | No | Specific broker (optional, uses active if not specified) | |
| variety | No | Order variety | |
| order_id | Yes | Order ID to modify | |
| quantity | No | New quantity | |
| validity | No | New validity | |
| order_type | No | New order type | |
| trigger_price | No | New trigger price | |
| disclosed_quantity | No | New disclosed quantity (for iceberg) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only repeats the tool's purpose and adds a vague claim about order varieties. It fails to mention authentication needs, side effects, order status constraints, or response format, leaving significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant words, earning points for conciseness. However, it lacks structure and is arguably too terse for a tool with 9 parameters, so it does not reach a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 9 parameters, no annotations, and no output schema, the description is severely incomplete. It does not explain return values, error conditions, or how different order varieties affect the modification process. The claim 'all order varieties' is vague and unsubstantiated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 9 parameters, so the baseline is 3. The description adds no extra meaning beyond the schema, but it does not need to because the schema already documents each parameter clearly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Modify an existing order' which identifies the specific action and resource. There is no sibling tool with a similar modify function, making it unambiguous. The phrase 'with support for all order varieties' adds a capability claim, though somewhat vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 canceling and recreating an order, or using the various place_* tools. The description does not mention any exclusions or specific scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_amoA
Place After Market Order (AMO) for next day execution
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Order tag | |
| price | No | Price (required for LIMIT/SL orders) | |
| broker | No | Specific broker (optional, uses active if not specified) | |
| product | Yes | Product type | |
| exchange | Yes | Exchange | |
| quantity | Yes | Number of shares | |
| validity | No | Order validity | |
| order_type | Yes | Order type | |
| trigger_price | No | Trigger price (required for SL/SL-M orders) | |
| trading_symbol | Yes | Trading symbol | |
| transaction_type | Yes | Transaction type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It only mentions next-day execution but omits critical information such as the order submission process, the need for an active broker, potential rejection, or the financial impact. This is insufficient for a mutation-like trading action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the tool's purpose. It is well-structured and free of waste, though it is somewhat terse for the complexity of the operation, it effectively communicates the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, 6 required, no output schema, and no annotations), the description is incomplete. It does not address prerequisites like broker authentication, the distinction between AMO and regular orders beyond execution timing, or the operational steps. An agent would be underinformed for making a real financial transaction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, with descriptions for all 11 parameters. The description adds no additional parameter semantics beyond the schema, so it meets the baseline but does not elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: placing an After Market Order (AMO) for next-day execution. It uses a specific verb 'Place' and a distinct asset type 'AMO', which differentiates it from sibling order placement tools like create_order or place_bracket_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when to use this tool: for AMO orders that execute the next day. This provides clear context for the tool's intended use. However, it does not explicitly state when not to use it or mention alternatives for other order types, so it lacks direct exclusions but the context is still clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_bracket_orderC
Place Bracket Order (BO) - order with both stop loss and target
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Order tag | |
| price | Yes | Limit price (mandatory for BO) | |
| broker | No | Specific broker (optional, uses active if not specified) | |
| exchange | Yes | Exchange | |
| quantity | Yes | Number of shares | |
| stoploss | Yes | Stop loss price (mandatory) | |
| squareoff | Yes | Square off/target price (mandatory) | |
| trading_symbol | Yes | Trading symbol | |
| transaction_type | Yes | Transaction type | |
| trailing_stoploss | No | Trailing stop loss (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of explaining behavior. It only says 'order with both stop loss and target,' but does not disclose that price is mandatory, that this is a limit order, order lifecycle implications, or any broker-specific behaviors or risks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that gets to the point instantly. It is appropriately concise, though it sacrifices meaningful content for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex trading tool with 10 parameters and 7 required fields, yet the description provides only a minimal summary. It does not explain how the parameters relate, what a bracket order entails beyond stop loss and target, or how to successfully invoke it. The absence of an output schema makes the description even more insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds little beyond restating the stop loss and target aspects, which are already evident from the 'stoploss' and 'squareoff' parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Place') and resource ('Bracket Order'), and clarifies that it includes both stop loss and target. This distinguishes it from basic order tools, though there is also a 'place_groww_bracket_order' sibling, so it could be more explicit about why this one is different.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given regarding when to use this tool versus alternatives like cover orders, iceberg orders, or the Groww bracket order variant. There is no mention of prerequisites, constraints, or scenarios that favor this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_cover_orderB
Place Cover Order (CO) - intraday order with compulsory stop loss
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Order tag | |
| price | No | Price (required for LIMIT orders) | |
| broker | No | Specific broker (optional, uses active if not specified) | |
| exchange | Yes | Exchange | |
| quantity | Yes | Number of shares | |
| stoploss | Yes | Stop loss price (mandatory) | |
| order_type | Yes | Order type | |
| trading_symbol | Yes | Trading symbol | |
| transaction_type | Yes | Transaction type | |
| trailing_stoploss | No | Trailing stop loss (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It mentions 'intraday' and 'compulsory stop loss' as constraints, but says nothing about order lifecycle, execution behavior, auth requirements, or error handling. This is insufficient for a complex order placement tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the key action and differentiator. It contains zero filler and is appropriately compact for its purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, no annotations, no output schema, and numerous sibling order types), the one-line description is woefully incomplete. It omits prerequisites, return behavior, error conditions, and clear differentiation from similar tools like place_groww_cover_order.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with descriptions for all 10 parameters, including enums and required fields. The description adds no parameter-specific context, but the schema handles the semantic burden, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Place') and resource ('Cover Order (CO)'), with the defining characteristic 'intraday order with compulsory stop loss' that distinguishes it from other order types. It is immediately understandable and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for intraday cover orders with a mandatory stop loss, but provides no explicit guidance on when to choose this tool over alternatives like bracket orders or other broker-specific order types. It offers a hint but lacks clear when/when-not context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_groww_bracket_orderB
Place Bracket Order on Groww - order with stop loss and target
| Name | Required | Description | Default |
|---|---|---|---|
| price | Yes | Entry price (mandatory for bracket orders) | |
| broker | No | Must be groww for bracket orders | |
| target | Yes | Target price (mandatory) | |
| segment | No | Market segment | |
| exchange | Yes | Exchange | |
| quantity | Yes | Number of shares | |
| stop_loss | Yes | Stop loss price (mandatory) | |
| trading_symbol | Yes | Trading symbol | |
| transaction_type | Yes | Transaction type | |
| order_reference_id | No | Custom order reference ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states that the order includes a stop loss and target, but does not outline side effects, prerequisites (e.g., authenticated broker), multi-leg order behavior, or error conditions. This is a significant gap for a trading mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and front-loaded with the key action and context. No redundant or verbose language, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, no output schema, and no annotations, the description is too sparse. It does not explain what the tool returns, how the bracket order is structured (e.g., linked stop-loss and target orders), or any preconditions. While the schema covers parameter meaning, the overall context for a complex trading operation is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% parameter coverage with descriptions for all 10 parameters. The description adds no additional parameter semantics beyond what the schema already spells out, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Place Bracket Order') and the specific platform ('on Groww'), and adds the key clarification 'order with stop loss and target'. This distinguishes it from sibling tools like place_groww_cover_order or place_groww_gtd_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by 'on Groww', indicating this is for placing bracket orders specifically on the Groww broker. However, it does not explicitly state when to use this instead of the generic place_bracket_order or other Groww-specific order tools, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_groww_cover_orderB
Place Cover Order on Groww - order with mandatory stop loss
| Name | Required | Description | Default |
|---|---|---|---|
| price | No | Price (required for LIMIT orders) | |
| broker | No | Must be groww for cover orders | |
| segment | No | Market segment | |
| exchange | Yes | Exchange | |
| quantity | Yes | Number of shares | |
| stop_loss | Yes | Stop loss price (mandatory) | |
| order_type | Yes | Order type | |
| trading_symbol | Yes | Trading symbol | |
| transaction_type | Yes | Transaction type | |
| order_reference_id | No | Custom order reference ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavior. It mentions mandatory stop loss, but that is already evident from the required schema field. It does not disclose whether authentication is needed, how the order executes, error behavior, or any side effects. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the primary action, and contains no redundant words. It earns its place by stating the core function concisely, though the brevity leaves gaps in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters, 6 required, no output schema, and no annotations, the description is far too sparse. It does not explain the cover order mechanism, the role of stop loss in triggering the order, authentication prerequisites, or the response format. This is inadequate for an agent to use the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented in the input schema. The description adds no additional semantic meaning beyond the mandatory stop loss, which is already reflected in the required fields. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Place Cover Order on Groww - order with mandatory stop loss', identifying the action (place), the resource (cover order on Groww), and a key constraint (mandatory stop loss). This distinguishes it from generic 'place_cover_order' and other Groww-specific order tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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_cover_order' or other order types. There is no mention of prerequisites such as broker authentication or scenarios where cover orders are appropriate. Usage is only implied by the name and brief description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_groww_gtd_orderB
Place Good Till Date (GTD) order on Groww - valid until specified date
| Name | Required | Description | Default |
|---|---|---|---|
| price | No | Price (required for LIMIT/SL orders) | |
| broker | No | Must be groww for GTD orders | |
| product | Yes | Product type | |
| segment | No | Market segment | |
| exchange | Yes | Exchange | |
| quantity | Yes | Number of shares | |
| order_type | Yes | Order type (GTD not available for MARKET) | |
| trigger_price | No | Trigger price (required for SL/SL-M orders) | |
| validity_date | Yes | Date until which order is valid (YYYY-MM-DD) | |
| trading_symbol | Yes | Trading symbol | |
| transaction_type | Yes | Transaction type | |
| order_reference_id | No | Custom order reference ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It mentions 'valid until specified date', which conveys the order's validity period, but it does not disclose whether the order is immediately submitted, any authentication or margin requirements, reversibility, or potential financial impact. For a trade execution tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 11 words, immediately stating the action and key qualifier. There is no unnecessary information, and the structure is appropriately front-loaded with the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite being a complex tool with 12 parameters and no output schema, the description is minimal. It does not mention required prerequisites (e.g., authenticated broker), whether the order is immediately active, or how it interacts with the broker's GTD rules. The schema covers parameter details, but the description fails to provide situational context that the schema cannot convey.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, including enums for order_type, exchange, product, etc. The description adds no significant parameter-level meaning beyond the schema; it only echoes the concept of validity_date. Therefore, the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Place Good Till Date (GTD) order on Groww - valid until specified date'. It uses a specific verb ('Place') and resource ('GTD order on Groww'), and the 'valid until specified date' clarifies the unique GTD behavior, distinguishing it from sibling order types like bracket, cover, or AMO.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit usage guidance is provided. The name and description imply this is for GTD orders specifically on Groww, but there is no direct statement about when to prefer this over other order placement tools (e.g., create_order, place_amo) or any exclusions. The context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_iceberg_orderC
Place Iceberg Order - large order split into smaller disclosed quantities
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Order tag | |
| price | Yes | Limit price (mandatory for iceberg) | |
| broker | No | Specific broker (optional, uses active if not specified) | |
| product | Yes | Product type | |
| exchange | Yes | Exchange | |
| quantity | Yes | Total order quantity | |
| validity | No | Order validity | |
| trading_symbol | Yes | Trading symbol | |
| transaction_type | Yes | Transaction type | |
| disclosed_quantity | Yes | Quantity disclosed to market (must be less than total) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavioral traits. It only states the order type and splitting concept, but does not disclose execution behavior, order lifecycle, potential failures, required approvals, or side effects. The description is purely definitional and lacks transparency about what invoking this tool actually does beyond the schema parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no redundancy. It front-loads the main concept. While it is minimal, it earns a score above 3 because it conveys the essential idea without waste, though it could benefit from a bit more structure or context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, 7 required, multiple enums, no output schema) and the existence of many sibling order-related tools, the description is severely incomplete. It does not explain how iceberg orders differ in execution, what parameters are critical, what the response contains, or any preconditions. The single sentence is insufficient for an agent to understand the full context of use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with individual descriptions, so the baseline is 3. The tool description adds no additional semantic meaning beyond the schema; it merely restates the order type. The schema itself explains parameters like disclosed_quantity and price, so no information gap exists, but the description does not enrich parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function as placing an iceberg order and explains the key concept ('large order split into smaller disclosed quantities'). This distinguishes it from sibling order types like bracket or cover orders, though it could be more explicit about the specific mechanics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use an iceberg order versus alternatives such as create_order, place_bracket_order, or place_cover_order. The description implies it is for large orders but does not state explicit conditions, exclusions, or trade-offs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_active_brokerA
Set the active broker for trading operations in your session
| Name | Required | Description | Default |
|---|---|---|---|
| broker | Yes | Broker name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full disclosure burden. It only reveals that the setting is session-scoped ('in your session'), but does not mention authentication requirements, side effects on existing orders, or return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one short sentence that front-loads the action and scope, containing no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple setter with one enum parameter, but lacks an output schema and annotations. The description omits prerequisites (e.g., authentication) and what the tool returns or changes, leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single 'broker' parameter with an enum and description, so the description need not add parameter details. Baseline of 3 applies due to 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'set' with the resource 'active broker' and the scope 'for trading operations in your session,' clearly distinguishing it from sibling tools like authenticate_broker or list_brokers. It unambiguously conveys the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when/when-not guidance is provided, but the phrase 'for trading operations' implies it should be used before trading activities. Sibling tools like authenticate_broker indicate a potential prerequisite, but this is not mentioned.
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. Dates show when Glama detected each change.
37 tool updates
v2.0.0- First observed
authenticate_broker - First observed
calculate_kite_basket_margins - First observed
calculate_kite_order_charges - First observed
calculate_kite_order_margins - First observed
calculate_order_margin - First observed
cancel_order - First observed
compare_portfolios - First observed
compare_technical_indicators - First observed
create_order - First observed
get_adx - First observed
get_atr - First observed
get_bollinger_bands - First observed
get_broker_login_instructions - First observed
get_consolidated_portfolio - First observed
get_macd - First observed
get_margin_for_orders - First observed
get_margins - First observed
get_order_types_info - First observed
get_orders - First observed
get_portfolio - First observed
get_positions - First observed
get_quote - First observed
get_rsi - First observed
get_session_info - First observed
get_technical_indicators - First observed
get_vwap - First observed
list_brokers - First observed
logout_broker - First observed
modify_order - First observed
place_amo - First observed
place_bracket_order - First observed
place_cover_order - First observed
place_groww_bracket_order - First observed
place_groww_cover_order - First observed
place_groww_gtd_order - First observed
place_iceberg_order - First observed
set_active_broker
TDQS
Tools cluster around similar actions (order placement, margin calculation, technical indicators) with multiple broker-specific variants. While descriptions clarify some distinctions, the overlap between generic tools like get_technical_indicators and specific indicator tools, or get_portfolio vs get_positions, creates ambiguity about which to call.
Most tools follow a consistent verb_noun pattern (get_, place_, calculate_, etc.). Minor inconsistencies include mixing broker-specific prefixes (kite_, groww_) with generic names, and near-duplicate names like calculate_kite_order_margins vs calculate_order_margin that don't clearly signal the broker difference.
At 37 tools, the server feels overly broad for a single MCP server. Many tools are variants that could be consolidated (e.g., individual technical indicator endpoints vs. a single indicator tool), pushing the count well beyond the reasonable range for agent navigation.
The core trading lifecycle is well covered: authentication, orders (create/modify/cancel, multiple order types), portfolio, margins, quotes, and technical indicators. Some gaps exist, such as no consolidated order history and no generic Groww order placement, but agents can achieve most tasks with the available surface.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Open-source MCP server for Zerodha Kite Connect. Portfolio, market data, backtesting, alerts.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for Gainium โ manage trading bots, deals, and balances via AI assistants
Trade across 22+ exchanges and brokers from any MCP-capable AI agent, no install required.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server for integrating with Zerodha Kite API that provides Claude with tools to interact with your Kite trading account, enabling portfolio management, market data access, and order execution.315MIT
- AlicenseBqualityBmaintenanceAI-powered trading toolkit with backtesting, live sentiment, Yahoo Finance data, and 30+ technical analysis tools, integrated as an MCP server for Claude and other AI clients.374,309MIT
- AlicenseNot gradedqualityDmaintenanceThe most complete AI-powered trading toolkit for Claude and MCP clients, offering backtesting, live sentiment, Yahoo Finance, and 30+ technical analysis tools in one MCP server.MIT
- AlicenseNot gradedqualityCmaintenanceMCP Server for Indian Options โ Real-time option chains, Greeks, 34+ strategies, OI analysis, IV smile, Max Pain. Works with Claude Desktop. Replaces Sensibull.289MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/turtlehq-tech/turtlestack-lite'
If you have feedback or need assistance with the MCP directory API, please join our Discord server