This is the trading MCP server. It is separate from the docs MCP server at
https://docs.limitless.exchange/mcp, which only exposes this documentation as searchable context. Connect both if you want an assistant that can look up API docs and act on the exchange.How authorization works
The server implements OAuth 2.1 with the standard discovery flow, so any MCP client with remote server support can connect without pre-registered credentials:- The client discovers the OAuth endpoints from
https://api.limitless.exchange/.well-known/oauth-protected-resource. - The client registers itself automatically via dynamic client registration. The server accepts only public clients with PKCE (
S256). - Your browser opens a Limitless consent page. Log in with your Limitless account and approve the connection.
- The client exchanges the authorization code for an access token with the
tradingscope. That is the only scope the server issues.
walletContext object identifying that wallet. This keeps the assistant from confusing it with your login or embedded wallet.
Connect an assistant
Any MCP client that supports remote servers with OAuth works. For example, with Claude Code:Available tools
Market discovery
These tools work for any authenticated connection:
To browse by category, the assistant first calls
list_market_categories, then passes a returned path (for example /sport) as categoryPath to list_markets. Category responses include categoryFilters (filter groups with option values) that can be passed back as categoryFilter to narrow results further.
Portfolio reads
Trading
Order approval flow
The server is non-custodial. The assistant never holds your keys and cannot sign or submit orders on its own.place_orders only creates a proposal:
- The assistant calls
place_orderswith up to 10 limit orders. Each order specifies a market slug, side (BUY/SELL), outcome index (0= YES,1= NO), a limit price between 0 and 1, shares, and an order type (GTCorFAK). Each order must be worth at least $1 (price × shares). - The server validates the orders, attaches a fee preview per order, and returns an
approvalUrlonlimitless.exchange. The proposal expires after 600 seconds. - You open the approval URL in your browser, log in with your own Limitless session, review the exact orders and fee previews, and approve or reject them. Approval requires your browser session. The assistant’s token cannot approve its own proposal.
- On approval, your wallet signs and submits the orders. The assistant polls
check_order_statuswith the returnedstateto learn the outcome.
ifTaker) calculated as a full taker fill at the limit price, and for GTC orders also a maker scenario (ifMaker). These are conditional scenarios, not predictions. Actual fees are calculated per fill.
Response conventions
- Token and collateral amounts are raw integer strings. Format them with each market’s
collateralToken.decimals(USDC uses 6). Prices are decimals between 0 and 1. - List and search responses default to
orderableOnly: true. Markets have anorderableflag; groups havehasOrderableMarketsinstead, and their child markets come fromget_market_group. - Position snapshots are cached and can lag recent fills, transfers, or redemptions.
- Orderbook midpoints are arithmetic and not executable prices.
Related pages
- Build a Trading Agent for a full agent built on the REST API and SDKs
- Authentication for API keys used outside of MCP
- Fees for the fee schedule behind the previews