Server has 9 tools with complete input schemas and descriptions present for all tools and parameters. Naming follows verb_noun convention (get_*, search_*). However, descriptions are inconsistent in depth, some are terse (get_accounts: 24 chars), others adequate (get_balances: 180+ chars). No output schemas documented. Parameters lack enums where appropriate (stateFilter should be enum: All|Open|Closed). No error handling guidance in descriptions. No tool annotations (readOnlyHint, etc.). Composition is sound, each tool has single responsibility. Missing pagination guidance for list-returning tools (get_positions, get_orders, search_symbols). Baseline: avg tool description 194 chars; this server averages ~90 chars. Avg params per tool: 2.2 (below baseline 4, which is good for simplicity).
Get all Questrade accounts
Get balances for a specific account. Returns an object keyed by currency showing each currency's holdings in their native denomination — CAD holdings in CAD, USD holdings in USD. Report them separately. To compute a combined total, apply a CAD/USD exchange rate.
Get historical candle data for a symbol
Get orders for a specific account
Get positions for a specific account
Get market quotes for specific symbols
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields without knowing response structure. get_accounts, get_positions, get_orders, search_symbols all return lists but lack pagination metadata (total_count, next_cursor, limit).
Enum constraints missing. stateFilter in get_orders accepts 'All|Open|Closed' but is declared as free-form string. LLMs will hallucinate invalid values. interval in get_candles accepts 'OneMinute|FiveMinutes|...' but no enum constraint.
Terse descriptions for 5 tools (get_accounts, get_quotes, get_symbol, search_symbols, refresh_token) are 24-50 chars, below baseline 194 chars. Descriptions lack context on WHEN to use each tool vs similar ones, and do not explain return structure or prerequisites.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Get detailed information for a specific symbol
Refresh the API access token
Search for symbols by prefix
No error handling guidance. Descriptions do not explain what to do if a call fails (e.g., 'If account not found, call get_accounts() first'). No indication of retryability or whether errors are user-fixable.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint metadata. All tools are read-only (safe to retry), but this is not declared in the schema, forcing LLMs to infer safety.