Skip to main content
Glama

FirmTape - SPX, ES, NQ, RTY gamma levels, 100+ symbols

Session summary

get_session
Read-onlyIdempotent

Everything FirmTape measured for ONE finished SPX session: OHLC and VWAP, the zero-gamma flip and how often price crossed it, call/put walls, net-gamma percentile, ATM IV at the open. Use when: you want a whole day in a single call. Not for: the level set alone (get_levels returns the same day, narrower), how the levels moved across days (get_level_history), or gamma by strike (get_gex_profile). ES: pass symbol ES (or MES) for the same day in E-mini prices, the SPX book moved by the day's ES basis. Limits: finished sessions only, one day per call. Measurements only — FirmTape deliberately publishes no buy/sell signals.

Input Schema

NameRequiredDescriptionDefault
dayYesA finished trading day, YYYY-MM-DD. Weekends, holidays and days before coverage return an error — call list_sessions to see which days exist.
symbolNoSPX (default), or ES / MES for the E-mini: the SPX book moved by the day's ES basis (future minus index from put-call parity). A day without a measured basis answers with SPX index levels and says so.
contractNoOptional dated contract for a future symbol. Default is the front contract; in the two weeks before a roll the next one is measured too.

Output Schema

NameRequiredDescriptionDefault
dayYesTrading day, YYYY-MM-DD
noteNoPresent when a future was asked and its basis is not measured for the day
basisNoPresent when an ES/MES (or NQ/MNQ, RTY/M2K) symbol was asked: the futures basis every price here was moved by; null when the day has no measured basis and the answer is the index's
eventsNoThe day's scheduled market events (high and medium impact), each with its minute in ET, its source, the release's prints when known, and, for an event inside the session, what the book did in the 15 minutes after it
replayYesFree minute-by-minute replay of the session on FirmTape
symbolNoWhat the prices are in: SPX, or ES / MES when asked and the day's basis is measured
sessionYesSPX price facts for the session
summaryYesOne sentence carrying this answer's numbers, its trading day and its source, written to be quoted verbatim to a reader rather than paraphrased.
data_as_ofYesThe time this answer's data is true as of, ISO 8601 with the ET offset: a finished session's close (13:00 on an early close), the minute a ladder was read at, or the source's own build stamp. Null when the source states none.
server_versionYesVersion of the FirmTape MCP server that produced this answer
requested_symbolNoPresent when a future was asked but the day has no measured basis, so the answer is SPX's
dealer_positioningYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedOutput schema / properties / basis / description
      Previous value: -"Present when an ES/MES (or NQ/MNQ) symbol was asked: the futures basis every price here was moved by; null when the day has no measured basis and the answer is the index's"New value: +"Present when an ES/MES (or NQ/MNQ, RTY/M2K) symbol was asked: the futures basis every price here was moved by; null when the day has no measured basis and the answer is the index's"
    • changedOutput schema / properties / basis / properties / index / description
      Previous value: -"The index whose book was moved: SPX or NDX"New value: +"The index whose book was moved: SPX, NDX or RUT"
  2. Changed6 schema fields changed
    • addedOutput schema / properties / data_as_of
      Added value: +{
      +  "description": "The time this answer's data is true as of, ISO 8601 with the ET offset: a finished session's close (13:00 on an early close), the minute a ladder was read at, or the source's own build stamp. Null when the source states none.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / dealer_positioning / properties / levels / properties / hold_band
      Removed value: -{
      -  "description": "[low, high] band where dealer hedging tends to pin price",
      -  "items": {
      -    "type": [
      -      "number",
      -      "null"
      -    ]
      -  },
      -  "maxItems": 2,
      -  "minItems": 2,
      -  "type": "array"
      -}
    • changedOutput schema / properties / dealer_positioning / properties / levels / required
      Previous value: -[
      -  "zero_gamma_flip",
      -  "call_resistance",
      -  "put_support",
      -  "hold_band"
      -]New value: +[
      +  "zero_gamma_flip",
      +  "call_resistance",
      +  "put_support"
      +]
    • changedOutput schema / properties / events / items / properties / after / description
      Previous value: -"spot over the 15 minutes after the event, the flip and the expected-hold band before and after, the net gamma sign; only for events inside the session"New value: +"spot over the 15 minutes after the event, the flip before and after, the net gamma sign; only for events inside the session"
    • addedOutput schema / properties / server_version
      Added value: +{
      +  "description": "Version of the FirmTape MCP server that produced this answer",
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "summary",
      -  "day",
      -  "session",
      -  "dealer_positioning",
      -  "replay"
      -]New value: +[
      +  "summary",
      +  "day",
      +  "session",
      +  "dealer_positioning",
      +  "replay",
      +  "data_as_of",
      +  "server_version"
      +]
  3. Changed7 schema fields changed
    • addedInput schema / properties / contract
      Added value: +{
      +  "description": "Optional dated contract for a future symbol. Default is the front contract; in the two weeks before a roll the next one is measured too.",
      +  "examples": [
      +    "ESZ26",
      +    "ESH27"
      +  ],
      +  "pattern": "^M?(ES|NQ)[FGHJKMNQUVXZ]\\d{1,2}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / symbol
      Added value: +{
      +  "description": "SPX (default), or ES / MES for the E-mini: the SPX book moved by the day's ES basis (future minus index from put-call parity). A day without a measured basis answers with SPX index levels and says so.",
      +  "examples": [
      +    "SPX",
      +    "ES",
      +    "MES"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / basis
      Added value: +{
      +  "description": "Present when an ES/MES (or NQ/MNQ) symbol was asked: the futures basis every price here was moved by; null when the day has no measured basis and the answer is the index's",
      +  "properties": {
      +    "at": {
      +      "description": "ET minute the basis belongs to",
      +      "type": "string"
      +    },
      +    "contract": {
      +      "description": "The quarterly contract, e.g. ESZ26",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "contracts": {
      +      "description": "History only: the contracts the window's sessions were priced as",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "expiry": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "future": {
      +      "type": "string"
      +    },
      +    "index": {
      +      "description": "The index whose book was moved: SPX or NDX",
      +      "type": "string"
      +    },
      +    "method": {
      +      "type": "string"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "passes": {
      +      "description": "Basis passes measured that day",
      +      "type": "integer"
      +    },
      +    "points": {
      +      "description": "Future minus index, index points, added to every level, strike and spot",
      +      "type": "number"
      +    },
      +    "source": {
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / dealer_positioning / properties / levels / description
      Previous value: -"Dealer-positioning levels in SPX index points; null when the session did not produce one"New value: +"Dealer-positioning levels in SPX index points (in ES points when `symbol` is ES or MES); null when the session did not produce one"
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "Present when a future was asked and its basis is not measured for the day",
      +  "type": "string"
      +}
    • addedOutput schema / properties / requested_symbol
      Added value: +{
      +  "description": "Present when a future was asked but the day has no measured basis, so the answer is SPX's",
      +  "type": "string"
      +}
    • addedOutput schema / properties / symbol
      Added value: +{
      +  "description": "What the prices are in: SPX, or ES / MES when asked and the day's basis is measured",
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • changedOutput schema / properties / events / items / properties / after / description
      Previous value: -"spot over the 15 minutes after the event, the flip and the walls before and after, the net gamma sign; only for events inside the session"New value: +"spot over the 15 minutes after the event, the flip and the expected-hold band before and after, the net gamma sign; only for events inside the session"
  5. Changed1 schema field changed
    • addedOutput schema / properties / events
      Added value: +{
      +  "description": "The day's scheduled market events (high and medium impact), each with its minute in ET, its source, the release's prints when known, and, for an event inside the session, what the book did in the 15 minutes after it",
      +  "items": {
      +    "properties": {
      +      "after": {
      +        "description": "spot over the 15 minutes after the event, the flip and the walls before and after, the net gamma sign; only for events inside the session",
      +        "type": "string"
      +      },
      +      "impact": {
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "prints": {
      +        "items": {
      +          "properties": {
      +            "actual": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "forecast": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "label": {
      +              "type": "string"
      +            },
      +            "prior": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "time": {
      +        "description": "HH:MM ET; empty for an all-day item",
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "time",
      +      "name",
      +      "impact"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  6. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description goes further with real constraints: finished sessions only, one day per call, SPX book re-expressed through the day's ES basis, and the deliberate absence of buy/sell signals. These are behavioral facts an agent cannot derive from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the payload contents, then organized into Use when / Not for / ES / Limits blocks. Dense but every sentence carries routing or constraint information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-format detail is unnecessary, and the description supplies everything else an agent needs: scope, exclusion of siblings, session/one-day limits, and the ES basis caveat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains day validation, the SPX/ES/MES basis transformation, and default/front-contract roll behavior. The description's ES note largely restates the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Everything FirmTape measured for ONE finished SPX session') and enumerates exactly what is returned: OHLC/VWAP, zero-gamma flip and cross count, call/put walls, net-gamma percentile, ATM IV at the open. It explicitly carves itself apart from get_levels, get_level_history, and get_gex_profile, so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains explicit 'Use when' (a whole day in one call) and 'Not for' clauses naming three siblings with the condition that selects each (narrower level set, cross-day level movement, per-strike gamma). Nothing about tool selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources