Open Stocks MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SCHWAB_API_KEY | No | Schwab API key | |
| ENABLED_BROKERS | No | Comma-separated list of enabled brokers (e.g., 'robinhood,schwab') | |
| SCHWAB_APP_SECRET | No | Schwab app secret | |
| SCHWAB_TOKEN_PATH | No | Path to save Schwab token (default: ~/.tokens/schwab_token.json) | |
| ROBINHOOD_MFA_CODE | No | SMS/Email MFA code for Robinhood (optional, time-sensitive) | |
| ROBINHOOD_PASSWORD | No | Robinhood account password | |
| ROBINHOOD_USERNAME | No | Robinhood account email | |
| SCHWAB_CALLBACK_URL | No | Schwab callback URL (default: https://127.0.0.1:8182/) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_toolsA | Provides a list of available tools and their descriptions. |
| account_infoB | Gets basic Robinhood account information. |
| portfolioB | Provides a high-level overview of the portfolio. |
| stock_ordersB | Retrieves a list of recent stock order history and their statuses. |
| options_ordersA | Retrieves a list of recent options order history and their statuses. |
| account_detailsA | Gets comprehensive account details including buying power and cash balances. |
| positionsB | Gets current stock positions with quantities and values. |
| build_holdingsB | Builds comprehensive holdings with dividend information and performance metrics. Returns detailed holdings data including cost basis, equity, dividends, and performance. |
| build_user_profileB | Builds comprehensive user profile with equity, cash, and dividend totals. Returns complete financial profile including total equity, cash balances, and dividend totals. |
| day_tradesB | Gets pattern day trading information and tracking. Returns day trade count, remaining day trades, PDT status, and buying power information. |
| session_statusA | Gets current session status and authentication information. |
| broker_statusA | Gets authentication status for all configured brokers. |
| list_brokersA | Lists all registered brokers and their availability. |
| rate_limit_statusA | Gets current rate limit usage and statistics. |
| metrics_summaryB | Gets comprehensive metrics summary for monitoring. |
| health_checkA | Gets health status of the MCP server. |
| stock_priceB | Gets current stock price and basic metrics. |
| stock_infoB | Gets detailed company information and fundamentals. |
| search_stocks_toolB | Searches for stocks by symbol or company name. |
| market_hoursB | Gets current market hours and status. |
| price_historyC | Gets historical price data for a stock. |
| instruments_by_symbolsA | Gets detailed instrument metadata for multiple symbols. |
| find_instrumentsC | Searches for instrument information by various criteria. |
| stock_quote_by_idA | Gets stock quote using Robinhood's internal instrument ID. |
| pricebook_by_symbolC | Gets Level II order book data for a symbol (requires Gold subscription). |
| dividendsB | Gets all dividend payment history for the account. |
| total_dividendsA | Gets total dividends received across all time. |
| dividends_by_instrumentA | Gets dividend history for a specific stock symbol. |
| interest_paymentsA | Gets interest payment history from cash management. |
| stock_loan_paymentsA | Gets stock loan payment history from the stock lending program. |
| top_movers_sp500A | Gets top S&P 500 movers for the day. |
| top_100_stocksA | Gets top 100 most popular stocks on Robinhood. |
| top_moversB | Gets top 20 movers on Robinhood. |
| stocks_by_tagA | Gets stocks filtered by market category tag. |
| stock_ratingsB | Gets analyst ratings for a stock. |
| stock_earningsB | Gets earnings reports for a stock. |
| stock_newsB | Gets news stories for a stock. |
| stock_splitsB | Gets stock split history for a stock. |
| stock_eventsA | Gets corporate events for a stock (for owned positions). |
| stock_level2_dataA | Gets Level II market data for a stock (Gold subscription required). |
| options_chainsC | Gets complete option chains for a stock symbol. |
| find_optionsB | Finds tradable options with optional filtering. |
| option_market_dataC | Gets market data for a specific option contract. |
| option_historicalsB | Gets historical price data for an option contract. |
| aggregate_option_positionsA | Gets aggregated option positions collapsed by underlying stock. |
| all_option_positionsB | Gets all option positions ever held. |
| open_option_positionsB | Gets currently open option positions. |
| open_option_positions_with_detailsA | Gets currently open option positions with enriched details including call/put type. |
| all_watchlistsB | Gets all user-created watchlists. |
| watchlist_by_nameA | Gets contents of a specific watchlist by name. |
| add_to_watchlistC | Adds symbols to a watchlist. |
| remove_from_watchlistC | Removes symbols from a watchlist. |
| watchlist_performanceA | Gets performance metrics for a watchlist. |
| unified_watchlistsA | Gets all watchlists aggregated across supported brokers. |
| unified_watchlist_by_nameB | Gets a specific watchlist by name across supported brokers. |
| unified_add_to_watchlistB | Adds symbols to a watchlist across supported brokers. |
| unified_remove_from_watchlistB | Removes symbols from a watchlist across supported brokers. |
| notificationsB | Gets account notifications and alerts. |
| latest_notificationB | Gets the most recent notification. |
| margin_callsB | Gets margin call information. |
| margin_interestB | Gets margin interest charges and rates. |
| subscription_feesB | Gets Robinhood Gold subscription fees. |
| referralsA | Gets referral program information. |
| account_featuresB | Gets comprehensive account features and settings. |
| account_profileB | Gets trading account profile and configuration. |
| basic_profileB | Gets basic user profile information. |
| investment_profileB | Gets investment profile and risk assessment. |
| security_profileB | Gets security profile and settings. |
| user_profileC | Gets comprehensive user profile information. |
| complete_profileA | Gets complete user profile combining all profile types. |
| account_settingsC | Gets account settings and preferences. |
| buy_stock_marketB | Places a market buy order for a stock. |
| sell_stock_marketB | Places a market sell order for a stock. |
| buy_stock_limitB | Places a limit buy order for a stock. |
| sell_stock_limitB | Places a limit sell order for a stock. |
| sell_stock_stop_lossC | Places a stop loss sell order for a stock. |
| buy_option_limitC | Places a limit buy order for an option. |
| sell_option_limitB | Places a limit sell order for an option. |
| option_credit_spreadB | Places a credit spread order (sell short option, buy long option). |
| option_debit_spreadB | Places a debit spread order (buy long option, sell short option). |
| cancel_stock_order_by_idC | Cancels a specific stock order. |
| cancel_option_order_by_idC | Cancels a specific option order. |
| cancel_all_stock_orders_toolB | Cancels all open stock orders. |
| cancel_all_option_orders_toolB | Cancels all open option orders. |
| open_stock_ordersB | Retrieves all open stock orders. |
| open_option_ordersB | Retrieves all open option orders. |
| schwab_account_numbersB | Get Schwab account numbers and their hashes. |
| schwab_accountB | Get Schwab account details including balances and positions. |
| schwab_accountsA | Get all Schwab linked accounts with balances and positions. |
| schwab_portfolioB | Get Schwab portfolio positions for a specific account. |
| schwab_account_balancesA | Get account balances for a Schwab account. |
| schwab_check_margin_statusC | Derive margin-call status from Schwab account balances. |
| schwab_get_margin_interestC | Get Schwab margin-interest charges from transaction history. |
| schwab_get_user_preferencesC | Get Schwab user preferences including account list and streamer info. Consolidates account profile, settings, and user profile data. |
| schwab_get_all_account_dataA | Get a complete snapshot of all Schwab accounts and user preferences. Aggregates user preferences, account numbers, and all account data with positions. |
| schwab_build_user_profileB | Build a normalized Schwab user profile from account and preference data. Returns a complete financial profile including total equity, cash balances, and position counts across all accounts. |
| aggregated_portfolioA | Get a unified portfolio view aggregated across all registered brokers. |
| broker_comparisonA | Get side-by-side broker comparison for pricing, holdings, and orders. |
| schwab_quoteB | Get current quote for a stock symbol from Schwab. |
| schwab_quotesB | Get current quotes for multiple stock symbols from Schwab. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 150 tools
Many tools are near-duplicates or have heavily overlapping purposes, such as open_option_positions, open_option_positions_with_details, all_option_positions, and aggregate_option_positions. The same problem appears across account profile tools, search tools, dividend tools, and order tools, making reliable tool selection very difficult.
Naming conventions are wildly inconsistent: some tools use verb_noun, some use noun_verb, some are prefixed schwab_ or unified_, and some end in _tool. Similar operations use different verbs and structures, such as buy_stock_market, schwab_buy_stock_limit, schwab_order_buy_option_limit, and cancel_all_option_orders_tool.
150 tools is an extreme count for an MCP server, far beyond what an agent can reasonably navigate. The high count is largely caused by redundant variants and broker-specific duplicates rather than genuinely distinct capabilities.
The server does cover a broad range of brokerage functionality: stock and option trading, orders, positions, watchlists, market data, dividends, transactions, and account info. However, there are notable gaps and rough edges, such as no clear watchlist create/delete lifecycle, several undocumented helper tools, and inconsistent coverage between Robinhood and Schwab.