Developers menu
Developers / MCP
Markdown copyMCP
Point an assistant at one address and it reads dealer positioning for every finished SPX session; with a lab key, or after signing in through OAuth, it also drives LAB.
https://mcp.firmtape.com/mcpstreamable HTTP (POST JSON-RPC: initialize, tools/list, tools/call)
Registry com.firmtape/spx-options-gamma
Auth
- Free tools: no account, no key.
lab_tools andoptions_strategy_test: alabkey asAuthorization: Bearer <key>, or OAuth 2.1 (clients that speak MCP authorization register themselves; press Connect and sign in). Without either they are not listed.- The order ledger and Geo have MCP servers of their own, opened by an
ordersand ageokey.
Free tools
| Tool | Arguments | Returns |
|---|---|---|
list_sessions | { limit? } | Finished trading days in the archive, newest first, up to 50 a call. |
get_session | { day } | One session: OHLC, the zero-gamma flip and its crossings, the call and put walls, the net-gamma percentile, ATM IV. |
get_levels | { day } | The level set of one finished day and where the session closed against it. |
get_level_history | { days? } or { from, to } | How the levels moved, up to 40 sessions: each day's flip and walls and its change from the day before. |
get_gex_profile | { day, minute?, book?, expiry_scope?, strikes_around_spot? } | The strike ladder of one minute in the volume, measured or open-interest book. The one tool with a per-address limit. |
get_events | { from?, to?, impact? } | The market calendar of a window, up to 31 days, with what usually followed each kind of event. |
get_market_moving_minutes | { day?, tape_only? } | The minutes of a session that moved the market, with what was happening. |
screen_sessions | { filters..., limit? } | Counts and lists the finished sessions whose closing measurements match the filters, with the matching /screener page. |
get_symbol_gamma | { symbol } | The latest volume and open-interest books of a ticker, or ES, NQ and RTY, with a trust grade. |
get_coverage | { from?, to? } | Which trading days the archive holds in a window and which it is missing. |
search | { query } | Document search over the archive, for clients that only call search and fetch. |
fetch | { id } | One document: an id from search, a FirmTape address or a trading day. |
LAB tools
| Tool | Arguments | Returns |
|---|---|---|
lab_compile | { message, id? } | Turns a plain-words idea into a rule, or amends one. Free, needs a positive balance. |
lab_run | { id, kind: "backtest" | "quant" } | Runs the idea's current conveyor step: 1 credit, refunded on failure. |
options_strategy_test | { legs, entry, ... } | Prices an SPX 0DTE structure over the archive on real quotes: 10 credits. |
lab_state | {} | The account's ideas, the conveyor holder and the credit balance. |
lab_thread | { id } | The chat thread of one idea. |
lab_idea | { id, action } | Desk actions: desk, drop, delete, set. |
Limits
get_gex_profilereads at most 50 distinct days an hour and 150 in 24 hours per client address (an IPv6 address counts by its /64). Days already opened keep answering; a new day answers once the window rolls. The refusal is a tool error that says so.- The other free tools have no per-address limit.
lab_tools spend the account's credits, as the LAB API does.
Errors
- A tool's failure is a result with
isError: trueand a sentence, so the model can read it: an unknown day, a closed window, no credits. - An unknown tool or a protocol error is a JSON-RPC error (
-32602,-32601).
Connect
Claude Code
claude mcp add --transport http firmtape https://mcp.firmtape.com/mcp
Cursor (.cursor/mcp.json)
{ "mcpServers": { "firmtape": { "url": "https://mcp.firmtape.com/mcp" } } }claude.ai and Claude Desktop
Settings, Connectors, Add custom connector: https://mcp.firmtape.com/mcp
Any client, or curl
curl -s https://mcp.firmtape.com/mcp -H "content-type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_session","arguments":{"day":"2026-10-09"}}}'
The other MCP servers
ORDERS
The order ledger, on the same key and the same daily budget as the Orders API.
| Tool |
|---|
orders_day |
orders_latest |
orders_sessions |
Endpoint https://firmtape.com/orders/mcp, key scope orders.
GEO
Geo records; tool calls count toward the month's calls, listing tools does not.
| Tool |
|---|
geo_records |
geo_sources |
geo_coverage |
geo_snapshot |
geo_activity |
geo_series |
geo_latency |
Endpoint https://geo.firmtape.com/mcp, key scope geo.
Measurements of dealer positioning, never a forecast or a trade call. This page is built from FirmTape's public contract, the same files the OpenAPI document is built from; the tests hold them against the route code. Markdown: /docs/developers/mcp.md.