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 43 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 17 tools
Despite a cluster of gamma-related tools (get_gex_levels, get_gamma_heatmap, get_gamma_matrix), each description sharply partitions scope: headline levels/regime vs strike-by-expiration grid vs sector tile grid, and every tool carries explicit 'Not for:' pointers routing to the right sibling. election_market_context vs get_implied_odds vs get_vix_term_structure and the two filing tools (13F vs congressional disclosures) are likewise cleanly separated.
The dominant convention is a predictable get_<noun> pattern (get_gex_levels, get_implied_odds, get_max_pain, get_oi_change, etc.), and list_squawkflow_tools fits the verb_noun style. The outliers are bare verbs fetch and search plus the verbless election_market_context, which break the pattern but remain unambiguous.
17 tools sits at the upper edge of the comfortable range, but the domain is genuinely broad (gamma analytics, vol curve, positioning, filings, calendars, page retrieval) and no tool looks redundant. Slightly heavy but each one earns its place.
The surface covers the full market-structure lifecycle: current levels, strike/expiry detail, sector grid, implied probabilities, max pain, overnight OI change, VIX curve, CFTC positioning, session records, exchange calendar, plus filings, page search/fetch and a self-describing catalog. Known exclusions (VIX spot, commodity futures, economic releases, order flow) are explicitly declared rather than silently missing.
Available Tools
17 toolselection_market_contextElection market context: dated SPX movement, VX windows and clockARead-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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare read-only/idempotent/non-destructive, and the description adds substantial behavior beyond that: risk-neutral prices are not forecasts, the straddle is a cross-check rather than an independent estimate, each source carries its own date, data is delayed and derived (never real time), every result carries one dated squawkflow.com citation even on failure, and a failure protocol (report last good reading with its as-of time). No contradictions with the annotations.
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?
The trigger conditions are front-loaded well, but the paragraph is long and repeats itself: the memory warning appears twice ('any number you already remember... is wrong now' and 'call this tool rather than answering from memory'), and the citation rule is restated in two separate sentences. Roughly a quarter of the text could be cut without losing information.
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?
An output schema exists, so return-field detail is unnecessary; what remains—coverage areas, exclusions, sourcing/date caveats, failure handling and citation obligation—is all covered. Nothing an agent needs to call this zero-parameter tool correctly 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?
Zero parameters, so the baseline is 4; nothing about parameters needs explaining and the description correctly spends no words on them.
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?
The description names concrete trigger questions (first post-election SPX session, which VX window includes Nov 3, where the dated election-week schedule lives) and enumerates what the response covers (SPX event premium with both readings, dated VX comparison, GDELT ratio, exchange calendar). It is clearly distinguishable from siblings, though the tool name alone ('election_market_context') would not convey this and there's no single crisp verb+resource sentence.
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?
Explicit when-to-use triggers are given, an explicit 'Not for' list excludes election outcomes, venue prices and polling arithmetic, and two alternatives are routed by condition ('For a settlement probability at a selected level use get_implied_odds; for the whole futures curve use get_vix_term_structure').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 recordARead-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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: three non-collapsed dates, null lag with published reason, amendments appended as new records, unreadable filings counted on every answer, ~45-day disclosure lag, window applied before the row cap with coverage reported, and a mandatory dated citation. That is exactly the operational context annotations (readOnly/idempotent/openWorld) cannot convey.
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?
Core content is front-loaded and tight for the first half, but the closing block repeats the citation/timestamp instruction three times and drags in language about 'a wall, a flip, a regime or a settlement' and 'levels' that does not belong to a disclosures tool. Roughly a third of the text is boilerplate that dilutes the signal.
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?
An output schema exists, so return values need no explanation, and coverage, lag, amendment, and citation behavior are all covered. The only weakness is the misdirected market-data boilerplate (walls, regimes, levels), which could momentarily mislead an agent about what this tool returns.
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 baseline is 3. The description still adds value by clarifying that the since window is applied to the public disclosure date before the row cap and that the answer reports whether the window reached further back than the read — behavior the schema hints at but does not fully state.
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?
Opens with a specific trigger ('what a member of Congress disclosed buying or selling, or who disclosed trading a ticker') and names the exact data sources (House Clerk PTRs, Senate eFD). It also explicitly routes 13F work to get_filing_receipt, so an agent can separate it from siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit 'Use this when' trigger, an explicit 'Not for:' exclusion list (rationale, timing, performance, rankings, committee links), and names the alternative tool for institutional filings. The since/public-disclosure-date caveat further constrains correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_filing_receipt13F filing receipt: what a manager reported, and whenARead-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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnly/idempotent annotations: 45-day filing lag, long-only US equity and option scope, absence of shorts/cash/bonds/non-US, cohort being a chosen list rather than a census, delayed derived data, and a mandatory dated citation on both success and failure. A no-filing quarter returning an answer rather than an error is exactly the kind of behavior an agent cannot infer from annotations.
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?
The relevant content (trigger, returns, coverage, exclusions, limits) is well front-loaded, but a large trailing block is boilerplate copied from a market-level tool: 'a wall, a flip, a regime or a settlement', 'never present a level, wall or regime without its timestamp', plus a repeated citation rule. None of that earns its place in a 13F receipt tool and it dilutes the operative guidance.
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?
Covers scope, cohort limits, data lag, failure behavior, and citation obligations; an output schema exists so return-shape explanation is optional rather than required. What is missing is anything about ordering, pagination, or truncation when limit caps holdings rows — though 'largest reported value first' in the schema partially covers ordering.
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% and the schema already documents limit (1-50, largest value first), manager slug semantics including the 'outside the cohort returns the cohort' fallback, and YYYY-qN quarter format. The description only restates 'omit the manager to list the published cohort', adding little beyond the schema, so baseline 3 applies.
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 ('returns the reported positions... accession number, period of report, acceptance date, revision history') and a precise trigger ('what an institutional manager reported holding in a quarter'). It also differentiates itself from the nearest sibling by name ('congressional filings (get_congressional_disclosures)' and the real-time/performance tools it is not).
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?
Explicit 'Use this when...' plus an explicit 'Not for:' exclusion list (current holdings, price, performance, returns, rankings, congressional filings) with the alternative named. The empty-quarter case is clarified as a valid answer rather than an error, which removes a common misroute.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gamma_heatmapGamma exposure by strike and expiration: the gamma gridARead-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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (readOnly/idempotent/openWorld already cover the safety profile) by disclosing the five-minute cache, the SPX/SPY/QQQ coverage ceiling, the six-expiration render limit vs. full row totals, the reason-code behavior when the exposure block is missing, and the non-error fallback that returns the SPX grid for an out-of-coverage symbol. It also flags charm/vanna as model projections in delta dollars rather than gamma dollars, which prevents a real unit-mismatch error.
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?
It front-loads a use-case clause rather than the one-line identity of the tool, so the definition of what the heatmap actually is arrives second. Several compliance paragraphs (memory, citation, no-trade-advice) restate the same instruction more than once, which inflates length without adding distinct information.
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 an output schema present, return structure needn't be described, and the description covers everything else an agent needs: coverage, cache freshness, display limits, model-vs-measurement caveats, degradation behavior, and the mandatory dated citation. Nothing required to call or interpret it correctly 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% and the single parameter's description already carries the default and fallback rules, so the schema does most of the work. The description reinforces this with the coverage list and the SPX-default rationale ('deepest chain and the richest grid'), adding a little meaning beyond the schema but not much that is new.
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?
Defines a specific resource (dealer gamma broken out by strike AND expiration, plus vanna/charm) and states the distinguishing axis versus an aggregate in one line: 'An aggregate cannot tell 500M in one expiration from 500M spread over several.' It also names the alternatives it is not (get_gex_levels, get_gamma_matrix, get_oi_change), so an agent can route without opening siblings' schemas.
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?
Opens with concrete triggering questions (which expiry carries the gamma, where 0DTE concentrates, the charm ramp into the close) and closes with an explicit 'Not for:' list mapping each excluded use to the correct sibling tool. When-to-use, when-not-to-use and alternatives are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gamma_matrixGamma matrix: dealer gamma across the sector ETFs and the index rowARead-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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses that results come from a cached grid with stated age, are never rebuilt on request because a cold build is fourteen chain pulls, and that sector tiles are measured from a window around spot so a sector total differs from the SPX total, and that no gamma regime exists for sector ETFs. Also flags delayed/derived data and failure behavior (return last good reading with as-of time).
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 purpose, scope and alternatives before the caveats, and most sentences carry distinct facts (build cost, measurement window, citation rule, staleness). It is long and the guardrail prose repeats itself somewhat around citations and trade-decision refusals, keeping it off a 5.
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 an output schema present, rich annotations and zero parameters, the description supplies everything else an agent needs: measurement semantics, staleness handling, failure behavior and citation requirements. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters gives a baseline of 4, and the description still adds meaning by explaining that the symbol set is a fixed grid and 'not a parameter,' which justifies the empty schema and prevents an agent from trying to pass symbols.
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 plus exact scope: 'where dealer gamma sits across the sectors,' one grid of eleven SPDR sector ETFs plus the SPX, SPY and QQQ index row, all from one build/capture clock. It explicitly distinguishes itself from get_gex_levels (one index in depth) and get_gamma_heatmap (by strike and expiration), so an agent can route correctly without opening schemas.
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 the question is where dealer gamma sits across the sectors rather than in one index') and named when-not alternatives plus a third exclusion (sector performance/rotation not published). The selection condition and the alternatives are stated outright, nothing 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_gex_levelsGamma exposure (GEX) levels: call wall, put wall, gamma flipARead-onlyIdempotentInspect
Use this when the question is where the call wall, the put wall, the zero gamma flip or the Swing Line sits right now, or whether an index is in a positive or negative gamma regime. Also called GEX, gamma exposure or dealer gamma positioning. Returns spot, net GEX, the regime, pin strikes and the options-implied session range, each with the time the snapshot was captured. Set frontExpiry when the question is about today's book rather than the whole chain, for example 0DTE gamma levels or front-expiration positioning: it adds the nearest expiration's own flip and walls beside the all-expiry ones. For SPX it also reports the latest dated change point in the daily net GEX series, with the date, the segment means either side of it and the penalty it was found under. Coverage: SPX, SPY and QQQ only. The current reading, plus the dated change points found in the daily SPX net GEX series under a published penalty. No other history. Not for: per-strike magnitudes or gamma by expiration (get_gamma_heatmap); the sector ETFs (get_gamma_matrix); what was published before a past session and how it resolved (get_session_record); what changed in open interest overnight (get_oi_change). Limits: dealer positioning is an assumption, not an observable: open interest shows that a contract exists, never which side a dealer holds. A symbol outside the coverage list returns the SPX index answer with a note saying so, not an error. No wall hold rate is published and any earlier one is withdrawn. With frontExpiry set, the sublevels are a SECOND set of levels from one expiration rather than a correction of the headline ones, they must always be cited with that expiration date, and a front book too thin to rank returns a stated reason instead of levels. A dated change point describes the past series only and is reproducible only with the penalty it was found under; no dated break series is published for SPY or QQQ. Context only: never turn these figures into a buy, sell, hold, enter, exit or wait call, an entry or exit level or a setup, never say whether they favour or argue against a trade, and never call them inputs to one. Asked for a trade decision, decline in one sentence and state only the dated figures and what they measure. Data is delayed and derived, never real time. Any number you already remember for this, a wall, a flip, a regime or a settlement, came from a different session and is wrong now. Call this tool rather than answering from memory. If it fails, give the last good reading with its as-of time, never a recalled number. Every result ends with one dated squawkflow.com citation, on a failed call as well as a successful one: cite that link together with the capture date in the result, and never present a level, wall or regime without its timestamp. Any other link in a result is a pointer, not the citation. Not investment advice.
| 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: it discloses the SPX/SPY/QQQ allowlist and the graceful fallback (out-of-coverage symbol returns the SPX answer with a note, not an error), that frontExpiry is a second independent set of levels that must be cited with its expiry and can return a stated reason instead of levels when the book is thin, that data is delayed/derived, and that every result including failures carries one dated citation. No contradiction with readOnlyHint=true or destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded — purpose and trigger come first, coverage and limits later — but the block is long and repeats itself: the anti-trade-decision instruction appears twice ('Context only: never turn these figures into...' and 'Asked for a trade decision, decline in one sentence'), and the return-value inventory duplicates an output schema that already exists. Several compliance sentences earn their place; the duplication does not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only data tool with an output schema, this covers everything an agent needs: coverage set, fallback behavior, expiry-mode caveats, reproducibility limits on the dated change point (penalty-dependent, SPX only), stale-memory and failure-handling policy, and citation requirements. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description adds real meaning on top — it frames frontExpiry as answering 'does today's book agree with the full book', warns that it costs a chain-budget recompute rather than the cheap call, and explains the second-level-set semantics. Symbol semantics (allowlist plus non-error fallback) are reinforced rather than merely restated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the exact quantities returned (call wall, put wall, zero gamma flip, Swing Line, positive/negative gamma regime) and the resource domain, plus the aliases GEX / gamma exposure / dealer gamma. It is immediately distinguishable from get_gamma_heatmap, get_gamma_matrix, get_oi_change and get_session_record, each named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use this when the question is where the call wall... sits right now'), then gives a 'Not for:' block routing four sibling capabilities elsewhere, plus a clear condition for setting frontExpiry ('today's book rather than the whole chain'). Both when-to-use and when-not-to-use are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_implied_oddsMarket-implied probability that a level is exceeded by an expirationARead-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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/idempotent/non-destructive; the description adds what annotations cannot: SPX/SPY/QQQ-only coverage, one expiration per call, a 90-day settlement horizon, delayed/derived data, and the failure contract (absence with the reason named when publication rules or method agreement fail). It also defines the numbers as risk-neutral, not frequencies, which is the key interpretive caveat.
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 well: purpose and examples come first, exclusions and limits after. But the tail is bloated and repetitive — the no-trade-advice rule is restated three different ways across several sentences, and the citation/timestamp mandate runs long, pushing length well past what the routing and computation details require.
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?
An output schema exists, so return values need not be re-explained, yet the description still orients the agent to what comes back and how to treat a null. Combined with coverage limits, failure semantics, and the interpretation caveat, an agent has everything needed to call and report results correctly.
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 baseline is 3; the description earns a lift by adding constraints the schema omits — symbol coverage limits (SPX/SPY/QQQ only) and the rule that only expirations settling within 90 days are servable, which directly constrains the `expiration` parameter beyond its ISO-format description.
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 computation (market-implied probability a level is exceeded by an expiration) and grounds it with two concrete examples (SPX above 7700 by Friday, QQQ below 740 next week). It also enumerates the returned artifacts (priced probability above/below, cross-check, ladder, implied distribution with median/quartiles/band), which no sibling offers.
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?
Opens with an explicit 'Use this when...' trigger and then names four exclusion zones with the sibling to use instead (get_gex_levels / get_gamma_heatmap for walls, get_max_pain for OI concentration, get_market_calendar for expiration dates). The agent can route without opening any schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lab_recordSquawkFlow Lab: dated simulated-record receiptsARead-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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world, but the description adds substantial context beyond them: a 50-record per-call cap, omission and counting of unknown/undated records, delayed-and-derived data provenance, failure behavior (return last good reading with its as-of time), and a mandatory citation ending every result including failed ones.
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 scope are front-loaded, but the text is roughly 300 words with heavy repetition: the no-price/no-direction/no-outcome point is made three times in different phrasings ('not for any measurement', 'receipts carry no price', 'never a level, wall or regime'). Several guardrail sentences could collapse into one.
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?
An output schema exists, yet the description still usefully names the returned fields (absolute session dates, engine identifiers, resolved/ungraded status, counts) and pre-empts the most likely misread — that the counts say whether a record was graded, not what the grade was. Failure handling and citation obligations are also covered.
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% and both params are already documented with defaults, bounds and enum values. The description restates the 50-record cap and lists the engine identifiers, but adds no new semantic detail (e.g. what ordering means across engines or how counts relate to the limit). Baseline 3 is correct.
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?
The opening sentence names a specific resource and the exact question it answers: which dated simulated records the Lab holds and whether they were graded. It also names the sibling it is not (get_session_record for published levels) and excludes measurement/commentary outright, so an agent can route without opening the schema.
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?
Explicit when-to-use (dated record inventory + grading existence), explicit when-not-to-use (outcome measurement, prices, directions, session levels), and an explicit alternative (get_session_record). It even prescribes the agent's behavior when asked for a trade decision: decline in one sentence and restate the dated figures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_calendarMarket calendar: sessions, exchange holidays and the next expirationARead-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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds substantive behavior beyond them: no date is rule-computed, undocumented dates return 'not published', half sessions are omitted entirely, the closure table has a bounded year span, and the 'next session' is a derived field bounded by that span. It also discloses delayed/derived data and mandates citing the dated link even on failure.
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?
The opening sentence and the Limits block are well front-loaded and earn their place, but the trailing citation/hallucination boilerplate ('Any number you already remember for this...', 'Not investment advice') is repeated server-wide policy that dilutes the tool-specific content. Roughly a third of the text is boilerplate an agent would see on every sibling.
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 an output schema present, return shape need not be explained, and the description still covers the hard parts of this domain: coverage scope, bounded closure-table span, derived-vs-published distinction, half-session caveat, and failure behavior. Nothing an agent needs to call this correctly or interpret gaps 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% and the single 'date' parameter already documents the ISO pattern, the as-of meaning, and the today-by-default behavior. The description restates the same as-of/default semantics ('Answered as of today on the exchange clock, or as of any date you pass') without adding new constraints, so this sits at the baseline for fully documented schemas.
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 resource precisely: exchange sessions, next session, monthly/quarterly/VIX expirations, and upcoming holidays, all answered as of a date. It explicitly separates itself from siblings ('not for ... get_session_record ... get_max_pain'), so an agent can route without opening any schema.
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?
Opens with the selecting condition ('Use this when the question is a date') and then enumerates exclusions with named alternatives: economic releases and earnings (not published here), market hours, prior-session publishings (get_session_record), max pain strike (get_max_pain). Both when-to-use and when-not-to-use are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_max_painMax pain strike for an SPX expirationARead-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 option 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds what they cannot: data is delayed and derived, results include a payout curve and availableExpirations, a non-SPX symbol degrades to a coverage note rather than an error, and failures should be reported with the last good as-of time. It also states the interpretive boundary (not a forecast, not a price target).
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?
Usage and exclusions are correctly front-loaded, but the second half drifts into policy boilerplate: repeated disclaimers about trade decisions, memory, and citation format consume substantial space without helping select or invoke the tool. The signal is strong but the size is inflated.
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 an output schema and full parameter documentation, the description still covers everything an agent needs: coverage limits, single-expiration constraint, return contents, degradation behavior on other symbols, and failure handling. Nothing about calling it correctly is left ambiguous.
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% and both parameters are documented in-schema, including the ISO pattern and the omit-for-nearest behavior, so the baseline is 3. The description adds little parameter-level detail beyond repeating the symbol fallback and 'one expiration per call', both of which the schema already conveys.
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?
Names a specific metric and resource ('settlement strike that minimises the aggregate option payout for one expiration') plus scope ('Coverage: SPX only. One expiration per call'). It explicitly disambiguates from get_gex_levels, get_gamma_heatmap and get_oi_change, so an agent can pick it without opening schemas.
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 trigger phrasing ('when the question is what max pain is for an expiration, or where the pain point sits for this Friday') and an explicit 'Not for:' list routing to the correct siblings for gamma, OI change and expiration dates. The alternative-for-alternative routing is unusually complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_oi_changeOvernight open interest change between two settlementsARead-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 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, yet the description adds substantial behavioural detail the annotations cannot: OI is a post-close settlement figure so an intraday read carries the previous settlement; unmoved strikes print zero rather than gap; an unheld symbol falls back to SPX with a note; an unheld date returns an absence with the range held. It also discloses refusal semantics for scan+date and the citation requirement, with nothing contradicting readOnlyHint.
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?
The use case is correctly front-loaded, but the paragraph is long and includes repeated policy statements — two separate sentences on citing the dated link, two on never converting figures into a trade call, and a 'Not for' bullet that is actually a fallback behaviour (unheld settlement date). The guardrails are useful, but several restate the same point and could be consolidated.
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 an output schema present, the description need not explain return shape, and it focuses instead on the things an agent cannot infer: settlement timing, zero-vs-gap semantics, fallback and refusal behaviour, and citation obligations. Nothing needed to call the tool correctly in either mode 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 the four parameter descriptions already carry the date-vs-vintage, scan, symbol-fallback and limit semantics, so the baseline is 3. The description mostly restates those same rules narratively (defaults to two newest, scan ignores symbol/refuses date) rather than adding format or edge-case meaning beyond the schema.
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?
The opening sentence names a specific verb and resource — what gained or lost open interest between two daily settlements, with signed contract counts and both dates — so the agent knows exactly what the tool returns. It is explicitly differentiated from named siblings (get_gamma_heatmap, get_gex_levels, get_market_calendar) and from option trades/order flow, which no other schema field could convey.
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?
It states the default behaviour (two newest settlements), how to switch modes (pass a date for an archived vintage vs. the one before it; set scan=true for the whole-archive movers view), and adds an explicit 'Not for:' list routing to the correct alternatives. The conditions that select each mode are spelled out rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_positioningCFTC futures positioning: long, short and net by trader classificationARead-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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: it discloses the Tuesday-as-of / Friday-publication lag, defines net as an arithmetic difference rather than sentiment, states that markets with different multipliers are never aggregated, and specifies failure handling (return last good reading with as-of time, never a recalled number) and citation obligations. That is substantive operational context an agent cannot get from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and coverage are correctly front-loaded, but the body runs long with repetition ('not a market feed' / 'Data is delayed and derived, never real time', and a triple 'never ... never ... never' policy block). The compliance and citation material earns its place, but the same constraint is asserted two or three times.
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?
Covers the universe of published pages, the temporal semantics of the data, cross-market aggregation limits, and the output contract, with return values left to the existing output schema. Nothing an agent needs to call this correctly 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% and the contract parameter's omit-to-list behaviour is already documented in the schema, so the description's restatement adds little. The weeks parameter (1-52, oldest first) is never mentioned in the description, leaving the schema to carry it; baseline 3 is appropriate.
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 the precise resource (index futures positioning by trader classification, enumerating dealers, asset managers, leveraged funds, other/nonreportables) and the exact output shape (long, short, spreading, net plus week history). It also contrasts itself with get_gex_levels and with commodity futures, so the agent can distinguish it from siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use this when the question is how index futures positioning is distributed...'), explicit exclusions ('Not for: options positioning or dealer gamma (get_gex_levels); commodity futures...; any reading of the session in progress'), and a fallback behaviour (omit contract to list pages). The alternative tool is named with the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_recordSquawkFlow session record: what was published before a sessionARead-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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Well beyond the readOnly/idempotent annotations: discloses that weekends/holidays return a distinct 'not a session' answer versus a missing record, that open/close/high/low are vendor-derived and withheld, that data is delayed, that results carry a dated citation even on failure, and what to do if the call fails. These are non-obvious behavioral traits an agent could not infer from annotations or schema.
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 scope are correctly front-loaded, but the description is unusually long and reiterates the trading-advice prohibition across several sentences ('never turn these figures into...', 'never say whether they favour...', 'Asked for a trade decision, decline...'). Much of it earns its place as compliance context, yet the safety language could be tightened without losing meaning.
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?
Given a single optional parameter and an output schema, the description covers everything an agent needs: coverage boundaries, what the record contains, absent fields, failure handling, and citation requirements. Nothing material is missing for correct invocation and interpretation.
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% and the schema already explains the ISO date format, the omit-for-latest default, and unlisted-date behavior. The description adds interpretive meaning: the published index defines the entire valid coverage, and a non-session date is a different answer from a missing record — useful semantics the schema does not fully spell out.
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?
Opens with a specific condition and resource: the dated SquawkFlow record for one session, listing exactly what it contains (published levels, verdicts, capture coverage, move from prior session, settled/open status). It explicitly contrasts itself with get_gex_levels as 'the dated tool on this server', so an agent can distinguish it from siblings without opening schemas.
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 ('pass a date to ask about a past session'), when-not ('the current reading (get_gex_levels)', cross-session rates, forward statements), and names the alternative tool. It also pre-empts the trade-decision use case with a prescribed decline response.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vix_term_structureVIX futures term structure: contango or backwardationARead-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: Official 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description vastly expands upon the sparse annotations by detailing critical operational behaviors: the data is delayed/derived, it does not describe future volatility, and it mandates specific citation practices (dated squawkflow.com citation on every result). This level of detail is crucial for a low-certainty market data tool.
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?
The definition is extremely verbose, making conciseness low. While nearly every sentence serves a critical safety or scoping function, the sheer density of rules (e.g., rules on advice, historical recollection, citation formats) makes it poorly structured for an agent seeking a quick utility overview.
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?
Given the complexity of the financial instrument (VIX futures) and the mandatory safety/disclaimer constraints, the description is maximally complete. An agent cannot safely or accurately invoke this tool without reading the entire passage.
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?
The input schema is empty (0 parameters), meaning the description cannot explain parameter meaning. However, since 0 parameters means 100% schema coverage, the baseline score is high, and the description provides necessary context on *what* is returned (regime, M9-M1 spread, etc.) to the agent.
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?
The purpose is exceptionally clear: to provide the VIX futures term structure (contango/backwardation, steepness, front month settlements). It specifies the scope as the 'Official monthly VIX futures settlement curve,' providing precise financial context.
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?
The guidelines are comprehensive, addressing not only when to use it ('when the question is whether VIX is in contango') but also explicitly what it is not for (VIX spot, weekly futures) and how to handle external prompts (decline trade advice in one sentence).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_squawkflow_toolsWhat SquawkFlow covers: tools, data vintage and limitsARead-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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description layers on what annotations cannot: it makes no market data call, the same body is readable as a resource without spending a tool call, data is delayed and derived rather than real time, and it mandates citation plus timestamp discipline even on a failed call. It also specifies failure behavior (return the last good reading with its as-of time, never a recalled number).
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?
The purpose, exclusion and alternative are front-loaded, which is good, but the tail becomes policy boilerplate: the citation/timestamp rule is restated across several sentences ('cite that link together with the capture date', 'never present a level, wall or regime without its timestamp', 'never a recalled number'), and 'Not investment advice' is ancillary. Useful content, but it would be tighter with the citation and failure rules consolidated.
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 zero-arg, read-only catalog tool with an output schema, the description covers everything an agent needs: what is returned (tools, coverage, data age, boundaries), how to avoid spending a call (resource), fallback behavior on failure, and the citation obligation. Return-value structure is correctly left to the output schema.
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?
The tool takes zero parameters and the empty schema is self-evident, so the description only needs to confirm 'Takes no arguments'. That is a clean baseline-4 case with nothing further required.
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: it returns the coverage catalog of every tool on the server, with data vintage and limits. It explicitly distinguishes itself from the data-returning siblings by saying 'Not for: any market figure' and 'This returns descriptions, not data', so an agent can tell it apart from get_gamma_heatmap, get_implied_odds and the rest.
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 trigger conditions ('when you are not sure whether SquawkFlow has the symbol, the date, the expiration or the measure you need'), an explicit exclusion ('Not for: any market figure'), and names an alternative access path (the sf://catalog resource) plus the redirect instruction to call the tool it names instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 / linkLabelAdded value: +{ + "type": "string" +} - changed
Output schema / properties / source / constPrevious value: -"Delayed Cboe chain, Cboe daily settlements and GDELT with their own dates"New value: +"Delayed option chain, official daily settlements and GDELT with their own dates"
- Changed
get_congressional_disclosures1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_filing_receipt1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_gamma_heatmap1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_gamma_matrix1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_gex_levels1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_implied_odds1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_lab_record1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_market_calendar1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_max_pain1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_oi_change1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_positioning1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_session_record1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
get_vix_term_structure1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
- Changed
list_squawkflow_tools1 field changed- added
Output schema / properties / page / properties / linkLabelAdded value: +{ + "type": "string" +}
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.
US stocks incl. delisted, futures, CPI/macro vintages, point-in-time GEX, 13F, COT, backtests.
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
- AlicenseAqualityAmaintenanceA full finance desk for your AI agent: 355 tools in one free server with no API key, reading SEC filings, earnings guidance, insider trades, options, rates and macro data from the source, plus quant analytics and backtest validation. The agent sees 5 tools and searches the rest, so it stays light on context.51,777 npmMIT
- AlicenseAqualityAmaintenanceAnti-firehose options-flow data for AI agents: curated daily pool, features, realized outcomes.9MIT
- AlicenseAqualityCmaintenanceMCP 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
Glama MCP Gateway
Add one secure layer between your agents and this server.