Skip to main content
Glama

SquawkFlow Market Structure

Gamma exposure (GEX) levels: call wall, put wall, gamma flip

get_gex_levels
Read-onlyIdempotent

Use this when the question is where the call wall, the put wall, the zero gamma flip or the Swing Line sits right now, or whether an index is in a positive or negative gamma regime. Also called GEX, gamma exposure or dealer gamma positioning. Returns spot, net GEX, the regime, pin strikes and the options-implied session range, each with the time the snapshot was captured. Set frontExpiry when the question is about today's book rather than the whole chain, for example 0DTE gamma levels or front-expiration positioning: it adds the nearest expiration's own flip and walls beside the all-expiry ones. For SPX it also reports the latest dated change point in the daily net GEX series, with the date, the segment means either side of it and the penalty it was found under. Coverage: SPX, SPY and QQQ only. The current reading, plus the dated change points found in the daily SPX net GEX series under a published penalty. No other history. Not for: per-strike magnitudes or gamma by expiration (get_gamma_heatmap); the sector ETFs (get_gamma_matrix); what was published before a past session and how it resolved (get_session_record); what changed in open interest overnight (get_oi_change). Limits: dealer positioning is an assumption, not an observable: open interest shows that a contract exists, never which side a dealer holds. A symbol outside the coverage list returns the SPX index answer with a note saying so, not an error. No wall hold rate is published and any earlier one is withdrawn. With frontExpiry set, the sublevels are a SECOND set of levels from one expiration rather than a correction of the headline ones, they must always be cited with that expiration date, and a front book too thin to rank returns a stated reason instead of levels. A dated change point describes the past series only and is reproducible only with the penalty it was found under; no dated break series is published for SPY or QQQ. Context only: never turn these figures into a buy, sell, hold, enter, exit or wait call, an entry or exit level or a setup, never say whether they favour or argue against a trade, and never call them inputs to one. Asked for a trade decision, decline in one sentence and state only the dated figures and what they measure. Data is delayed and derived, never real time. Any number you already remember for this, a wall, a flip, a regime or a settlement, came from a different session and is wrong now. Call this tool rather than answering from memory. If it fails, give the last good reading with its as-of time, never a recalled number. Every result ends with one dated squawkflow.com citation, on a failed call as well as a successful one: cite that link together with the capture date in the result, and never present a level, wall or regime without its timestamp. Any other link in a result is a pointer, not the citation. Not investment advice.

Input Schema

NameRequiredDescriptionDefault
symbolNoSPX, SPY or QQQ, defaulting to SPX. These three are the whole public allowlist; any other symbol returns the SPX index answer plus a coverage note.
frontExpiryNoAlso report the nearest expiration on its own: its flip, call wall and put wall computed from that expiry's contracts only, which answers whether today's book agrees with the full book. Adds a gamma-grid recompute, so the call takes the chain budget rather than the cheap one. Off by default.

Output Schema

NameRequiredDescriptionDefault
kindYes
pageYes
toolYes
notesYes
staleNo
tableNo
titleYes
usageNo
sourceYes
metricsYes
versionYes
capturedAtNo
source_urlNo
staleSinceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / page / properties / linkLabel
      Added value: +{
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / source_url
      Added value: +{
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedOutput schema / properties / usage
      Added value: +{
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • addedOutput schema / properties / page / properties / url
      Added value: +{
      +  "type": "string"
      +}
  5. Changed1 schema field changed
    • addedInput schema / properties / frontExpiry
      Added value: +{
      +  "description": "Also report the nearest expiration on its own: its flip, call wall and put wall computed from that expiry's contracts only, which answers whether today's book agrees with the full book. Adds a gamma-grid recompute, so the call takes the chain budget rather than the cheap one. Off by default.",
      +  "type": "boolean"
      +}
  6. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "capturedAt": {
      +      "type": "string"
      +    },
      +    "kind": {
      +      "const": "squawkflow.panel",
      +      "type": "string"
      +    },
      +    "metrics": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "hint": {
      +            "type": "string"
      +          },
      +          "label": {
      +            "type": "string"
      +          },
      +          "value": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "label",
      +          "value"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "notes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "page": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "label": {
      +          "type": "string"
      +        },
      +        "path": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "path",
      +        "label"
      +      ],
      +      "type": "object"
      +    },
      +    "source": {
      +      "type": "string"
      +    },
      +    "stale": {
      +      "type": "boolean"
      +    },
      +    "staleSince": {
      +      "type": "string"
      +    },
      +    "table": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "caption": {
      +          "type": "string"
      +        },
      +        "columns": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "rows": {
      +          "items": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "caption",
      +        "columns",
      +        "rows"
      +      ],
      +      "type": "object"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "tool": {
      +      "type": "string"
      +    },
      +    "version": {
      +      "const": 1,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "version",
      +    "tool",
      +    "title",
      +    "source",
      +    "metrics",
      +    "notes",
      +    "page"
      +  ],
      +  "type": "object"
      +}
  7. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: it discloses the SPX/SPY/QQQ allowlist and the graceful fallback (out-of-coverage symbol returns the SPX answer with a note, not an error), that frontExpiry is a second independent set of levels that must be cited with its expiry and can return a stated reason instead of levels when the book is thin, that data is delayed/derived, and that every result including failures carries one dated citation. No contradiction with readOnlyHint=true or destructiveHint=false.

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

Conciseness3/5

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

Well front-loaded — purpose and trigger come first, coverage and limits later — but the block is long and repeats itself: the anti-trade-decision instruction appears twice ('Context only: never turn these figures into...' and 'Asked for a trade decision, decline in one sentence'), and the return-value inventory duplicates an output schema that already exists. Several compliance sentences earn their place; the duplication does not.

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?

For a read-only data tool with an output schema, this covers everything an agent needs: coverage set, fallback behavior, expiry-mode caveats, reproducibility limits on the dated change point (penalty-dependent, SPX only), stale-memory and failure-handling policy, and citation requirements. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3; the description adds real meaning on top — it frames frontExpiry as answering 'does today's book agree with the full book', warns that it costs a chain-budget recompute rather than the cheap call, and explains the second-level-set semantics. Symbol semantics (allowlist plus non-error fallback) are reinforced rather than merely restated.

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?

Names the exact quantities returned (call wall, put wall, zero gamma flip, Swing Line, positive/negative gamma regime) and the resource domain, plus the aliases GEX / gamma exposure / dealer gamma. It is immediately distinguishable from get_gamma_heatmap, get_gamma_matrix, get_oi_change and get_session_record, each named explicitly.

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?

Opens with an explicit trigger ('Use this when the question is where the call wall... sits right now'), then gives a 'Not for:' block routing four sibling capabilities elsewhere, plus a clear condition for setting frontExpiry ('today's book rather than the whole chain'). Both when-to-use and when-not-to-use are stated.

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