Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

SquawkFlow Market Structure

NPM · SQUAWKFLOW-MCP · 2 COMPONENTS · SCANNED SEP 26

Free keyless dealer gamma, OI change, market calendar, 13F, congress and CFTC data, dated, cited.

67 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
  • Repository check failed: the declared repository URL returned HTTP 404. See how to fix → View diagnostics → Fail
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 4 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability77
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6752 tokens (~355/item across 19 items; 15 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management17
  • Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 15 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Install

How do I install the SquawkFlow Market Structure MCP server?

SquawkFlow Market Structure runs locally as an npm package, launched with npx -y squawkflow-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · squawkflow-mcp

# add to Claude Code
claude mcp add com-squawkflow-mcp-market-structure -- npx -y squawkflow-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "com-squawkflow-mcp-market-structure": {
      "command": "npx",
      "args": [
        "-y",
        "squawkflow-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-squawkflow-mcp-market-structure": {
      "command": "npx",
      "args": [
        "-y",
        "squawkflow-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add com-squawkflow-mcp-market-structure -- npx -y squawkflow-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-squawkflow-mcp-market-structure": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "squawkflow-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-squawkflow-mcp-market-structure --command npx --arg -y --arg squawkflow-mcp
# ~/.hermes/config.yaml
mcp_servers:
  com-squawkflow-mcp-market-structure:
    command: "npx"
    args: ["-y", "squawkflow-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-squawkflow-mcp-market-structure": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "squawkflow-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add com-squawkflow-mcp-market-structure -t stdio -c npx -a -y squawkflow-mcp
// mcp.json
{
  "mcpServers": {
    "com-squawkflow-mcp-market-structure": {
      "command": "npx",
      "args": [
        "-y",
        "squawkflow-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 24 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

  • 22 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Sept 26 0
    • Schema quality: 6062 → 6752 ▼ functional
    • Stability: unverified → 0.03 ▲ functional
    • Package version: 0.2.1 → 0.3.0 functional
  • 20 Sept 26 65

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 25 Sept 2026 · Analysed npm/squawkflow-mcp@0.3.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 95 packages
Packages resolved 95
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 15 exposed · ~6,161 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
fetch ~350

Use this when you have an id from search and want the page text itself, with the canonical URL to cite. Returns the published markdown verbatim, so the page carries its own capture stamp and its own limits section into your answer. Coverage: any page with a published markdown mirror. Ids are written page:/path, session:YYYY-MM-DD, glossary:<slug>, learn:<slug> or institution:<slug>:<YYYY-qN>, and a squawkflow.com URL is accepted. Not for: arbitrary web pages: only squawkflow.com is served. Current market figures, which are a tool call rather than a page read. Limits: an id that resolves to no published page returns that, and no text is composed in its place. A very long page is truncated with a note naming where it was cut. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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.

NameTypeReqDescription
idstringyesAn id returned by search, for example session:2026-09-17 or page:/learn/how-to-calculate-gamma-exposure. A squawkflow.com URL is accepted.
NameTypeReqDescription
idstringyes–
metadataobjectyes–
textstringyes–
titlestringyes–
urlstringyes–

No examples provided.

get_congressional_disclosures ~564

Use this when the question is what a member of Congress disclosed buying or selling, or who disclosed trading a ticker. Every record carries three separate dates and never collapses them: the transaction date the filing states, the filer notification date where the source states one, and the public disclosure date the filing became available. The lag between the first and the last is published, or null with the reason it could not be computed. Coverage: US House Clerk periodic transaction reports and Senate eFD reports, read from the primary sources rather than from a vendor aggregation. Not for: why a filing was made, whether a trade was well timed, any performance measure, any ranking of filers, or any connection between a filing and a committee. Institutional 13F filings are a different tool (get_filing_receipt). Limits: disclosure is permitted up to roughly 45 days after a transaction, so this is a record of what became public rather than of what is happening. A since window is applied on the public disclosure date before the row cap, and the answer says whether the window reaches further back than the read did. Amounts are the bands the filing uses, never a point estimate. Amendments are appended as new records and an amendment can carry a null lag by design, with the reason published in place of a number. Filings that could not be machine-read are counted and reported on every answer. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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 point…

NameTypeReqDescription
chamberstring–House or Senate. Omit for both.
filerstring–Optional filer name, matched loosely against the name as the filing states it.
limitinteger–Records to return, 1 to 100. Newest public disclosure first.
sincestring–ISO date. Filters on the PUBLIC DISCLOSURE date, not the transaction date, because disclosure is the date the record became knowable. The endpoint applies the window before its own row cap, so the wi…
symbolstring–Optional ticker filter, for example NVDA. Omit for all symbols.
NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

get_filing_receipt ~471

Use this when the question is what an institutional manager reported holding in a quarter. Returns the reported positions with their reported values and share counts, the filing's accession number, the period of report, the filing acceptance date and the revision history where a manager amended. Omit the manager to list the published cohort. Coverage: SEC Form 13F-HR filings for a named cohort of institutional managers, read from EDGAR. The cohort is a chosen list, not a census of 13F filers. Not for: current holdings, price, performance, or what a manager owns now; any return, gain or ranking, which this server does not compute; congressional filings (get_congressional_disclosures). Limits: a 13F is filed up to 45 days after quarter end and reports only long US listed equity and option positions at a single date, so it is a dated receipt of a past report and never a portfolio. Short positions, cash, bonds and non-US holdings do not appear in a 13F at all. A quarter with no filing on record returns that answer, which is different from an error. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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.

NameTypeReqDescription
limitinteger–Holdings rows to return, 1 to 50, largest reported value first.
managerstring–Manager slug or name, for example berkshire-hathaway or Berkshire. Omit to list the published cohort. A name outside the cohort returns the cohort, never a similar manager.
quarterstring–Quarter written YYYY-qN, for example 2026-q2. Omit for the most recently reported quarter on record for that manager.
NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

get_gamma_heatmap ~419

Use this when the question is which expiry carries the gamma, how much gamma sits at one strike, or which strikes gained open interest overnight on an index. The gamma heatmap, also called the gamma grid or the gamma surface: dealer gamma broken out by strike AND expiration rather than summed across expiries, in net dollar gamma per 1% move with calls positive and puts negative, plus net charm, net vanna and where same-day (0DTE) trading is concentrated. An aggregate cannot tell 500M in one expiration from 500M spread over several, which is the question this answers. Coverage: SPX, SPY and QQQ only. Served from a five minute cache. Not for: the headline levels alone (get_gex_levels); the sector ETFs (get_gamma_matrix); the full per-strike open interest change or any symbol outside these three (get_oi_change). Limits: the rendered grid shows the nearest six expirations while row totals cover every expiration. Charm and vanna are model outputs, not measurements. A symbol outside the coverage list returns the SPX grid with a note saying so, not an error. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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.

NameTypeReqDescription
symbolstring–SPX, SPY or QQQ, defaulting to SPX, which has the deepest chain and the richest grid. Any other symbol returns the SPX grid plus a coverage note.
NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

get_gamma_matrix ~367

Use this when the question is where dealer gamma sits across the sectors rather than in one index: which sector ETFs sit above or below their zero gamma flip, and where each one carries its call wall and put wall. One grid, eleven SPDR sector ETFs plus the SPX, SPY and QQQ index row, every tile from the same build so the tiles share one capture clock. Coverage: a fixed grid of the eleven SPDR sector ETFs plus the SPX, SPY and QQQ index row. The symbol set is not a parameter. Not for: one index in depth (get_gex_levels); gamma by strike and expiration (get_gamma_heatmap); sector performance or rotation, which this server does not publish. Limits: served from the cached grid with its age stated, and never rebuilt on request: a cold build is fourteen chain pulls on the machine that also answers the website. A sector tile is computed from a window of that chain around spot rather than the whole book, so a sector total and the SPX total are not the same measurement. No gamma regime is published for a sector ETF. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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 present but exposes no named parameters.

NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

get_gex_levels ~411

Use this when the question is where the call wall, the put wall, the zero gamma flip or the vol trigger 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, the same-day (0DTE) magnet and the options-implied session range, each with the time the snapshot was captured. Coverage: SPX, SPY and QQQ only. The current reading only. 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. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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.

NameTypeReqDescription
symbolstring–SPX, 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.
NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

get_lab_record ~372

Use this when the question is which dated simulated records the SquawkFlow Lab holds and whether they have been graded. Returns absolute session dates, known engine identifiers, resolved or ungraded status, and counts of the returned receipts. Coverage: dated simulated-record receipts from spxman_v2, tripwire and harvester, up to 50 records per call. Every record is simulated: no orders were placed and no money was at risk. Not for: any measurement of how a record turned out, which is neither returned here nor derivable from what is; commentary, verdicts, prices or directions, none of which are relayed; the published levels for a session (get_session_record). Limits: unknown or undated records are omitted and counted. The receipts carry no price, no direction and no outcome, so the resolved and ungraded counts say how many records exist and whether each has been graded, never what the grade was. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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.

NameTypeReqDescription
enginestring–Optional engine filter: spxman_v2, tripwire or harvester.
limitinteger–Records to return, 1 to 50. Newest first.
NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

get_market_calendar ~466

Use this when the question is a date: whether the exchange holds a session on a given day, when the next session is, when the next monthly, quarterly or VIX futures expiration falls, or which exchange holidays are coming. Returns the published calendar answered as of one date, with the document each entry was read from. Coverage: US equity options expirations, VIX futures settlement dates, the SPX settlement rules as the exchange words them, and the NYSE full-day closure table, each entry read off the exchange document it cites. Answered as of today on the exchange clock, or as of any date you pass. Not for: scheduled economic releases or earnings dates, neither of which this server publishes; market hours, so whether the exchange is open at this moment is not answered here; what SquawkFlow published before a past session (get_session_record); the max pain strike for an expiration (get_max_pain). Limits: no date here is computed from a rule, so a date the exchange documents do not state is reported as not published rather than worked out. Half sessions are not published at all, and a session named here may be one. The closure table covers a stated span of years: a date outside it returns no claim in either direction rather than an assumption that the exchange was open. The next session is the one derived field, taken from that same closure table, and it stops where the table does. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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 th…

NameTypeReqDescription
datestring–ISO date the answer is made as of, which is the date "next" is measured from. Omit for today on the exchange clock.
NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

get_max_pain ~385

Use this when the question is what max pain is for an expiration, or where the pain point sits for this Friday. Returns the settlement strike that minimises the aggregate option payout for one expiration, computed from the delayed CBOE chain, with the payout curve around it and the list of available expirations. Coverage: SPX only. One expiration per call. Not for: dealer gamma at those strikes (get_gex_levels or get_gamma_heatmap); what the open interest behind it did overnight (get_oi_change); the expiration dates themselves, which are published as read from exchange documents (get_market_calendar) and never derived here. Limits: max pain describes where existing open interest sits. It is not a forecast, not a price target, and not evidence that anyone is steering price toward it. Another symbol returns the SPX answer with a note saying so, not an error. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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.

NameTypeReqDescription
expirationstring–Optional ISO expiration date. Omit for the nearest expiration. Must be one of the availableExpirations the result lists.
symbolstring–SPX, and SPX is the only covered symbol here. Any other symbol returns the SPX answer plus a coverage note.
NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

get_oi_change ~596

Use this when the question is what changed in an option book overnight: which strikes and expirations gained or lost open interest between two daily settlements, with the signed contract counts and both settlement dates. Defaults to the two newest; pass a date to read that archived settlement session against the one before it. Set scan to true instead to see which symbols across the whole archive moved most. Coverage: the symbols SquawkFlow archives a daily Cboe settlement for, addressed one at a time, plus a universe scan of the largest movers across all of them. Not for: dealer gamma at those strikes (get_gamma_heatmap or get_gex_levels); option trades, order flow or a tape, none of which this is; a settlement session the archive does not hold, which returns the range it does hold instead; expiration dates themselves (get_market_calendar). Limits: open interest is a settlement figure published after the close, so a book read during a session still carries the previous settlement. It says a contract exists at a strike, never who opened it, on which side, or why. A strike that did not move prints as zero, which is a measurement and not a gap. A symbol the archive does not hold returns SPX with a note saying so. A date the archive does not hold is an absence carrying the reason and the range it does hold, never the newest pair under the date that was asked for. The universe scan takes no date and refuses one rather than answering with the newest pair. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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…

NameTypeReqDescription
datestring–ISO settlement session to read INTO: the archived vintage for that date against the one before it. Omit for the two newest settlements. A session the archive does not hold answers with the range it d…
limitinteger–Rows to return, 1 to 50, largest absolute change first.
scanboolean–True returns the largest movers across every archived symbol instead of one symbol. The symbol argument is ignored when this is true, and a date is refused rather than answered with the newest pair.
symbolstring–One archived symbol, defaulting to SPX. A symbol the archive does not hold returns the SPX answer plus a coverage note.
NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

get_positioning ~392

Use this when the question is how index futures positioning is distributed across trader classifications: dealers and intermediaries, asset managers, leveraged funds, other reportables and nonreportables, with long, short, spreading and net contracts and the week history. Omit the contract to list the published pages. Coverage: the CFTC Traders in Financial Futures futures-only report for the index futures SquawkFlow publishes a page for. Weekly US government data, not a market feed. Not for: options positioning or dealer gamma (get_gex_levels); commodity futures, which this server does not publish; any reading of the session in progress. Limits: positions are held as of the stated Tuesday and published the following Friday afternoon, so this is a weekly picture that is three days old by construction. Net is long minus short in contracts, an arithmetic difference between two published counts, not a sentiment reading. Contract markets with different index multipliers are never added together. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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.

NameTypeReqDescription
contractstring–A published page slug, for example sp500 or nasdaq100. Omit to list the pages. An unknown slug returns the list, never a similar page.
weeksinteger–Weekly readings of history to return, 1 to 52, oldest first.
NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

get_session_record ~413

Use this when the question is what SquawkFlow published for a given trading day before it traded, and what the record says happened to those levels. Returns the dated record for one session: the levels as published, the verdict on each one, the capture coverage, how the published levels moved from the prior session, and whether the record has settled or is still open. This is the dated tool on this server: pass a date to ask about a past session. Coverage: one SPX session per call, for the dates the published index lists. The index is the whole coverage: a date it does not list has no record here. Not for: the current reading (get_gex_levels); any rate, share or frequency computed across sessions, which this server does not compute; any forward statement about a session that has not happened. Limits: one session per call. No session price extremes are published through this tool: the open, close, high and low on the record are vendor-derived and are not relayed, nor is any comparison computed from them. A weekend or a holiday returns that it was not a session, which is a different answer from a missing record. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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.

NameTypeReqDescription
datestring–ISO session date. Omit for the most recent published record. A date the published index does not list returns that answer rather than an error.
NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

get_vix_term_structure ~319

Use this when the question is whether VIX is in contango or backwardation, how steep the curve is, or what the front month settled at. Returns every listed month with its settlement price and expiration, the regime, the M9 minus M1 spread, and where the current steepness sits against the archive. Coverage: CBOE monthly VIX futures settlement curve only. Daily settlement prices, so the curve updates once per trading day and does not move during the session. Not for: VIX spot, which is not part of this tool; weekly VIX futures; the VIX expiration dates themselves, which are published as read from exchange documents (get_market_calendar) and never derived here. Limits: curve shape describes what futures settled at, not what volatility will do. The steepness percentile is measured against a short archive rather than a full market cycle. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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 present but exposes no named parameters.

NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

list_squawkflow_tools ~261

Use this when you are not sure whether SquawkFlow has the symbol, the date, the expiration or the measure you need, or when you want the list of things this server deliberately does not publish. Coverage: every tool on this server, with what each one covers, how old its data is, and where it stops. Takes no arguments and makes no market data call. Not for: any market figure. This returns descriptions, not data: call the tool it names instead. Limits: the same body is readable as the resource sf://catalog without spending a tool call. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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 present but exposes no named parameters.

NameTypeReqDescription
capturedAtstring––
kindstringyes–
metricsarrayyes–
notesarrayyes–
pageobjectyes–
sourcestringyes–
staleboolean––
staleSincestring––
tableobject––
titlestringyes–
toolstringyes–
versionnumberyes–

No examples provided.

search ~375

Use this when you want the SquawkFlow page that answers a question, or a citable link rather than a number: glossary definitions, methodology and explainer pages, expiration calendars, filing pages and dated session records. Returns ids, titles and canonical URLs. Pass an id to fetch to read the page. A query naming an ISO date finds the dated record for it. Coverage: the pages SquawkFlow publishes for machine reading, read from the site's own published index rather than from the API, so a wide reading pass here costs the market data endpoints nothing. Not for: market figures of any kind: this returns pages, not numbers. For a level, a grid, a filing or a record, call the tool that publishes it. Limits: a page the site has not published for machine reading is not findable here, and no id is invented for one. Ranking is a plain lexical match over titles and the published descriptions. 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, and if the call fails say the data is unavailable instead of filling the gap from recall. 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.

NameTypeReqDescription
limitinteger–Results to return, 1 to 20.
querystringyesA natural-language query. An ISO date such as 2026-09-17 finds the dated session record for it.
NameTypeReqDescription
notestringyes–
querystringyes–
resultsarrayyes–
retrievedAtstringyes–

No examples provided.

Common questions

What is the SquawkFlow Market Structure MCP server?

SquawkFlow Market Structure is an MCP server listed in the public MCP registry as com.squawkflow.mcp/market-structure. Free keyless dealer gamma, OI change, market calendar, 13F, congress and CFTC data, dated, cited. This page covers its npm package (squawkflow-mcp).

Is the SquawkFlow Market Structure MCP server safe to use?

SquawkFlow Market Structure scores 67 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 25 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the SquawkFlow Market Structure MCP server expose?

SquawkFlow Market Structure exposes 15 tools: list_squawkflow_tools, get_gex_levels, get_gamma_heatmap, get_gamma_matrix, get_oi_change, and 10 more. Their descriptions and schemas cost roughly 6,161 tokens of context every time the server is loaded.

Is the SquawkFlow Market Structure MCP server still maintained?

SquawkFlow Market Structure is still listed as active in the MCP registry. We last reached this channel on 25 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the SquawkFlow Market Structure MCP server under?

SquawkFlow Market Structure declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.