MCP server for interacting with Alpaca Markets trading API, enabling asset search, account information retrieval, position management, and order operations.
Server has 6 tools with clear verb-noun naming (get*, create*) and documented schemas. Descriptions are present but generic (avg ~80 chars, below 194-char baseline). Parameter descriptions exist but lack detail on constraints, formats, and dependencies. Output schemas are structured but not explicitly documented in tool definitions. Error handling is minimal, no recovery guidance or actionable error messages. Missing tool annotations (readOnlyHint/destructiveHint). One critical tool (createAlpacaOrder) lacks proper validation messaging.
Creates an alpaca market order based on the order request provided.
Returns the alpaca account information including portofolio value, cash value etc.
Search for Alpaca assets by name or symbol. Returns a list of available assets and their details.
Returns the alpaca open positions.
Returns the alpaca order with the given order id
Returns a list of alpaca orders based on the request parameters.
Descriptions are generic and lack context for LLM selection. 'Returns the alpaca account information including portofolio value, cash value etc.' (typo: 'portofolio') does not explain WHEN to call this vs other tools or what the agent should do with the response.
createAlpacaOrder lacks error recovery guidance. The code validates 'qty XOR notional' but returns a bare ValueError. LLM receives no actionable message like 'Specify either qty (number of shares) or notional (dollar amount), not both.'
No tool annotations present. createAlpacaOrder is destructive (WRITE risk) but lacks destructiveHint. Read-only tools lack readOnlyHint. Agents cannot distinguish safe from risky operations without explicit annotations.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2025-06-18+ | v2 |
Parameter descriptions lack format/constraint details. 'order_id' has no hint it's a UUID or alphanumeric string. 'limit' in getAlpacaOrders has no min/max bounds (baseline: 1 - 100). LLMs may pass invalid values.
Output schemas not documented in tool definitions. Agents must infer response structure from code. schema.AlpacaOrder, schema.GetAlpacaAssetsResponse are not visible in tool registration, only in implementation.