SquawkFlow Market Structure
Server Details
Free keyless dealer gamma, OI change, market calendar, 13F, congress and CFTC data, dated, cited.
- Status
- Healthy
- Uptime
- 100.0% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 17 tools
Every tool has an explicit 'Not for' section that names the sibling tool to use instead, cleanly separating overlapping areas like get_gex_levels vs get_gamma_heatmap vs get_gamma_matrix and get_implied_odds vs get_vix_term_structure vs election_market_context. The boundaries between gamma, odds, calendar, filing and session tools are drawn precisely, leaving little room for misselection.
The dominant pattern is a clean get_<noun> convention (get_gex_levels, get_max_pain, get_oi_change), which is applied to most tools. Minor deviations exist: bare verbs fetch and search, list_squawkflow_tools, and the noun-first election_market_context break the pattern but remain readable and unambiguous.
At 17 tools the set is on the heavy side, but each tool targets a genuinely distinct dataset (GEX, gamma grid, sectors, odds, max pain, OI change, VIX curve, calendar, positioning, disclosures, 13F, session records) so few feel redundant. The count is slightly over but justified by the breadth of the market-structure domain.
The surface covers options-derived structure, VIX curve, macro filings, session history, election context, plus search/fetch for published pages, giving broad lifecycle coverage with clear discovery tools (list_squawkflow_tools, search). Gaps like raw spot quotes and economic releases are explicitly disclaimed rather than silently missing, so most agent workflows can proceed.
Available Tools
17 toolselection_market_contextElection market context: dated SPX movement, VX windows and clockRead-onlyIdempotentInspect
Use this when the question asks what the SPX chain prices for the first post-election session, which VX window includes Nov 3, or where the dated election week schedule is published. Coverage: SPX event premium with both readings, comparator and limits after method sign-off; dated VX comparison; GDELT ratio only after its production gate; the published exchange calendar. Not for: election outcomes, venue prices or polling arithmetic. For a settlement probability at a selected level use get_implied_odds; for the whole futures curve use get_vix_term_structure. Limits: risk-neutral prices are not forecasts. The straddle is a cross-check on the same quotes, not an independent estimate. Each source carries its own date. 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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| title | Yes | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
fetchRead one published SquawkFlow pageARead-onlyIdempotentInspect
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:, learn: or institution::, 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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | An id returned by search, for example session:2026-09-17 or page:/learn/how-to-calculate-gamma-exposure. A squawkflow.com URL is accepted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| text | Yes | |
| title | Yes | |
| metadata | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, yet the description adds substantial behavioral detail beyond them: unresolved ids return nothing rather than composed text, long pages are truncated with a note, data is delayed and derived, and every result ends with a dated citation even on failure. This is exactly the extra context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the use-when and not-for guidance, which is good, but the tail repeats the same anti-hallucination instruction twice ('a number you already remember ... is wrong now' and 'never a recalled number') and restates the citation rule across several sentences. Length is partly justified by the citation contract, but there is real redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, an output schema, and rich annotations, the description still supplies the pieces the agent cannot derive structurally: id formats, failure semantics, truncation, data staleness, and the mandatory citation/timestamp discipline. Nothing needed to call or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by enumerating the id namespaces (page:, session:, glossary:, learn:, institution:) and confirming a squawkflow.com URL is accepted. That is meaningfully more than the schema's single example, though it does not cover parsing/validation behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: read one published page's text by id, returning markdown verbatim plus a canonical URL to cite. It is clearly differentiated from the sibling `search` (which produces the ids this tool consumes) and from the market-figure tools it explicitly excludes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the trigger condition ('when you have an id from search and want the page text itself') and provides an explicit 'Not for' block covering arbitrary web pages and current market figures, which routes the agent to the right sibling tool. Alternatives are stated rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_congressional_disclosuresCongressional stock disclosures: three dates per recordRead-onlyIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| filer | No | Optional filer name, matched loosely against the name as the filing states it. | |
| limit | No | Records to return, 1 to 100. Newest public disclosure first. | |
| since | No | 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 window is the whole window rather than whatever survived the cap. | |
| symbol | No | Optional ticker filter, for example NVDA. Omit for all symbols. | |
| chamber | No | House or Senate. Omit for both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_filing_receipt13F filing receipt: what a manager reported, and whenRead-onlyIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Holdings rows to return, 1 to 50, largest reported value first. | |
| manager | No | 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. | |
| quarter | No | Quarter written YYYY-qN, for example 2026-q2. Omit for the most recently reported quarter on record for that manager. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_gamma_heatmapGamma exposure by strike and expiration: the gamma gridRead-onlyIdempotentInspect
Use this when the question is which expiry carries the gamma, how much gamma sits at one strike, which strikes gained open interest overnight on an index, or what the charm ramp into the close looks like today. 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 where same-day (0DTE) trading is concentrated. It also returns the second-order book: vanna and charm exposure, with the charm ramp walked at half-hour marks across one cash session and integrated, so the dealer index delta the clock removes between now and the close is a dollar figure rather than an inference. 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, and they are quoted in dollars of index delta rather than dollars of gamma, so they are not comparable to any gamma total. Every mark on the charm ramp holds spot and implied volatility at the capture and moves only the clock, which makes it a projection of this book rather than a statement about what happens next. The exposure block is best effort: when it is absent it prints the reason code the endpoint gave. A symbol outside the coverage list returns the SPX grid with a note saying so, not an error. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_gamma_matrixGamma matrix: dealer gamma across the sector ETFs and the index rowRead-onlyIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_gex_levelsGamma exposure (GEX) levels: call wall, put wall, gamma flipRead-onlyIdempotentInspect
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 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.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | 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. | |
| frontExpiry | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_implied_oddsMarket-implied probability that a level is exceeded by an expirationRead-onlyIdempotentInspect
Use this when the question is what probability the market puts on a level by a date, for example what probability the market puts on SPX above 7700 by Friday, or what odds the chain prices on QQQ closing below 740 next week. Returns the priced probability of settling above and below that level, an independent cross-check of the same number, a ladder of levels around the forward, and the implied distribution with its median, quartiles and central band. Coverage: SPX, SPY and QQQ only. One expiration per call, and only expirations settling within 90 days. Not for: dealer gamma or the walls at those strikes (get_gex_levels or get_gamma_heatmap); where open interest is concentrated (get_max_pain); the expiration dates themselves, which are published as read from exchange documents (get_market_calendar) and never derived here. Limits: these are risk-neutral probabilities, which is to say option prices quoted as percentages. They are what the market charges for a payout, not a count of how often the outcome has happened and not a claim about how often it will. Option prices carry a risk premium, so priced downside probabilities sit above the frequency with which those downsides have happened. Not a forecast and not a price target. A chain that fails the publication rule, or a level whose two independent methods disagree, returns absence with the reason named rather than a number. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | The price level the question is about, for example 7700. Omit for the implied distribution and the ladder of levels around the forward without a single highlighted level. | |
| symbol | No | SPX, SPY or QQQ. Defaults to SPX. Any other symbol returns the SPX answer plus a coverage note. | |
| expiration | No | Optional ISO expiration date. Omit for the nearest expiration. Must be one of the servableExpirations the result lists. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_lab_recordSquawkFlow Lab: dated simulated-record receiptsRead-onlyIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records to return, 1 to 50. Newest first. | |
| engine | No | Optional engine filter: spxman_v2, tripwire or harvester. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_market_calendarMarket calendar: sessions, exchange holidays and the next expirationRead-onlyIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ISO date the answer is made as of, which is the date "next" is measured from. Omit for today on the exchange clock. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_max_painMax pain strike for an SPX expirationRead-onlyIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | SPX, and SPX is the only covered symbol here. Any other symbol returns the SPX answer plus a coverage note. | |
| expiration | No | Optional ISO expiration date. Omit for the nearest expiration. Must be one of the availableExpirations the result lists. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_oi_changeOvernight open interest change between two settlementsRead-onlyIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | 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 does hold. The scan takes no date. | |
| scan | No | 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. | |
| limit | No | Rows to return, 1 to 50, largest absolute change first. | |
| symbol | No | One archived symbol, defaulting to SPX. A symbol the archive does not hold returns the SPX answer plus a coverage note. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_positioningCFTC futures positioning: long, short and net by trader classificationRead-onlyIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| weeks | No | Weekly readings of history to return, 1 to 52, oldest first. | |
| contract | No | A published page slug, for example sp500 or nasdaq100. Omit to list the pages. An unknown slug returns the list, never a similar page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_session_recordSquawkFlow session record: what was published before a sessionRead-onlyIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
get_vix_term_structureVIX futures term structure: contango or backwardationRead-onlyIdempotentInspect
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 the M2 minus M1 spread. 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. No historical percentile of the slope is returned. 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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
list_squawkflow_toolsWhat SquawkFlow covers: tools, data vintage and limitsRead-onlyIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| page | Yes | |
| tool | Yes | |
| notes | Yes | |
| stale | No | |
| table | No | |
| title | Yes | |
| usage | No | |
| source | Yes | |
| metrics | Yes | |
| version | Yes | |
| capturedAt | No | |
| source_url | No | |
| staleSince | No |
searchSearch the pages SquawkFlow publishesARead-onlyIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results to return, 1 to 20. | |
| query | Yes | A natural-language query. An ISO date such as 2026-09-17 finds the dated session record for it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| query | Yes | |
| results | Yes | |
| retrievedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/openWorld annotations, it discloses that coverage comes from the site's published index rather than the API (so it costs market-data endpoints nothing), that unpublished pages are un-findable and ids are never invented, that ranking is plain lexical match, and that data is delayed/derived. It also specifies failure behavior (return last good reading with as-of time, cite on failure too) – unusually rich disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and usage are front-loaded and the sentences are dense with distinct information (coverage, limits, ranking, citation rule). It is long and the citation/investment-advice tail is somewhat repetitive of earlier points, costing it a point, but almost every clause carries selection or behavior value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with an output schema, it covers what an agent needs: scope, return fields, handoff to fetch, exclusion of market data, freshness constraints, citation requirements, and failure handling. Nothing material for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in the schema (including the ISO-date behavior and the 1–20 limit), so the description adds little beyond them. Baseline 3 applies; the 'pass an id to fetch' note concerns result usage, not the input parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (search the pages SquawkFlow publishes) and enumerates the page types returned (glossary, methodology, calendars, filing pages, dated session records) plus the return shape (ids, titles, canonical URLs). It explicitly distinguishes itself from the sibling market-data tools that return numbers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('when you want the page that answers a question, or a citable link rather than a number'), the handoff to fetch ('pass an id to fetch'), and an explicit not-for clause ('market figures of any kind... call the tool that publishes it'). Both sides of the routing decision are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
- Changed
election_market_context2 fields changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "pattern": "^https:\\/\\/squawkflow\\.com\\/elections\\/2026\\?utm_[A-Za-z0-9_=&-]+$", + "type": "string" +} - added
Output schema / properties / source_urlAdded value: +{ + "pattern": "^https:\\/\\/squawkflow\\.com\\/elections\\/2026\\?utm_[A-Za-z0-9_=&-]+$", + "type": "string" +}
- Changed
get_congressional_disclosures1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_filing_receipt1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_gamma_heatmap1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_gamma_matrix1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_gex_levels1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_implied_odds1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_lab_record1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_market_calendar1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_max_pain1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_oi_change1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_positioning1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_session_record1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
get_vix_term_structure1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
- Changed
list_squawkflow_tools1 field changed- added
Output schema / properties / source_urlAdded value: +{ + "type": "string" +}
15 tool updates
- Added
election_market_context - Changed
get_congressional_disclosures1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_filing_receipt1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_gamma_heatmap1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_gamma_matrix1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_gex_levels1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_implied_odds1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_lab_record1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_market_calendar1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_max_pain1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_oi_change1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_positioning1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_session_record1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
get_vix_term_structure1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
- Changed
list_squawkflow_tools1 field changed- added
Output schema / properties / usageAdded value: +{ + "type": "string" +}
14 tool updates
- Changed
get_congressional_disclosures1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_filing_receipt1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_gamma_heatmap1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_gamma_matrix1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_gex_levels1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_implied_odds1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_lab_record1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_market_calendar1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_max_pain1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_oi_change1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_positioning1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_session_record1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
get_vix_term_structure1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
- Changed
list_squawkflow_tools1 field changed- added
Output schema / properties / page / properties / urlAdded value: +{ + "type": "string" +}
1 tool update
- Added
get_implied_odds
1 tool update
- Changed
get_gex_levels1 field changed- added
Input schema / properties / frontExpiryAdded 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" +}
3 tool updates
- Changed
get_congressional_disclosures1 field changed- changed
Input schema / properties / since / descriptionPrevious value: -"ISO date. Filters on the PUBLIC DISCLOSURE date, not the transaction date, because disclosure is the date the record became knowable."New value: +"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 window is the whole window rather than whatever survived the cap."
- Added
get_market_calendar - Changed
get_oi_change2 fields changed- added
Input schema / properties / dateAdded value: +{ + "description": "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 does hold. The scan takes no date.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - changed
Input schema / properties / scan / descriptionPrevious value: -"True returns the largest movers across every archived symbol instead of one symbol. The symbol argument is ignored when this is true."New value: +"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."
14 tool updates
- Added
fetch - Added
get_congressional_disclosures - Added
get_filing_receipt - Changed
get_gamma_heatmap1 field changed- changed
Output 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" +}
- Added
get_gamma_matrix - Changed
get_gex_levels1 field changed- changed
Output 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" +}
- Changed
get_lab_record1 field changed- changed
Output 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" +}
- Changed
get_max_pain1 field changed- changed
Output 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" +}
- Added
get_oi_change - Added
get_positioning - Added
get_session_record - Changed
get_vix_term_structure1 field changed- changed
Output 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" +}
- Changed
list_squawkflow_tools1 field changed- changed
Output 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" +}
- Added
search
6 tool updates
- First observed
get_gamma_heatmap - First observed
get_gex_levels - First observed
get_lab_record - First observed
get_max_pain - First observed
get_vix_term_structure - First observed
list_squawkflow_tools
Related MCP Connectors
Free delayed gamma flip, call and put walls, max pain and net dealer gamma
Free dealer-gamma call walls, put walls and gamma flip for ES, NQ, SPX and QQQ, graded daily.
Options flow, volatility, dealer positioning (GEX) and dark pool data for AI trading agents.
Free US market data as tools: SEC filings, insiders, short interest, 13F, COT, Fed liquidity.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides a consolidated 0DTE options cockpit for SPX/SPXW, including chain, Greeks, dealer exposure, volatility term structure, and economic events, using free delayed market data.2MIT
- AlicenseAqualityAmaintenanceAnti-firehose options-flow data for AI agents: curated daily pool, features, realized outcomes.9MIT
- AlicenseAqualityBmaintenanceMCP server for Quant Data, providing measured market statistics for index futures and equities, including day-type probabilities, Weis volume-price waves, options max pain, and dealer gamma exposure. Includes free keyless access and emphasizes honest reporting of model limitations.51MIT
- AlicenseAqualityDmaintenanceProvides actionable financial intelligence tools for AI agents including insider buying signals, earnings IV plays, market pulse, stock analysis, and options strategies via free public data sources.6MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.