MCP server for Upstox trading API integration, providing tools for portfolio management, order tracking, and account information
This server has 10 read-only tools for the Upstox trading API. While all tools are present with schemas and basic descriptions, there are significant gaps in definition quality that prevent this from being production-ready. All tools are named with the 'get_' verb (good naming convention), but descriptions are brief and lack context about when to use each tool or what makes them distinct. Parameter descriptions are minimal, most just say 'Access token is required' or 'Order ID is required' without explaining formats, constraints, or why the parameter matters. Output schemas are not documented in the code, we see the input Zod schemas but not what fields are returned or how the agent should interpret results. Error handling is absent; tools throw generic 'Error occurred while calling Upstox API' messages that give agents no recovery guidance. The server also exposes access tokens as tool parameters (critical security issue), violating pattern:secret-injection. No tool annotations (readOnlyHint, idempotentHint) are present to guide agent reasoning about retry safety and side effects, though all tools are READ_ONLY so they should be marked as such.
Retrieve funds and margin information for a user account, optionally filtered by market segment
Retrieve long-term holdings from the user's portfolio
Retrieve Margin Trading Facility (MTF) positions from the user's portfolio
Retrieve the order book containing all orders placed by the user
Retrieve detailed information about a specific order by order ID
Retrieve order history, optionally filtered by order ID or tag
Access tokens exposed as tool parameters instead of server-side secret injection
Output schemas are not documented; tool responses are not visible in source code
Error handling is generic and does not guide agent recovery; only 'Error occurred while calling Upstox API' is returned
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Retrieve trades associated with a specific order ID
Retrieve short-term positions from the user's portfolio
Retrieve user profile information from Upstox
Retrieve all trades executed for the user on the current day
Parameter descriptions are minimal and lack context; most only repeat the parameter name ('Access token is required') without explaining format, constraints, or usage context
Tool descriptions are too brief (30-70 chars); baseline for production tools is 194 chars. Agents cannot determine when to use get-holdings vs get-positions or get-order-trades vs get-trades without better context
No tool annotations (readOnlyHint, idempotentHint) present; agent cannot infer retry safety or side-effect profile without explicit hints
get-funds-margin has segment parameter with enum constraint, but other tools with optional parameters (get-order-details with orderId, get-order-trades with orderId) do not document whether these are required or optional in descriptions