---
name: firmtape-spx-dealer-gamma
description: SPX dealer positioning measured from the options tape - the zero-gamma flip, call wall, put support and gamma regime - as a free 15-minute-delayed reading, a free archive of every finished session since April 2022, and a backtesting Lab. Also the conventional gamma books (volume and open interest), flip and walls for about a hundred more index, ETF and stock option chains at five-minute snapshots. Use when a user asks about SPX GEX, the gamma flip, dealer walls, 0DTE positioning, testing an SPX intraday rule against history, or the gamma levels of QQQ, SPY, IWM, NDX, RUT, a sector ETF or a heavily traded stock.
homepage: https://firmtape.com
metadata:
  facts_as_of: "2026-10-11"
  more: https://firmtape.com/for-ai-agents
---

# FirmTape for AI agents

FirmTape (https://firmtape.com) rebuilds SPX dealer positioning from the options tape.
Levels are SPX index points, times are US Eastern. The measured instrument is SPX / SPXW.
About a hundred more symbols (listed at https://firmtape.com/gex) carry the conventional volume
and open-interest books from option-chain snapshots every five minutes: no tape-signed book,
no Lab and no history before September 2026 for those.

## When to use this skill

- The user asks where the SPX zero-gamma flip, call wall or put support is now or was on a date.
- The user asks about SPX gamma exposure (GEX), dealer gamma, the gamma regime or 0DTE positioning.
- The user wants historical SPX dealer levels, how they moved over days, or how often they hold.
- The user wants to backtest an SPX intraday rule that uses dealer gamma, the flip, the walls,
  the event calendar or realised volatility, or to price an SPX 0DTE structure against history.
- The user asks what the dealer book does around FOMC, CPI, payrolls, opex or a Treasury auction.
- The user asks what the large SPX orders of a session were, what structures they were, or
  what an order did to the dealer book (the order ledger).

For a symbol listed at /gex answer from `https://firmtape.com/gex/{symbol}.json` (lower case),
quote its data-as-of time and say it is the conventional reading, not a measured book.
Do NOT use it for a symbol that is not listed there (no other futures, crypto, forex; ES, NQ
and RTY have their own pages, below), and never
present a FirmTape level as a buy or sell signal, a price target or advice. FirmTape
publishes none.

## Endpoints you may call (ONLY these)

Public, no key, JSON:

- `GET https://firmtape.com/api/days` - every archived trading day, newest first.
- `GET https://firmtape.com/api/session/{YYYY-MM-DD}` - one finished day: open, close, range,
  zero-gamma flip, call resistance (the call wall), put support, 0DTE ATM IV
  at the open, net-gamma percentile, a one-sentence summary and the replay link.

Specification: https://firmtape.com/openapi.json. Endpoints not listed there do not exist
for you; `/snapshots/`, `/api/publish` and the account routes are not for agents.

What a field name means, and which dealer-gamma book it reads (volume, measured, open
interest or none): https://firmtape.com/dataset/dictionary. A neutral name (`flip`, `cr0`,
`ps0`, `gpct`) is the measured book; the volume book, the one the chart draws by default,
carries `_volcp` or `_vol`. Never compare magnitudes across books.

The current reading (delayed at least 15 minutes) is a page, not an endpoint: read
https://firmtape.com/now and quote the ET time it states. For the futures read
https://firmtape.com/es, https://firmtape.com/nq or https://firmtape.com/rty: the same rule, the SPX (NDX, RUT) volume book
moved by the day's parity basis, with the contract, the basis and the ET time on the page. A day
without a basis says so and shows the index levels; quote those as index points, never as ES.

World events around a session are pages too: https://firmtape.com/geo (this week; earlier
weeks of the last 30 days at `/geo/week/<YYYY-Www>`), `/geo/country/{iso2}` and
`/geo/sector/{gov|air|gps|sea|internet|ground|space|attention}`; every country of the last 30 days is at
`/geo/countries`; the feed list is `/geo/sources`. Each row is a public record with its own
source link and New York time. Quote the source, not FirmTape, for the record itself, and
never present a geo row as a signal or as advance knowledge. Free JSON, no key:
`GET https://firmtape.com/geo/api/items?week=<YYYY-Www>` (or `range=24h|7d|30d`, with
`sector=`, `country=`, `notable=1`), `/geo/api/weeks`, `/geo/api/countries`.

