MCP server for executing stock trades and viewing portfolio on Zerodha exchange
Critical failures across all dimensions. Tool names lack action verbs (buy-stock, sell-stock use hyphens instead of verb_noun convention). Descriptions are present but generic and lack context on irreversibility, prerequisites, or recovery guidance. Input schemas exist but parameters lack descriptions entirely, 'stock' and 'qty' have no guidance on format, range, or constraints. No output schema documentation. Error handling is absent; placeOrder() silently catches exceptions without returning actionable feedback. The server exposes real financial operations (BUY/SELL orders) without confirmation, dry-run, or permission gates. Credentials hardcoded in trade.ts (apiKey, accessToken) violate secret-injection pattern. No pagination, no structured output beyond plain text, no error classification.
Buys the stock on zerodha exchange for the users. It executes a real order for the user on the exchange
Sells the stock on zerodha exchange for the users. It executes a real order to sell the stock for the user on the exchange
Shows my complete portfolio in zerodha
Credentials hardcoded in source (apiKey, accessToken in trade.ts). Secrets must never appear in code or tool parameters; use environment variables or vault injection.
Irreversible financial operations (buy-stock, sell-stock) lack confirmation, dry-run, or permission gates. Agents can execute real trades without safeguards.
Input parameters (stock, qty) have no descriptions. LLMs cannot infer format constraints, valid ranges, or expected values. 'stock' could be 'AAPL' or 'Apple Inc.', ambiguous.
Error handling is silent (catch blocks log to console but return no actionable feedback). placeOrder() failures do not propagate to the LLM; agents cannot retry or recover.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Tool names use hyphens (buy-stock, sell-stock) instead of verb_noun convention (buy_stock, sell_stock). Inconsistent with LLM parsing conventions and production baselines.