Local-first, read-only MCP server for the uSMART Singapore Open API.
usmart-mcp demonstrates solid tool definition quality with consistent naming, clear descriptions, and proper input schemas. All 9 tools follow verb_noun naming convention (health_check, get_account_summary, list_orders, etc.). Descriptions are concise (10-100 chars) and action-oriented. Input schemas use Zod validation with type constraints and descriptions. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are properly applied to read-only tools. However, output schemas are not explicitly documented in tool definitions, responses are returned as JSON without formal schema declarations. Error handling is minimal; tools return raw connector responses without recovery guidance. The server lacks pagination documentation in descriptions despite implementing it (e.g., get_positions accepts page/pageSize but description doesn't mention limits or total count).
Opens the local uSMART Open API configuration form.
Returns the authorized account summary.
Returns up to 200 daily or weekly bars for one permitted symbol.
Returns a bounded page of holdings.
Returns quotes for up to 20 permitted symbols.
Returns only the masked local configuration status.
Checks the read-only local connector without exposing credentials.
Output schemas not documented. Tools return JSON responses but lack formal schema declarations in tool definitions. LLMs cannot predict response structure for planning downstream calls.
Pagination not documented in descriptions. get_positions and list_orders accept page/pageSize parameters but descriptions don't mention limits, total count, or pagination behavior. Agents cannot determine when to fetch next page.
No error recovery guidance. Tools return raw connector responses without actionable error messages. If a request fails, LLM has no guidance on retry strategy or alternative actions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2025-06-18+ | v2 |
Returns bounded open or historical orders.
Saves user-entered Open API credentials to macOS Keychain.
Interactive tools lack input validation descriptions. save_usmart_configuration accepts credential strings but descriptions don't specify format constraints (e.g., PEM format validation, minimum key length).
configure_usmart and get_usmart_configuration_status have no input schema but return configuration data. Unclear what parameters they accept or what the response structure is.