KalTrader MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KALTRADER_HOME | No | Where settings live. Defaults to ~/.kaltrader. | ~/.kaltrader |
| KALSHI_API_KEY_ID | No | API key ID. Skips the keystore entirely. | |
| KALSHI_PRIVATE_KEY | No | The private key itself. Escaped \n is fine. | |
| KALTRADER_TOOLSETS | No | Comma-separated list, or all. | markets,exchange,portfolio,orders |
| KALTRADER_LOG_LEVEL | No | debug, info, warn, or error. | |
| KALTRADER_READ_ONLY | No | true to block every write. | false |
| KALTRADER_ENVIRONMENT | No | demo or production. | demo |
| KALSHI_PRIVATE_KEY_FILE | No | Path to the private key file, instead of the above. | |
| KALTRADER_MAX_ORDER_USD | No | Per-order dollar limit. | |
| KALTRADER_PAPER_TRADING | No | false to drop the paper trading tools. | true |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| kalshi_server_infoA | Report how this server is configured: which Kalshi environment it targets, whether an API key is loaded, which toolsets are on, and any limits in force. Check this first if a call fails unexpectedly. |
| kalshi_list_endpointsA | Search every Kalshi API endpoint, including ones not currently loaded as their own tool. Use this to find an endpoint by keyword, then call it with kalshi_call_endpoint. Returns the method, path, toolset, and whether a dedicated tool for it is loaded right now. |
| kalshi_describe_endpointA | Show the full input schema for one Kalshi endpoint: every path, query, and body field with its type and description. Look here before calling kalshi_call_endpoint. |
| kalshi_call_endpointA | Call any Kalshi API endpoint directly, including ones with no dedicated tool loaded. Paths are relative to /trade-api/v2, so use "/markets" rather than the full URL. Prefer a dedicated tool when one exists, since those validate arguments for you. |
| kalshi_stream_collectA | Watch Kalshi's WebSocket feed for a few seconds and return the messages that arrive. Useful for seeing live order book changes, trades, or your own fills as they happen. This is a one-shot capture, not an ongoing subscription: it connects, listens for the window you ask for, then disconnects. |
| kalshi_paper_orderA | Place a simulated order against the live Kalshi book. Nothing here reaches Kalshi: no real order is placed and no real money moves. Prices, fills, and settlement follow the live exchange, so the numbers track a real strategy, but the position exists only on this computer. Market orders fill immediately by walking the real order book, paying Kalshi's usual taker fee. Limit orders fill any part that crosses right now and leave the rest resting, to be matched the next time a paper tool runs. The portfolio is created on first use with a starting balance you can set here or with kalshi_paper_reset. |
| kalshi_paper_portfolioA | Value a simulated portfolio against live Kalshi prices: cash, every open position marked at what it could be sold for right now, realized and unrealized P&L, fees, and total return. Call this to monitor paper positions over time. It also brings the portfolio up to date first, so it is where settled markets get paid out and resting orders get matched. |
| kalshi_paper_cancelA | Cancel a resting simulated order and release the cash it was holding. Use kalshi_paper_portfolio to see order ids. |
| kalshi_paper_resetA | Create a simulated portfolio, or wipe an existing one back to a fresh cash balance. Positions, orders, and history are discarded. Use this to start a new experiment, for example "paper trade $50". |
| kalshi_amend_order_v2A | Amend Order (V2) Endpoint for amending the price and/or max fillable count of an existing event-market order using the V2 request/response shape. The request |
| kalshi_apply_subaccount_transferB | Transfer Between Subaccounts Transfers funds between the authenticated user's subaccounts. Use 0 for the primary account, or 1-63 for numbered subaccounts. Set exchange_index to apply the transfer on a specific exchange shard (defaults to 0). Calls POST /portfolio/subaccounts/transfer. |
| kalshi_batch_cancel_orders_v2A | Batch Cancel Orders (V2) Endpoint for cancelling a batch of event-market orders using the V2 response shape. The maximum batch size scales with your tier's write budget — see Rate Limits and Tiers. Calls DELETE /portfolio/events/orders/batched. |
| kalshi_batch_create_orders_v2A | Batch Create Orders (V2) Endpoint for submitting a batch of event-market orders using the V2 request/response shape. The maximum batch size scales with your tier's write budget — see Rate Limits and Tiers. Calls POST /portfolio/events/orders/batched. |
| kalshi_batch_get_market_candlesticksA | Batch Get Market Candlesticks Endpoint for retrieving candlestick data for multiple markets. - Accepts up to 100 market tickers per request - Returns up to 10,000 candlesticks total across all markets - Returns candlesticks grouped by market_id - Optionally includes a synthetic initial candlestick for price continuity (see |
| kalshi_cancel_order_v2A | Cancel Order (V2) Endpoint for cancelling event-market orders using the V2 response shape. Returns |
| kalshi_create_order_v2A | Create Order (V2) Endpoint for submitting event-market orders using the V2 request/response shape (single-book |
| kalshi_create_subaccountA | Create Subaccount Creates a new subaccount for the authenticated user. This endpoint is available to all users on the Advanced API tier and above. Subaccounts are numbered sequentially starting from 1. Maximum 63 numbered subaccounts per user (64 including the primary account). Calls POST /portfolio/subaccounts. |
| kalshi_decrease_order_v2A | Decrease Order (V2) Endpoint for decreasing the remaining count of an existing event-market order using the V2 request/response shape. Exactly one of |
| kalshi_get_balanceA | Get Balance Endpoint for getting the balance and portfolio value of a member. Both values are returned in cents. This endpoint also accepts API keys with the 'read::portfolio_balance' scope. Calls GET /portfolio/balance. |
| kalshi_get_depositsB | Get Deposits Endpoint for getting the member's deposit history. Calls GET /portfolio/deposits. |
| kalshi_get_eventA | Get Event Endpoint for getting data about an event by its ticker. An event represents a real-world occurrence that can be traded on, such as an election, sports game, or economic indicator release. Events contain one or more markets where users can place trades on different outcomes. All events are accessible through this endpoint, even if their associated markets are older than the historical cutoff. Calls GET /events/{event_ticker}. |
| kalshi_get_event_fee_changesB | Get Event Fee Changes Event fees are an override layered on top of the parent series' fee structure. If |
| kalshi_get_event_forecast_percentilesA | Get Event Forecast Percentile History Endpoint for getting the historical raw and formatted forecast numbers for an event at specific percentiles. Calls GET /series/{series_ticker}/events/{ticker}/forecast_percentile_history. |
| kalshi_get_event_metadataA | Get Event Metadata Endpoint for getting metadata about an event by its ticker. Returns only the metadata information for an event. Calls GET /events/{event_ticker}/metadata. |
| kalshi_get_eventsA | Get Events Get all events. This endpoint excludes multivariate events. To retrieve multivariate events, use the GET /events/multivariate endpoint. All events are accessible through this endpoint, even if their associated markets are older than the historical cutoff. Calls GET /events. |
| kalshi_get_exchange_scheduleB | Get Exchange Schedule Endpoint for getting the exchange schedule. Calls GET /exchange/schedule. |
| kalshi_get_exchange_statusA | Get Exchange Status Endpoint for getting the exchange status. Calls GET /exchange/status. |
| kalshi_get_fillsA | Get Fills Endpoint for getting all fills for the member. A fill is when a trade you have is matched. Fills that occurred before the historical cutoff are only available via |
| kalshi_get_filters_for_sportsA | Get Filters for Sports Retrieve available filters organized by sport. This endpoint returns filtering options available for each sport, including scopes and competitions. It also provides an ordered list of sports for display purposes. Calls GET /search/filters_by_sport. |
| kalshi_get_incentive_programsB | Get Incentives List incentives with optional filters. Incentives are rewards programs for trading activity on specific markets. Calls GET /incentive_programs. |
| kalshi_get_marketA | Get Market Endpoint for getting data about a specific market by its ticker. A market represents a specific binary outcome within an event that users can trade on (e.g., "Will candidate X win?"). Markets have yes/no positions, current prices, volume, and settlement rules. Calls GET /markets/{ticker}. |
| kalshi_get_market_candlesticksA | Get Market Candlesticks Time period length of each candlestick in minutes. Valid values: 1 (1 minute), 60 (1 hour), 1440 (1 day). Candlesticks for markets that settled before the historical cutoff are only available via |
| kalshi_get_market_candlesticks_by_eventA | Get Event Candlesticks End-point for returning aggregated data across all markets corresponding to an event. Calls GET /series/{series_ticker}/events/{ticker}/candlesticks. |
| kalshi_get_market_orderbookA | Get Market Orderbook Endpoint for getting the current order book for a specific market. The order book shows all active bid orders for both yes and no sides of a binary market. It returns yes bids and no bids only (no asks are returned). This is because in binary markets, a bid for yes at price X is equivalent to an ask for no at price (100-X). For example, a yes bid at 7¢ is the same as a no ask at 93¢, with identical contract sizes. Each side shows price levels with their corresponding quantities and order counts… Calls GET /markets/{ticker}/orderbook. |
| kalshi_get_market_orderbooksA | Get Multiple Market Orderbooks Endpoint for getting the current order books for multiple markets in a single request. The order book shows all active bid orders for both yes and no sides of a binary market. It returns yes bids and no bids only (no asks are returned). This is because in binary markets, a bid for yes at price X is equivalent to an ask for no at price (100-X). For example, a yes bid at 7¢ is the same as a no ask at 93¢, with identical contract sizes. Each side shows price levels with their corresponding quantit… Calls GET /markets/orderbooks. |
| kalshi_get_marketsC | Get Markets Filter by market status. Possible values: |
| kalshi_get_milestoneA | Get Milestone Endpoint for getting data about a specific milestone by its ID. Calls GET /milestones/{milestone_id}. |
| kalshi_get_milestonesC | Get Milestones Minimum start date to filter milestones. Format: RFC3339 timestamp Calls GET /milestones. |
| kalshi_get_multivariate_eventsA | Get Multivariate Events Retrieve multivariate (combo) events. These are dynamically created events from multivariate event collections. Supports filtering by series and collection ticker. Calls GET /events/multivariate. |
| kalshi_get_orderB | Get Order Endpoint for getting a single order. Calls GET /portfolio/orders/{order_id}. |
| kalshi_get_order_queue_positionA | Get Order Queue Position Endpoint for getting an order's queue position in the order book. This represents the amount of orders that need to be matched before this order receives a partial or full match. Queue position is determined using a price-time priority. Calls GET /portfolio/orders/{order_id}/queue_position. |
| kalshi_get_order_queue_positionsA | Get Queue Positions for Orders Endpoint for getting queue positions for all resting orders. Queue position represents the number of contracts that need to be matched before an order receives a partial or full match, determined using price-time priority. Calls GET /portfolio/orders/queue_positions. |
| kalshi_get_ordersA | Get Orders Restricts the response to orders that have a certain status: resting, canceled, or executed. Orders that have been canceled or fully executed before the historical cutoff are only available via |
| kalshi_get_positionsC | Get Positions Restricts the positions to those with any of following fields with non-zero values, as a comma separated list. The following values are accepted: position, total_traded Calls GET /portfolio/positions. |
| kalshi_get_seriesA | Get Series Endpoint for getting data about a specific series by its ticker. A series represents a template for recurring events that follow the same format and rules (e.g., "Monthly Jobs Report", "Weekly Initial Jobless Claims", "Daily Weather in NYC"). Series define the structure, settlement sources, and metadata that will be applied to each recurring event instance within that series. Calls GET /series/{series_ticker}. |
| kalshi_get_series_fee_changesC | Get Series Fee Changes Calls GET /series/fee_changes. |
| kalshi_get_series_listA | Get Series List Endpoint for getting data about multiple series with specified filters. A series represents a template for recurring events that follow the same format and rules (e.g., "Monthly Jobs Report", "Weekly Initial Jobless Claims", "Daily Weather in NYC"). This endpoint allows you to browse and discover available series templates by category. Calls GET /series. |
| kalshi_get_settlementsB | Get Settlements Endpoint for getting the member's settlements historical track. Calls GET /portfolio/settlements. |
| kalshi_get_structured_targetA | Get Structured Target Endpoint for getting data about a specific structured target by its ID. Calls GET /structured_targets/{structured_target_id}. |
| kalshi_get_structured_targetsB | Get Structured Targets Page size (min: 1, max: 2000) Calls GET /structured_targets. |
| kalshi_get_subaccount_balancesA | Get All Subaccount Balances Gets balances for all subaccounts including the primary account. Calls GET /portfolio/subaccounts/balances. |
| kalshi_get_subaccount_nettingA | Get Subaccount Netting Gets the netting enabled settings for all subaccounts. Calls GET /portfolio/subaccounts/netting. |
| kalshi_get_subaccount_transfersA | Get Subaccount Transfers Gets a paginated list of all transfers between subaccounts for the authenticated user. Calls GET /portfolio/subaccounts/transfers. |
| kalshi_get_tags_for_series_categoriesA | Get Tags for Series Categories Retrieve tags organized by series categories. This endpoint returns a mapping of series categories to their associated tags, which can be used for filtering and search functionality. Calls GET /search/tags_by_categories. |
| kalshi_get_total_resting_order_valueA | Get Total Resting Order Value Endpoint for getting the total value, in cents, of resting orders. This endpoint is only intended for use by FCM members (rare). Note: If you're uncertain about this endpoint, it likely does not apply to you. Calls GET /portfolio/summary/total_resting_order_value. |
| kalshi_get_tradesA | Get Trades Endpoint for getting all trades for all markets. A trade represents a completed transaction between two users on a specific market. Each trade includes the market ticker, price, quantity, and timestamp information. Block trades are included in the response by default and identified by the |
| kalshi_get_user_data_timestampA | Get User Data Timestamp There is typically a short delay before exchange events are reflected in the API endpoints. Whenever possible, combine API responses to PUT/POST/DELETE requests with WebSocket data to obtain the most accurate view of the exchange state. This endpoint provides an approximate indication of when the data from the following endpoints was last validated: GetBalance, GetOrder(s), GetFills, GetPositions Calls GET /exchange/user_data_timestamp. |
| kalshi_get_withdrawalsA | Get Withdrawals Endpoint for getting the member's withdrawal history. Calls GET /portfolio/withdrawals. |
| kalshi_intra_exchange_instance_transferB | Intra Account Transfer Endpoint for transferring funds within the same account. Calls POST /portfolio/intra_exchange_instance_transfer. |
| kalshi_update_subaccount_nettingA | Update Subaccount Netting Updates the netting enabled setting for a specific subaccount. Use 0 for the primary account, or 1-63 for numbered subaccounts. Calls PUT /portfolio/subaccounts/netting. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SakethSripada/KalTraderMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server