# FirmTape docs > One guide a product: what it measures, where to find it, how to read it in thirty seconds, and every feature written up step by step. Every page below is the Markdown copy of a page on https://firmtape.com; drop the .md for the HTML. ## Start here - [Docs home](https://firmtape.com/docs.md): what the terminal can and cannot tell you, the guides, the reference - [Features](https://firmtape.com/features.md): every product in three groups, with screenshots - [Every guide on one page](https://firmtape.com/guide.md): all the guides below in one document ## REPLAY Every finished session, minute by minute, plus today's levels delayed and the free tools, no account - [REPLAY product page](https://firmtape.com/features/replay.md): Replay any finished SPX session since April 2022 in the FirmTape terminal, minute by minute: the zero-gamma flip, the walls, the levels of interest and the strike ladder. With the screener, the calendar, today's levels delayed, gamma for 123 tickers and a free MCP server. No account. - [REPLAY guide](https://firmtape.com/docs/replay.md): 19 features written up: The terminal, free on every finished day, The session archive and session pages, The session calendar, Sessions by event, The week page, The session screener, The tape's receipt, The playback bar, Share a link to a view, Daily replay clips, Most active SPX options, Expiration calendar, Now: today's levels, delayed, Market calendar and pulse, Learn the terms, MCP server, Pages for AI assistants, Gamma by symbol, ES, NQ and RTY levels - [The session archive and session pages](https://firmtape.com/features/replay/session-archive.md): Every finished SPX session since April 2022 with its zero-gamma flip, call resistance and put support read at 15:45 ET and its regime at the close, each opening a free minute-by-minute replay. No account. - [MCP server](https://firmtape.com/features/replay/mcp-server.md): Connect an AI assistant to FirmTape's MCP server: free tools for every finished SPX session, the flip, the walls, level history and ticker gamma, plus LAB backtests with a Lab token. ## LIVE The SPX dealer book every second, with alerts, ASK, the structure tester and the levels in your own platform - [LIVE product page](https://firmtape.com/features/live.md): The SPX dealer gamma book rebuilt every second from the options tape: the zero-gamma flip, call and put walls, heatmaps and readouts on one chart, alerts to Telegram, push and webhooks, ASK, the OPTIONS tester and the levels inside your platform. - [LIVE guide](https://firmtape.com/docs/live.md): 54 features written up: The chart at a glance, LIVE and REPLAY, Candles, period and candle type, Chart navigation, Ladder columns, The three books, Header chip and REGIME, The expected move, READOUTS drawer, Walls and levels, Level card, Session levels, TRAIL, ±σ band and event marks, LAYERS, Heatmap: GAMMA, VANNA, CHARM, VOL DOTS and VOL BARS, ΔΓ overlay, SMILE, CVD, Research overlays: RV/IV and 25Δ·HI, FORWARD, COMPARE, PREMARKET, PANELS, Chart layouts, Symbol picker, Futures views: ES, NQ, RTY, GC, SI, ZB, CL, Focus mode, DARE US, Alert lines, Would-be fires on a replay, Level alerts on a watchlist, The list of your alert lines, Where alerts go, Telegram: @FirmTapeBot and the channel, Notifications on your phone, Webhooks, Morning levels mail, The ASK drawer, Slash commands, /levels and answer cards, Screen context and /context, Free questions and answers, The structure tester, Open an order in OPTIONS, Payoff, needs and priced, Against the book, The archive run, Platform integrations, Integration tokens, Levels API, Notes on a minute, Bracket: sketch a structure against the book - [Walls and levels](https://firmtape.com/features/live/walls-and-levels.md): The SPX call wall, put wall, zero-gamma flip and levels of interest drawn across a live chart in three dealer books, each line weighted by its share of the book. Free on every finished session. - [Session levels](https://firmtape.com/features/live/session-levels.md): FirmTape draws the prior day's high, low and close, the opening range, the premarket range, the prior week and the month to date on the SPX chart, joined on one line with the walls and the levels of interest. - [Heatmap: GAMMA, VANNA, CHARM](https://firmtape.com/features/live/gamma-heatmap.md): The FirmTape heatmap paints the SPX dealer book behind the candles, strike by minute, for gamma, vanna or charm. See where the book sat all session. Free on every finished session. - [PREMARKET](https://firmtape.com/features/live/premarket.md): Before 09:30 FirmTape LIVE estimates SPX, ES and NQ from their stand-in ETFs and shows the distance to yesterday's zero-gamma flip and walls, the ATR used and the premarket candles. - [Alert lines](https://firmtape.com/features/live/alert-lines.md): Right-click the FirmTape chart to set an alert on a price, or on the call wall, put wall or zero-gamma flip as it moves. Once or repeat, delivered to Telegram, push or a webhook. - [Webhooks](https://firmtape.com/features/live/webhooks.md): Every FirmTape alert as a signed JSON POST: flip crosses, wall breaks, regime changes, alert lines and order rules, with HMAC-SHA256 signatures, retries and a test event. - [Morning levels mail](https://firmtape.com/features/live/morning-mail.md): A mail at 08:45 New York time on every trading day: the previous SPX close, the zero-gamma flip and both walls with their distance from the close, the expected move and the day's events. - [Levels API](https://firmtape.com/features/live/levels-api.md): Read FirmTape's zero-gamma flip, call wall, put wall and net gamma as JSON for SPX, ES, NQ, RTY and 123 tickers, with a read-only token. Part of LIVE. ## ORDERS The orders that built the SPX book, a card for every contract, and your own shorts checked every minute - [ORDERS product page](https://firmtape.com/features/orders.md): Every large SPX option order rebuilt from the tape as one order and placed against the dealer book, contract boards and a card per contract, and POSITIONS: your own short strikes read against every minute. Finished sessions free. - [ORDERS guide](https://firmtape.com/docs/orders.md): 20 features written up: The order ledger, Orders on the chart, Sort and filters, STRUCT and TERM views, Saved tabs, Columns and highlights, CSV and IMG, EXPAND, A link that opens ORDERS, Order rules, Contract boards, The contract card, Card actions: alert line and its orders, Orders API and MCP, POSITIONS panel and editor, Conditions and the not counted list, Label track, Opening read and label changes, The POSITIONS webhook, Entry log - [The contract card](https://firmtape.com/features/orders/contract-card.md): Click any SPX strike for its contract card: volume per five minutes with the average fill, morning open interest and Vol/OI, its structures, largest orders and last sessions. - [POSITIONS panel and editor](https://firmtape.com/features/orders/positions-panel.md): Enter an SPX iron condor, strangle or spread and read each short side every minute by your own conditions: distance in expected moves, repeated orders at the strike, levels inside the short. ## LAB Test an idea on the full archive, then watch it draw and alert on the live chart - [LAB product page](https://firmtape.com/features/lab.md): Describe an SPX intraday idea in plain words; LAB backtests it over every archived session against its own core condition, out of sample, quant optimizes it showing every variant, and puts the tested rule on the chart, where it draws and alerts with the same formula. - [LAB guide](https://firmtape.com/docs/lab.md): 9 features written up: The LAB desk and the backtest, The LAB vocabulary, The idea feed, Quant optimize, The desk on the chart, Desk alerts, Credits and tokens, LAB from a script, Published research - [The LAB desk and the backtest](https://firmtape.com/features/lab/backtester.md): Describe an SPX intraday idea in plain words and LAB backtests it over every archived session against its own core condition, out of sample, with four gates and a day-clustered error bar. ## DATASET Every finished SPX session as files, all three gamma books, updated every evening - [DATASET product page](https://firmtape.com/features/dataset.md): License the whole FirmTape SPX session archive as files: minute-by-minute dealer gamma per strike in the volume, measured and open-interest books, a new session every evening, every field defined. For research on your own machine. - [DATASET guide](https://firmtape.com/docs/dataset.md): 6 features written up: The day files and the dictionary, Three books in every file, A new session every evening, Older days in the levels API, Dataset licence, Licensing for your product ## GEO What the world published, from public records, as context for the session - [GEO product page](https://firmtape.com/features/geo.md): Public records of world events, each measured against its own normal and linked to its source, beside the SPX chart and at /geo. Context for a session, free to read. - [GEO guide](https://firmtape.com/docs/geo.md): 8 features written up: The GEO list beside the chart, The map and the feed, Sectors and countries, Notable only, Weeks, Sources, Geo alerts, The API, webhooks and MCP ## Reference - [Developers](https://firmtape.com/docs/developers): Every API, webhook and MCP tool: keys, errors, limits, signing, one OpenAPI document - [Levels API](https://firmtape.com/docs/developers/live): The levels as JSON for plugins and scripts, with an OpenAPI document - [MCP server](https://firmtape.com/docs/developers/mcp): Point an AI assistant at the archive, and with a Lab token at LAB - [Orders API](https://firmtape.com/docs/developers/orders): The order ledger over REST and MCP, keys and limits - [LAB API](https://firmtape.com/docs/developers/lab): Compile, backtest and optimize from a script - [LAB vocabulary](https://firmtape.com/lab/vocabulary): Every column a LAB rule can name, with unit, range and book - [DATASET](https://firmtape.com/dataset): The session archive as files: what they are and how they arrive - [Data dictionary](https://firmtape.com/dataset/dictionary): Every field of the session files, by book - [Learn](https://firmtape.com/learn): The concepts behind the readings, one page each ## Developers - [Developers: FirmTape APIs, webhooks and MCP](https://firmtape.com/docs/developers.md): FirmTape's measurements from code: the levels API, the order ledger, POSITIONS, LAB, the archive, the dataset files and Geo, with keys, errors, limits, webhooks and MCP. - [Quickstart: FirmTape developers](https://firmtape.com/docs/developers/quickstart.md): From no account to a first answer in three steps; then the same call in Python and Node. - [API keys and scopes: FirmTape developers](https://firmtape.com/docs/developers/keys.md): One name, API key, for every key a program sends. A key carries a scope: the products it opens. The prefix names the scope, so a key pasted into a chart plugin is visibly not one that spends Lab credits. - [Errors: FirmTape developers](https://firmtape.com/docs/developers/errors.md): Branch on the status first, then on code. Retry only what the table marks retry: a 429 after Retry-After, a 5xx with backoff. Everything else needs a change on your side. - [Rate limits: FirmTape developers](https://firmtape.com/docs/developers/limits.md): Every limit is per key or per account, never per page view. Read the remaining count from the answer's headers rather than hard-coding it. - [Webhooks: FirmTape developers](https://firmtape.com/docs/developers/webhooks.md): FirmTape posts signed JSON to an https address you own when something you asked for happens. Three sources send webhooks today: the level alerts (LIVE, also alert lines and order alerts), POSITIONS (ORDERS) and Geo. They share the transport rules but not yet one format; the table below says exactly how each one signs and retries, and the target format all three move to. - [MCP: FirmTape developers](https://firmtape.com/docs/developers/mcp.md): 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. - [Versioning and changelog: FirmTape developers](https://firmtape.com/docs/developers/versioning.md): A path carries its major version where it has one (/api/v1, geo.firmtape.com/v1); a webhook body carries version. Within a version a change only adds: a new field, a new endpoint, a new event type. Ignore fields you do not know. - [For AI agents: FirmTape developers](https://firmtape.com/docs/developers/agents.md): Everything on these pages is also machine readable: a Markdown copy of each page, one index of them, the OpenAPI document and the files assistants look for. - [Levels API: LIVE for developers](https://firmtape.com/docs/developers/live.md): FirmTape's levels as JSON, for chart plugins and scripts: the volume book's zero-gamma flip, call wall, put wall and net gamma, every second for SPX and ES and every five minutes for the tickers, NQ and RTY. Included in LIVE. - [Get levels: LIVE API](https://firmtape.com/docs/developers/live/levels.md): The volume book's flip, call wall, put wall and net gamma for up to 20 symbols in one call, with the open-interest book alongside under oi. - [Gamma by strike: LIVE API](https://firmtape.com/docs/developers/live/gamma.md): The newest book's dealer gamma strike by strike, for one symbol, in the volume or the open-interest book. - [Level history of a day: LIVE API](https://firmtape.com/docs/developers/live/history.md): One day's price, flip, call wall, put wall and net gamma as columns and rows: SPX and ES one row per 10 seconds, tickers, NQ and RTY one per five-minute book. - [Every symbol: LIVE API](https://firmtape.com/docs/developers/live/symbols.md): Every symbol the levels API answers for: class, cadence, whether it has an open-interest book, the unit and the trust grade. No key needed. - [Expected move and close odds: LIVE API](https://firmtape.com/docs/developers/live/expected-move.md): SPX's expected move left to the close (twice the ATM straddle) and the 0DTE chain's own odds for the close, as READOUTS shows them; with day, the same at a minute of a finished session against what the close did. - [Levels string (FT1): LIVE API](https://firmtape.com/docs/developers/live/levels-string.md): The same readings as one pasteable line, the FT1 levels string, for the TradingView and thinkorswim scripts, which cannot call an API: up to 8 symbols, each with its top g gamma strikes. - [Bookmap Cloud Notes sheet: LIVE API](https://firmtape.com/docs/developers/live/bookmap-csv.md): A Bookmap Cloud Notes sheet: one note with a price line per level, in the contract Bookmap names. Without a LIVE plan it answers an empty sheet that says why, so old notes go. - [Check a key: LIVE API](https://firmtape.com/docs/developers/live/key.md): Whether the key works and its plan is LIVE: {ok, plan, limit_per_minute}. For a plugin's test button. - [Alert lines (session only): LIVE](https://firmtape.com/docs/developers/live/alert-lines.md): The price and level lines a trader sets on the chart. /api/alerts answers the signed-in terminal only, with the session cookie; it takes no API key. - [Web push: LIVE](https://firmtape.com/docs/developers/live/web-push.md): Notifications on a phone or a desktop browser are a destination of the level alerts, switched on from the account page in the browser that should receive them. There is no developer interface: a program receives the same alerts through the webhook. - [Platform integrations: LIVE](https://firmtape.com/docs/developers/live/integrations.md): Ready-made plugins that read the levels API and draw FirmTape's levels on a customer's own chart: NinjaTrader 8, Sierra Chart, ATAS, Quantower, Bookmap, MotiveWave and TrendSpider, plus TradingView and thinkorswim scripts that read a pasted levels string. Beta, included in LIVE. - [Webhook events: LIVE](https://firmtape.com/docs/developers/live/events.md): Every webhook event LIVE sends, with its schema. - [flip_cross: LIVE webhook event](https://firmtape.com/docs/developers/live/events/flip_cross.md): Sent when the price of a symbol on your watchlist crosses the volume book's zero-gamma flip and holds the new side. - [wall_break: LIVE webhook event](https://firmtape.com/docs/developers/live/events/wall_break.md): Sent when the price breaks above the call wall or below the put wall and holds it. - [regime_change: LIVE webhook event](https://firmtape.com/docs/developers/live/events/regime_change.md): Sent when the volume book's net gamma changes sign and holds it. - [wall_move: LIVE webhook event](https://firmtape.com/docs/developers/live/events/wall_move.md): Sent when the call wall or the put wall stands on a new strike and holds it. - [flip_move: LIVE webhook event](https://firmtape.com/docs/developers/live/events/flip_move.md): Sent when the flip stands more than your chosen number of points from where it was at the session's first reading, or at its last alert. - [level_near: LIVE webhook event](https://firmtape.com/docs/developers/live/events/level_near.md): Sent when the price comes within your chosen number of points of the flip, the call wall or the put wall, once per approach. - [price_alert: LIVE webhook event](https://firmtape.com/docs/developers/live/events/price_alert.md): Sent when the price crosses or touches a price line you set on the chart. - [level_line: LIVE webhook event](https://firmtape.com/docs/developers/live/events/level_line.md): Sent when the price crosses a level line, a line that follows the flip, the call wall or the put wall wherever it stands. - [order: LIVE webhook event](https://firmtape.com/docs/developers/live/events/order.md): Sent when a new order in today's SPX ledger matches one of your order rules. - [test: LIVE webhook event](https://firmtape.com/docs/developers/live/events/test.md): Sent by Send test on Account, Level alerts: a sample flip cross on SPX, signed the same way, so you can check your end. - [Orders API and POSITIONS API: ORDERS for developers](https://firmtape.com/docs/developers/orders.md): The order ledger and the POSITIONS check from code, with an orders key on the Orders API or Team plan. The same rows the ORDERS panel draws, and the same reading the POSITIONS panel shows. - [One session's order ledger: ORDERS API](https://firmtape.com/docs/developers/orders/day.md): Every large SPX order of one session, sorted by the dealer gamma it added. A day whose ledger has not run answers 200 with an empty list and a note. - [The newest session's order ledger: ORDERS API](https://firmtape.com/docs/developers/orders/latest.md): The newest session the ledger has: today's while the market is open, the last finished one after the close. - [Every day with a ledger: ORDERS API](https://firmtape.com/docs/developers/orders/sessions.md): Every day an order ledger exists for, oldest first. - [Your positions: ORDERS API](https://firmtape.com/docs/developers/orders/positions.md): All the account's positions with catalogue (the kinds and their legs, every condition with its unit, default threshold and range, the label counts and the alert defaults); with id, one position. - [Add, update or remove a position: ORDERS API](https://firmtape.com/docs/developers/orders/positions-change.md): Everything the editor does: { "op": "add" | "update" | "remove", "position": {...} }. A refusal says what to fix, in words. - [Check your positions at a minute: ORDERS API](https://firmtape.com/docs/developers/orders/positions-check.md): Each position judged at one market minute: only what was known at that minute, never anything later in the day. - [A position's label track: ORDERS API](https://firmtape.com/docs/developers/orders/positions-track.md): One position's label minute by minute over the hour up to t. - [A position's entry log: ORDERS API](https://firmtape.com/docs/developers/orders/positions-entries.md): What each session's entry minute looked like for one position, with up to replay replayed past days. - [Orders MCP server: ORDERS](https://firmtape.com/docs/developers/orders/mcp.md): An assistant reads the ledger directly from https://firmtape.com/orders/mcp, with the orders key in the same header and on the same daily budget. - [Webhook events: ORDERS](https://firmtape.com/docs/developers/orders/events.md): Every webhook event ORDERS sends, with its schema. - [label_changed: ORDERS webhook event](https://firmtape.com/docs/developers/orders/events/label_changed.md): Sent when a side of a position changes its label (TRADE, CAUTION, SKIP). - [opening_read: ORDERS webhook event](https://firmtape.com/docs/developers/orders/events/opening_read.md): Sent once a day per position when its alerts start: both sides' labels at that minute. - [test: ORDERS webhook event](https://firmtape.com/docs/developers/orders/events/test.md): Sent by Send test in the POSITIONS editor, signed the same way. - [LAB API: LAB for developers](https://firmtape.com/docs/developers/lab.md): LAB from a script, with a lab key: the same conveyor the terminal drives, spending the same credits. Developing an idea is free; a backtest or an optimize pass is one credit, refunded on failure. - [Develop or amend an idea: LAB API](https://firmtape.com/docs/developers/lab/chat.md): Compile a plain-words idea into a rule, or amend an existing one by id. Free, but needs a positive balance. Any chat on an idea sends it back to the start of the conveyor. - [Backtest or optimize an idea: LAB API](https://firmtape.com/docs/developers/lab/run.md): Run the idea's current conveyor step: backtest first (rule to tested), then quant (tested to ready). One credit, refunded on failure. - [Ideas, conveyor and balance: LAB API](https://firmtape.com/docs/developers/lab/state.md): Everything in one call: the account's ideas with their stages and results, the idea holding the conveyor, and the credit balance. Free. - [An idea's chat thread: LAB API](https://firmtape.com/docs/developers/lab/thread.md): The chat thread of one idea. Free. - [Desk actions on an idea: LAB API](https://firmtape.com/docs/developers/lab/idea.md): desk (a ready idea onto the desk, freeing the conveyor), drop (back to the start, freeing the conveyor), delete, or set (the desk's switches: on, draw, alert). Free. - [The LAB vocabulary: LAB API](https://firmtape.com/docs/developers/lab/vocabulary.md): Every column a rule may name, with its unit, range and an example: the compiler's own dictionary. Public, no key; the page for a reader is /lab/vocabulary. - [Test an options structure over the archive: LAB API](https://firmtape.com/docs/developers/lab/options-run.md): Price an SPX 0DTE structure of up to four legs at an entry minute over the archived sessions on real quotes and settlement. 10 credits, refunded on failure; answers 202 with a job to poll. - [Poll an options run: LAB API](https://firmtape.com/docs/developers/lab/options-job.md): A structure run's state: running, done with its result, or error with the credits refunded. - [LAB over MCP: LAB](https://firmtape.com/docs/developers/lab/mcp.md): The MCP server's lab_ tools and options_strategy_test drive the same conveyor from an assistant, with a lab key or after signing in through OAuth. - [Archive JSON and the free MCP server: REPLAY for developers](https://firmtape.com/docs/developers/replay.md): Every finished session is free: as JSON from the site with no key, and through the MCP server's free tools for an assistant. - [Every finished session: REPLAY API](https://firmtape.com/docs/developers/replay/days.md): Every finished SPX session in the archive, back to 2022. No key. - [One session's closing measurements: REPLAY API](https://firmtape.com/docs/developers/replay/session.md): FirmTape's derived closing summary of one finished session: open, close, high, low, the zero-gamma flip and its crossings, the walls, the net-gamma percentile, ATM IV. No key. - [The free MCP server: REPLAY](https://firmtape.com/docs/developers/replay/mcp.md): Twelve free tools over every finished session, with no account: sessions, levels, ladders, the market calendar, the screener and the tickers' books. - [Dataset files: DATASET for developers](https://firmtape.com/docs/developers/dataset.md): The session archive as files: one gzipped JSON a finished day, minute series and per-strike ladders in all three books, a new day every evening. Every field's meaning, unit, book and first date is in the data dictionary. - [A day file: DATASET API](https://firmtape.com/docs/developers/dataset/files.md): One finished session: .json.gz, the full payload, or .lite.json.gz, the smaller summary twin. - [The data dictionary: DATASET](https://firmtape.com/docs/developers/dataset/dictionary.md): Every field of the day files and every LAB column, with its meaning, unit, book and the first session that carries it, grouped by book. - [Geo API: GEO for developers](https://firmtape.com/docs/developers/geo.md): Dated public records of world events, each with its source and time, over REST with a geo key, as signed webhooks and over MCP. The free JSON needs no key and covers 30 days. Context for a session, never a trading signal. - [Records, free: GEO API](https://firmtape.com/docs/developers/geo/free-items.md): Records of one week or a recent range, as the pages show them. - [Weeks with records, free: GEO API](https://firmtape.com/docs/developers/geo/free-weeks.md): Weeks of the last 30 days that hold records, with counts. - [Countries named, free: GEO API](https://firmtape.com/docs/developers/geo/free-countries.md): Every country named in the last 30 days, with notable and total counts. - [Feeds and their health, free: GEO API](https://firmtape.com/docs/developers/geo/free-sources.md): Every feed, how often it is read and when it last answered. - [Records: GEO API](https://firmtape.com/docs/developers/geo/items.md): Records, newest first, a year back. - [Feeds: GEO API](https://firmtape.com/docs/developers/geo/sources.md): Every feed, its sector, when it last answered and what it holds. - [This month's usage: GEO API](https://firmtape.com/docs/developers/geo/usage.md): This month's calls against the plan; not counted. - [CSV export: GEO API](https://firmtape.com/docs/developers/geo/export-csv.md): Every matching record in one CSV: up to 7 days a call on API, 31 on Team. - [Geo MCP server: GEO](https://firmtape.com/docs/developers/geo/mcp.md): Seven tools over the Geo records at https://geo.firmtape.com/mcp, with the geo key as a Bearer header. Tool calls count toward the month's calls; listing tools does not. - [Webhook events: GEO](https://firmtape.com/docs/developers/geo/events.md): Every webhook event GEO sends, with its schema. - [geo.record: GEO webhook event](https://firmtape.com/docs/developers/geo/events/geo.record.md): Sent the minute a record that one of your Geo alert rules matches is written. - [geo.test: GEO webhook event](https://firmtape.com/docs/developers/geo/events/geo.test.md): Sent by Test beside an endpoint on Account, Geo, Webhooks.