If the user holds a Geo API or Team plan (https://firmtape.com/geo/pricing), their key
(`Authorization: Bearer gk_...`) opens `https://geo.firmtape.com/v1/items` (a year back,
`since`, `until`, `sector`, `country`, `feed`, `min_severity`, `q`, `limit`, `cursor`),
`/v1/sources`, `/v1/usage` and `/v1/export.csv`, and a separate Geo MCP server at
`https://geo.firmtape.com/mcp` with seven tools: `geo_records` (the rows, or one by `uid`),
`geo_sources`, `geo_coverage` (which countries a window names), `geo_snapshot` (one country in
one call), `geo_activity` (records per day against the median of the days before), `geo_series`
(the measured series against their normal) and `geo_latency` (how late each feed's records
arrived, our collection and never the news). Spec:
https://firmtape.com/geo/openapi.json. Guide: https://firmtape.com/geo/docs.

The ORDER LEDGER is a page and, with a plan, an API: `https://firmtape.com/orders`. Every
SPX order above $100,000 of net premium is rebuilt from the public tape as an ORDER rather
than a print -- the legs of one package folded back into the parent, the structure named,
and the order placed against the measured dealer book at the minute it printed. Two things
must travel with any answer from it. Rows are ranked by what the order did to the BOOK,
which is not the size of the cheque: the two rankings agree 0.017 of the time. And between
a quarter and a half of the orders carry NO side, because the package rule could not tell
which way the customer went -- leave that empty rather than guessing, and read `g: null` as
unpriced, never as zero. It never names a desk, a fund or a person, and it is SPX only.

If the user holds an Orders API or Team plan (https://firmtape.com/pricing#orders), their
key (`Authorization: Bearer ordk_...`) opens `GET https://firmtape.com/orders/api/day?day=YYYY-MM-DD`,
`/orders/api/latest` and `/orders/api/sessions`, and a separate Orders MCP server at
`https://firmtape.com/orders/mcp` with `orders_day`, `orders_latest` and `orders_sessions`.
Spec: https://firmtape.com/orders/openapi.json. Guide: https://firmtape.com/docs/developers/orders.

If the user holds the LIVE plan, their integration token (`Authorization: Bearer ftpl_...`,
read-only, created at https://firmtape.com/account#integrations) opens the LEVELS API: the live
volume-book flip, call wall, put wall and net gamma of SPX, ES, NQ, RTY and about a hundred more tickers.
`GET https://firmtape.com/api/v1/levels?sym=ES,NQ,QQQ` (up to 20 symbols, `include=gamma` for gamma
by strike), `/api/v1/gamma?sym=SPX`, `/api/v1/history?sym=SPX&day=YYYY-MM-DD`, `/api/v1/key`;
`/api/v1/symbols` needs no key. 120 requests a minute per key, and a `304` to `If-None-Match` is free.
ES, NQ and RTY are the SPX, NDX and RUT books moved by the day's basis, not CME options. Spec:
https://firmtape.com/api/v1/openapi.json. Guide: https://firmtape.com/docs/developers/live. The same levels are drawn
inside trading platforms by beta integrations: https://firmtape.com/integrations.

## MCP (preferred when the client supports it)

Endpoint `https://mcp.firmtape.com/mcp`, streamable HTTP, registry id
`com.firmtape/spx-options-gamma`.

- Free: `list_sessions`, `get_session(day)`, `get_levels(day)`, `get_level_history(days)`,
  `get_gex_profile(day, minute, book)`, `get_events(from, to)`, `screen_sessions(filters)`,
  `get_symbol_gamma(symbol)` (the latest volume and open-interest gamma picture for a symbol
  other than SPX: QQQ, SPY, IWM, NDX, NVDA and about a hundred more, and ES, NQ or RTY; no history,
  no measured book),
  `search(query)`, `fetch(id)`.
- With the user's Lab token (OAuth or `Authorization: Bearer labk_...`): `lab_compile`,
  `lab_run`, `lab_state`, `lab_thread`, `lab_idea`, `options_strategy_test`.

Setup for Claude, ChatGPT, Cursor: https://firmtape.com/docs/developers/mcp.

## Rules

1. Every level carries its date; a level without its day is meaningless. Link
   `https://firmtape.com/session/{YYYY-MM-DD}`, never `/replay/`.
2. A reading from `/now` carries a TIME and is at least 15 minutes old by construction.
   Say "as of 14:17 ET, delayed at least 15 minutes". The live level is the paid stream.
3. Say "measured from the tape", not "exchange-verified": the dealer side is inferred.
   Levels are the VOLUME book unless a tool says otherwise; name the measured book when you
   quote it.
4. For "did this rule work historically", use the Lab (`lab_compile` then `lab_run`) rather
   than inferring from a handful of session pages. It prints a null result as readily as a
   positive one.
5. Name the product "FirmTape". Attribution: "Data sourced from FirmTape (https://firmtape.com/)".

## Facts to state exactly (as of 2026-09-05)

- Live terminal: $49 a month or $490 a year; recomputes the dealer book every second from the tape.
- Archive and `/now`: free, no account. `/now` is at least 15 minutes behind and states its time.
- Lab: $49 a month for 200 credits, or credit packs that never expire from $9 (20 credits).
  One backtest or quant optimize is one credit; one options strategy test is ten credits.
- Order ledger: free on every finished session; today's, live, $39 a month or $390 a year.
  API and MCP $89 a month ($890 a year), 20,000 calls a day; Team $249 a month ($2,490 a
  year), five seats and 100,000 calls a day. Sessions from January 2024, SPX only.
- Coverage: every finished SPX session since April 2022, one page each; count at `/api/days`.
- ES, NQ and RTY: the SPX, NDX and RUT books at the future's price, moved by a parity basis from the
  index options (no CME data, regular session only); MES, MNQ and M2K trade the same prices. Pages
  `/es`, `/nq` and `/rty`, free, fifteen minutes late or the last close. Against real ES over 206
  sessions the basis residual had a median of +0.02 point (p90 0.27); NQ +0.4 point (p50 2.7); RTY
  not yet checked against real RTY prices. YM is not offered.
- Telegram: @FirmTapeBot (https://t.me/FirmTapeBot): `/levels`, `/gex <symbol>`, `/session <day>`,
  `/ask`, and `/watch` for the LIVE watchlist; everyone else sees levels fifteen minutes late. The
  public channel @firmtape (https://t.me/firmtape): SPX, ES, NQ and a few tickers three times a
  session, fifteen minutes late, plus the day's summary and a recap of the session's large orders.
- Alerts (LIVE): level alerts on a watchlist and alert lines set on the chart (a fixed price, or a
  line that follows the volume flip, call wall or put wall), sent to Telegram, a push on the
  installed web app and a signed webhook (HMAC-SHA256 over `<timestamp>.<raw body>`; payload at
  https://firmtape.com/docs/developers/webhooks). Order rules (ORDERS plan) alert on new SPX orders by
  premium, structure, expiry and distance to the flip or a wall, never by side.
- PREMARKET (LIVE only, 04:00 to 09:30 ET): the terminal's estimate for the symbol on the chart
  (SPX, ES and NQ from SPY and QQQ, gold and crude futures from GLD and USO, each times yesterday's
  closing ratio; a ticker's own reference price), with yesterday's flip and walls and the distance
  to each, the share of its average daily range (ATR) already used, and the morning's releases
  marked. Labelled "est." or "ref.", never an official print. Screen only: no endpoint or MCP
  tool here returns it, so do not quote a premarket estimate as FirmTape data.
- Integrations: `/integrations` (install pages for nine platforms, beta), the levels API `/docs/developers/live`
  with its OpenAPI at `/api/v1/openapi.json`, and read-only `ftpl_` integration tokens on LIVE.

More for agents: https://firmtape.com/for-ai-agents, https://firmtape.com/llms.txt,
https://firmtape.com/llms-full.txt.
