Model Context Protocol server for Charles Schwab API access with OAuth2 authentication and comprehensive market data and trading tools
The Schwab MCP server exhibits moderate definition quality with significant gaps in parameter documentation and output schema specification. While tool names follow verb_noun conventions (getQuotes, getAccounts, placeOrder), many lack detailed parameter descriptions. Schema visibility is mixed: some tools show parameter types but lack comprehensive documentation. Descriptions are present but often minimal (under 100 chars). Critical issues: incomplete parameter schemas for 15+ tools, no documented output schemas, and missing parameter type information for several tools. The server registers 23 tools but evidence from provided code shows only partial schema implementations. Error handling is present via toolError() but lacks actionable recovery guidance per pattern:recovery-guide.
Cancel order by order id for a specific account
Get account
Get account numbers
Get accounts
Get instrument by cusip
Get market hours for different markets
Get market hours for a specific market
Get movers for a specific index
searchInstruments, placeOrder, and replaceOrder lack visible input schemas, schema validation cannot be verified
No documented output schemas for any tool, LLMs cannot infer response structure or plan downstream calls
Parameter descriptions are minimal or missing for 10+ tools, does not meet the 10 - 1024 character guideline
placeOrder and replaceOrder descriptions do not explicitly state they are state-modifying (irreversible), violates pattern:command-tool
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 10 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 53 | - | v1 |
Get option chain for an optionable symbol
Get option expiration chain for an optionable symbol
Get order by order id for a specific account
Get orders
Get orders by account number
Get price history for a specific symbol and date range
Get quote for a one symbol
Get quotes for a list of symbols
Get transaction
Get transactions
Get user preference
Place order for a specific account
Replace order by order id for a specific account
Search for instruments by symbols and projections
Check Schwab MCP server status
No recovery guidance in error responses, toolError() returns error details but does not suggest next steps
State-modifying tools (placeOrder, replaceOrder, cancelOrder) lack dry-run or confirmation mechanism
placeOrder and replaceOrder parameters are incomplete, orderData/order details not visible in schema
No pagination support visible in list tools (getAccounts, getOrders, getTransactions), could return unbounded results