MCP server for trading on Zerodha exchange, enabling stock buying/selling, portfolio viewing, and profit/loss tracking
Critical gaps across all dimensions. Tool names lack action verbs (add-two-numbers, Buy-a-stock, Sell-a-stock use hyphens inconsistently; show-portfolio, show-profit-loss are acceptable). Most parameters completely lack descriptions (null values in schema). Input schemas present but parameter descriptions missing entirely. Output schemas not documented. Error handling absent, placeOrder() silently catches errors with console.error() only. No validation, no recovery guidance. Sell-a-stock returns 'Stock has been bought' (copy-paste bug). add-two-numbers is a demo tool with no business value. Overall: 5 tools with severe documentation and error-handling deficiencies.
Buys the stock on zerodha exchange
Sells the stock on zerodha exchange
Shows my complete portfolio in zerodha
Shows my profit and loss in zerodha
All parameter descriptions are null. Parameters 'stock', 'qty', 'a', 'b' have no descriptions explaining what they control, expected format, or constraints. LLMs cannot infer meaning from names alone.
No output schemas documented. Tools return unstructured text (e.g., 'Stock has been bought'). LLMs cannot parse results or extract IDs for chaining downstream calls.
Error handling is silent and non-actionable. placeOrder() catches exceptions with console.error() only; no error is returned to the LLM. Agents cannot know if an order succeeded or failed.
Copy-paste bug: Sell-a-stock returns 'Stock has been bought' instead of 'Stock has been sold'. Confuses LLMs about what action was taken.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | 2026-07-28+ | v2 |
Credentials hardcoded in trade.ts (apikey, accessToken as string literals). Violates secret-injection pattern. Secrets must never appear in source or tool parameters.