FirmTape - SPX dealer positioning
Server Details
Backtest SPX gamma exposure (GEX) rules: dealer flip, call/put walls, 1,000+ session archive
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
8 toolsfetchFetch a FirmTape documentARead-onlyIdempotentInspect
Retrieve the full text of one FirmTape document by the id search returned: session:YYYY-MM-DD for a finished trading session, page:/path for an explainer or research page. A FirmTape URL or a bare YYYY-MM-DD trading day is accepted too. Use when: you hold an id from search, or a client that only speaks search/fetch (ChatGPT). Not for: structured numbers — get_session and get_levels answer the same day with fields instead of prose. Limits: public FirmTape documents only; long pages are truncated with a link to the rest.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | An id from `search`, a FirmTape URL, or a YYYY-MM-DD trading day |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only, idempotent, open-world, non-destructive behavior. The description adds meaningful behavioral context beyond those: public documents only, and long pages are truncated with a link to the rest. This fully discloses the key operational caveats.
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 description is dense but well-structured: it front-loads what the tool does, then covers id formats, usage context, exclusions, and limits in a compact set of sentences. No filler or restatement of the title.
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 single-parameter read tool with strong annotations and no output schema, the description covers what an agent needs: id formats, when to use it, when not to use it, alternatives, access limits, and truncation behavior. Nothing essential 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?
The schema covers the id parameter at 100%, but the description goes further by specifying the exact accepted forms: `session:YYYY-MM-DD`, `page:/path`, a FirmTape URL, or a bare YYYY-MM-DD trading day. This gives the agent enough detail to construct a valid id.
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 states a specific verb and resource: retrieve the full text of one FirmTape document by id. It enumerates accepted id formats and explicitly contrasts the tool with get_session and get_levels, so an agent can distinguish it from siblings without inspecting 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?
It gives explicit when-to-use conditions ('you hold an id from search, or a client that only speaks search/fetch') and explicit when-not-to-use conditions ('Not for: structured numbers — get_session and get_levels answer the same day with fields instead of prose'). This is model guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gex_profileGamma by strikeARead-onlyIdempotentInspect
The SPX dealer gamma LADDER for one minute of a finished session: gamma by strike around spot, the level set, and the heaviest strikes. Readable as the MEASURED book (signed off the trade tape, FirmTape's own read), as the OPEN_INTEREST convention every other public GEX chart draws, or as the VOLUME convention — the same minute through three lenses. Use when: the question is about SHAPE — where gamma sits, how heavy a wall is, how far the three conventions disagree — or about one moment inside a session rather than the day as a whole. Not for: a day's headline numbers (get_session), the level set alone (get_levels), or movement across days (get_level_history). Limits: finished sessions only, one frame every 5 minutes (a requested minute snaps back to the frame at or before it), published window ±2.5% of spot; the three books are not comparable in magnitude. Measurements only, no buy/sell signals.
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | A finished trading day, YYYY-MM-DD. Call list_sessions if unsure which days exist. | |
| book | No | Which book to read (default measured). open_interest is the convention rival tools print. | |
| minute | No | ET minute HH:MM inside 09:30-16:00. Snaps back to the frame at or before it, so quote the minute the answer returns. Default: the last frame of the session. | |
| expiry_scope | No | all = every expiry the session's book was pulled with (default); 0dte = the same-day slice alone | |
| strikes_around_spot | No | How many strikes to return each side of spot (default 20). Raise it for the whole published window, which is +/-2.5% of spot. |
Output Schema
| Name | Required | Description |
|---|---|---|
| day | Yes | Trading day, YYYY-MM-DD |
| book | Yes | Which book was read: measured, open_interest or volume |
| spot | Yes | SPX at that minute |
| unit | Yes | Unit of every gamma number below |
| levels | Yes | Dealer-positioning levels in SPX index points; null when the session did not produce one |
| minute | Yes | The ET minute (HH:MM) this profile actually belongs to. The archive keeps a frame every 5 minutes, so a requested minute snaps back to the frame at or before it — quote the minute returned here, not the one asked for. |
| replay | Yes | Free minute-by-minute replay of the session on FirmTape |
| strikes | Yes | Dealer gamma by strike at that minute, lowest strike first |
| summary | Yes | One sentence carrying this answer's numbers, its trading day and its source, written to be quoted verbatim to a reader rather than paraphrased. |
| heaviest | Yes | The largest strikes by absolute gamma inside the window, heaviest first |
| book_note | No | How this book is built, and what it can and cannot be compared with |
| expiry_scope | Yes | all = every expiry this session's book was pulled with; 0dte = the same-day slice alone |
| strikes_returned | Yes | How many strikes the window actually held |
| net_gamma_in_window | Yes | Sum of the returned strikes — a window total, not the session's net gamma |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, so the bar is lower, but the description still adds substantial context: finished sessions only, 5-minute frame snapping, ±2.5% published window, non-comparable book magnitudes, and no buy/sell signals. This tells the agent what to expect beyond what annotations 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?
The description is long but tightly organized: definition, conventions, use-when, not-for, limits, and a final qualifier. Every sentence carries operational or routing information, and the core purpose is front-loaded.
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 tool with a rich output schema and full parameter documentation, the description supplies all the missing operational context: conventions, minute snapping, session restrictions, window limits, and exclusions. An agent has enough to select the tool, choose parameters, and interpret the result 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 description coverage is 100%, so the baseline is 3, but the description enriches parameter meaning by explaining that the three book conventions offer three lenses on the same minute, that books are not comparable in magnitude, and that the published window constrains strikes_around_spot. This goes beyond ordinary schema documentation.
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 SPX dealer gamma ladder for a single minute of a finished session, including gamma by strike, the level set, and heaviest strikes. It also distinguishes itself from siblings by naming what it is not for, so an agent can recognize it as the minute-level shape tool.
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?
Explicitly says 'Use when' the question is about gamma shape or a single moment in a session, and 'Not for' day headline numbers, level set alone, or cross-day movement, naming get_session, get_levels, and get_level_history as alternatives. This gives the agent precise routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_level_historyLevel historyARead-onlyIdempotentInspect
How the SPX dealer-positioning levels MOVED across recent finished sessions: the zero-gamma flip, call resistance and put support day by day, each session's change from the one before, and summary statistics for the window (flip range, net drift, mean daily movement, how often price closed above the flip). Use when: the question is about a trend or a window — has the flip been climbing, how far does it travel in a week — instead of calling get_levels once per day. Not for: one day (get_levels / get_session) or anything inside a session (get_gex_profile). Limits: finished sessions only, max 40 per call; days absent from the archive are reported in missing, never interpolated. Measurements only — no buy/sell signals, no forecast.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of an explicit window, YYYY-MM-DD (inclusive). Defaults to the newest finished session. | |
| days | No | How many of the most recent finished sessions to read (default 20, max 40). Ignored when `from` is given. | |
| from | No | Start of an explicit window, YYYY-MM-DD (inclusive). Overrides `days`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | Trading day, YYYY-MM-DD |
| from | Yes | Trading day, YYYY-MM-DD |
| missing | Yes | Days in the requested window with no payload in the archive; the window is reported over what was actually read |
| summary | Yes | One sentence carrying this answer's numbers, its trading day and its source, written to be quoted verbatim to a reader rather than paraphrased. |
| movement | Yes | How the level set travelled across the window. Descriptive statistics, not a forecast. |
| sessions | Yes | One entry per finished session, NEWEST FIRST, same order as list_sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (read-only, idempotent, non-destructive), and the description adds genuinely useful behavioral context beyond them: finished-sessions-only scope, hard 40-call limit, missing archive days reported in `missing` rather than interpolated, and the explicit boundary that it provides measurements only — no signals or forecasts. No contradiction with 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?
Dense but well-organized: the core function is front-loaded, followed by labeled sections ('Use when', 'Not for', 'Limits') that make the routing logic scannable for an agent. Every sentence earns its place, including the summary-statistics inventory and the 'no forecast' disclaimer.
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?
Complete for a read-only windowed-historical tool. The output schema covers return values; the description summarizes what the output contains (flip range, net drift, mean daily movement, close-above-flip frequency) and names the `missing` field. Nothing an agent needs to decide or invoke correctly is absent.
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%, so the baseline is 3 — each parameter already has defaults, constraints, examples, and precedence semantics ('from overrides days'). The description adds only marginal context (finished-sessions scope reinforced, max 40 restated) but does not materially compensate beyond what the schema already documents.
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 states a specific verb+resource+scope: how SPX dealer-positioning levels (zero-gamma flip, call resistance, put support) MOVED across finished sessions, including per-session deltas and window summary statistics. It explicitly names the siblings it is not (get_levels, get_session, get_gex_profile), so an agent can distinguish it from alternatives without inspecting their 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?
Provides explicit 'Use when' conditions (trend/window questions like 'has the flip been climbing') and explicit 'Not for' exclusions (single day → get_levels/get_session; intra-session → get_gex_profile). This gives the agent a complete routing decision tree for when this tool beats calling get_levels repeatedly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_levelsLevel setARead-onlyIdempotentInspect
Only the dealer-positioning level set for one finished SPX session: zero-gamma flip, call resistance, put support, hold band — plus where the session closed relative to them. A strict subset of get_session. Use when: the levels are the whole question and the rest of the session would be noise. Not for: OHLC, flip crossings, net-gamma percentile or ATM IV (get_session); more than one day (get_level_history); gamma by strike (get_gex_profile). Limits: finished sessions only, one day per call.
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | A finished trading day, YYYY-MM-DD. Weekends, holidays and days before coverage return an error — call list_sessions to see which days exist. |
Output Schema
| Name | Required | Description |
|---|---|---|
| day | Yes | Trading day, YYYY-MM-DD |
| close | Yes | Session close |
| levels | Yes | Dealer-positioning levels in SPX index points; null when the session did not produce one |
| replay | Yes | Free minute-by-minute replay of the session on FirmTape |
| summary | Yes | One sentence carrying this answer's numbers, its trading day and its source, written to be quoted verbatim to a reader rather than paraphrased. |
| close_minus_flip | Yes | Close minus zero-gamma flip, index points; positive = closed above the flip |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds meaningful context beyond annotations: the tool only serves finished sessions, one day per call, and returns a strict subset of get_session. This clarifies data scope and constraints without contradicting 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 description opens with the core definition, then gives crisp usage guidance and exclusions, and ends with limits. Every sentence earns its place, and the structure front-loads the most decision-relevant 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-value explanation is unnecessary. The description covers what the tool returns, how it relates to siblings, when to use it, when not to, and its hard limits. Nothing an agent needs to select and invoke this 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?
Schema coverage is 100%; the schema already fully documents the 'day' parameter with pattern, examples, and error conditions. The description re-emphasizes 'one day per call' and 'finished sessions only' but adds no new semantic information beyond the schema, so the 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 resource ('dealer-positioning level set for one finished SPX session'), enumerates the exact contents, and explicitly calls itself 'A strict subset of get_session,' distinguishing it from siblings. An agent can immediately tell what this tool returns and how it differs from related tools.
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?
Provides explicit 'Use when' and 'Not for' conditions, naming the exact sibling tools for each excluded case (get_session, get_level_history, get_gex_profile). No ambiguity remains about when to select this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sessionSession summaryARead-onlyIdempotentInspect
Everything FirmTape measured for ONE finished SPX session: OHLC and VWAP, the zero-gamma flip and how often price crossed it, call/put walls, the hold band, net-gamma percentile, ATM IV at the open. Use when: you want a whole day in a single call. Not for: the level set alone (get_levels returns the same day, narrower), how the levels moved across days (get_level_history), or gamma by strike (get_gex_profile). Limits: finished sessions only, one day per call. Measurements only — FirmTape deliberately publishes no buy/sell signals.
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | A finished trading day, YYYY-MM-DD. Weekends, holidays and days before coverage return an error — call list_sessions to see which days exist. |
Output Schema
| Name | Required | Description |
|---|---|---|
| day | Yes | Trading day, YYYY-MM-DD |
| replay | Yes | Free minute-by-minute replay of the session on FirmTape |
| session | Yes | SPX price facts for the session |
| summary | Yes | One sentence carrying this answer's numbers, its trading day and its source, written to be quoted verbatim to a reader rather than paraphrased. |
| dealer_positioning | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds meaningful constraints: finished sessions only, one day per call, and the deliberate absence of buy/sell signals. It also clarifies the tool returns a holistic measurement bundle rather than a signal or opinion. This exceeds what annotations alone would tell the agent.
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 description is front-loaded with a dense but readable list of contents, then structured into 'Use when', 'Not for', and 'Limits' sections, each sentence serving a distinct purpose. There is slight redundancy between 'ONE finished SPX session' and 'finished sessions only, one day per call', but it is used to reinforce a key constraint. No filler or irrelevant detail.
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 and full parameter schema coverage, the description covers the essential invocation context: what is included, when to choose it, which alternatives to use, and the tool's explicit non-signal stance. It also points the agent to the required input domain (finished trading days). Nothing an agent needs to correctly select and call this tool 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?
The schema already fully documents the single required `day` parameter with pattern, example, and error behavior for invalid days (100% coverage), so the description doesn't need to add much. The description's 'finished sessions only, one day per call' reinforces the parameter's semantics but does not add new syntax or formatting detail. Baseline 3 is appropriate because the schema carries the load.
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 a specific verb and resource ('Everything FirmTape measured for ONE finished SPX session') and enumerates the included data (OHLC, VWAP, gamma flip, walls, hold band, net-gamma percentile, ATM IV). It explicitly differentiates from siblings by naming get_levels, get_level_history, and get_gex_profile as different scopes. This leaves no ambiguity about what this tool returns.
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 gives an explicit 'Use when: you want a whole day in a single call' and a 'Not for' list naming the exact alternative tools for each different need. It also states limits (finished sessions only, one day per call) so an agent can decide when to invoke it. No relevant usage condition is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsList sessionsARead-onlyIdempotentInspect
List the finished SPX trading sessions in the free FirmTape archive, newest first, with the total count and how far back coverage runs. Every listed day can be fetched with get_session / get_levels and replayed free at FirmTape. Use when: you need to know which days exist, or the size and span of the archive, before asking about one. Not for: any measurement about a day — call get_session with that date instead. Limits: finished sessions only (today's session appears after the close), max 50 days per call.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many days to return (default 10, max 50) |
Output Schema
| Name | Required | Description |
|---|---|---|
| newest | Yes | Trading days, newest first |
| summary | Yes | One sentence carrying this answer's numbers, its trading day and its source, written to be quoted verbatim to a reader rather than paraphrased. |
| total_sessions | Yes | How many finished sessions the free archive holds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/openWorld/idempotent/non-destructive safety, and the description adds meaningful behavioral context beyond them: only finished sessions are listed, today's session appears only after the close, the call returns total count and coverage span, and there is a max of 50 days per call. No contradiction with 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 description is compact and front-loaded: the first sentence states the core purpose and result, followed by relationship to siblings, usage guidance, exclusions, and limits. Every sentence earns its place with no repetition or filler.
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 simple listing tool with one optional parameter, rich annotations, and an output schema, the description covers purpose, usage boundaries, alternatives, data freshness, archive span, and call limits. Nothing needed to decide when and how to invoke it 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?
The schema already documents the single optional 'limit' parameter with default and maximum, and schema coverage is 100%. The description reinforces the max 50 days per call but does not add semantic meaning beyond what the schema provides, so the baseline of 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?
The description states a specific verb ('List'), a specific resource ('finished SPX trading sessions'), and ordering ('newest first'), plus what the result includes (total count, coverage span). It also distinguishes itself from siblings by naming get_session / get_levels as the tools for fetching individual days.
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 when' and 'Not for' guidance is provided: use it to know which days exist or the archive size/span, not for any measurement about a day, in which case get_session is the named alternative. This fully routes an agent to the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
options_strategy_testTest an options strategy on the archiveAInspect
Test an SPX 0DTE options strategy — a condor, strangle, straddle or any leg set — against every session in the FirmTape archive on real quotes and real settlement. One call prices it 63 ways: seven widths of your geometry across nine entry times, so the answer is WHERE TO PUT THE STRIKES rather than a verdict on one guess. Short legs are sold at the bid and long legs bought at the ask, $1.25 a leg — measured on 13.1M prints, the median SPX 0DTE print pays the full quoted half-spread, so these fills are the median outcome and not a conservative one. Returns the marginal by width and by entry, a recommended direction ONLY when the marginal is ordered and a withheld holdout agrees, the day-clustered mean and its error, prob_loss_20, and all 63 cells with yours marked. If those 63 come back flat the run carries on by itself for the same credits -- where the structure sits relative to spot, past the edge of the grid, then eight standard 0DTE shapes -- up to 154 configurations, so the answer is 'not this, and here is what the archive does pay for' rather than a shrug. It never names a best cell: the best of 63 is best by chance. Spends 10 credits, refunded on failure. Requires a Lab token (Authorization header).
| Name | Required | Description | Default |
|---|---|---|---|
| legs | Yes | The strategy, as legs. `dist` is the leg's distance from spot as a fraction: -0.005 is half a percent below, +0.0083 is 0.83% above. Strikes are not given because they travel — the geometry is what the archive is asked. A short 0.5% strangle is two legs at -0.005 and +0.005, both qty -1. | |
| entry | No | Your entry time. All nine are reported whatever you pick; this only marks which cell is yours. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses material behavior beyond annotations: it costs 10 credits, refunds on failure, requires a Lab token, uses median bid/ask fills at $1.25 per leg, reports a recommended direction only under strict conditions, never names a best cell, and may auto-expand to 154 configurations. No contradiction with the annotations; readOnlyHint=false is consistent with a credit-spending test operation.
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 is front-loaded and the detail is mostly earned given the tool's complexity, covering output shape, fill assumptions, costs, and failure behavior. Some phrasing is verbose and slightly winding, but no critical information is buried.
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 no output schema, the description properly enumerates returned items: marginal by width and entry, a conditional recommended direction, the day-clustered mean and error, prob_loss_20, and the 63 marked cells. It also covers pricing, cost, refunds, authentication, and the expanded grid behavior, making it thorough enough to invoke 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?
The input schema already provides 100% descriptive coverage for legs, qty, dist, right, and entry, including clear examples. The description adds context about the 63-way grid and that entry only marks which cell is yours, but it does not substantially expand parameter-level meaning beyond what the schema already gives.
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: 'Test an SPX 0DTE options strategy' against the FirmTape archive on real quotes and real settlement. This clearly differentiates it from the sibling data-retrieval tools like get_gex_profile, get_levels, and get_session, which do not backtest strategies.
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 description makes it clear this is for testing options strategies against archived real-market data and describes the kind of answer it produces, so an agent can infer when to choose it over the alternatives. However, it does not explicitly name sibling tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch FirmTapeARead-onlyIdempotentInspect
Search FirmTape for documents about SPX dealer positioning: the explainer pages, the dated research measurements, and the archive of finished trading sessions. Returns ids to pass to fetch. A date in the query ("2026-08-24", "August 24 2026", "August 2026") finds the session or sessions for it. Clients that can call the specific tools should prefer list_sessions / get_session / get_levels / get_level_history instead — those return structured numbers rather than documents. Not for: fetching a document you already have the id for (fetch) or any measurement you can name a date for. Limits: FirmTape's own public pages and finished sessions only, ranked by keyword — it searches no other site.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A topic, a question, or a trading date |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses meaningful behavioral traits: it 'returns ids to pass to fetch,' supports three date formats for locating sessions, is limited to FirmTape's own public pages and finished sessions, and ranks results by keyword. It also clarifies it searches no other site, which adds concrete scope beyond the raw openWorldHint.
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 description is compact yet dense; every sentence earns its place. It front-loads the core purpose, then covers return behavior, date handling, preferred alternatives, explicit exclusions, and scope limitations in a clear sequence. The non-goal and limits sections are terse but comprehensive, with no filler.
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 no output schema present, the description compensates by stating that results are ids to pass to fetch. It covers all relevant context for a single-parameter search tool: what content is searched, what a query can be, how dates are handled, when not to use it, and the boundaries of the search space. An agent has enough information to call this tool correctly and route the output to the right next step.
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 schema already describes the single parameter ('A topic, a question, or a trading date'), so the baseline is 3. The description adds real value by giving specific date format examples ('2026-08-24', 'August 24 2026', 'August 2026') and explaining that a date resolves to the corresponding session or sessions. This goes beyond the schema shorthand without being exhaustive.
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 opens with a specific verb and resource: 'Search FirmTape for documents about SPX dealer positioning,' and enumerates exactly what kinds of documents are searched (explainer pages, dated research measurements, finished session archive). It also distinguishes itself from structured-data siblings by noting it returns document ids, making its purpose unambiguous.
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?
Usage guidance is explicit and actionable: it names the preferred alternatives (list_sessions / get_session / get_levels / get_level_history) and the reason (structured numbers vs documents). It also gives clear negative cases: not for documents you already have the id for, and not for any measurement you can name a date for. This leaves no doubt about when to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Real-time SPX 0DTE options dealer market-structure for agents: GEX, walls, gamma flip, vol regime.
Real-time & historical options analytics: GEX, dealer positioning, vol, VRP, 0DTE, CME futures
Options analytics: 17 pricing models, 17 Greeks, GEX, IV, 23 screeners, unusual, dark pool, max pain
Crypto options dealer gamma, IV, flow and trade tape for BTC, ETH, SOL and HYPE.
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.1MIT
- FlicenseNot gradedqualityCmaintenanceComputes SPX dealer gamma exposure (GEX) from CBOE delayed option quotes and exposes it as an MCP tool for Claude Desktop.
- AlicenseNot gradedqualityFmaintenanceProvides AI agents with access to real-time and historical SPX 0DTE options market data from QuantData. It enables analysis of market indicators like gamma exposure walls, net drift, max pain, and trade side statistics through natural language.8MIT
- AlicenseNot gradedqualityDmaintenanceEnables algorithmic trading with Interactive Brokers, including market data, order management, and risk analysis, with special support for 0DTE SPX options.5MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Every tool targets a distinct resource and granularity: documents (search/fetch), session enumeration (list_sessions), day-level measurements (get_session/get_levels), intraday shape (get_gex_profile), multi-day trends (get_level_history), and strategy backtesting (options_strategy_test). The descriptions go further than usual, using explicit 'Not for' cross-references so even get_levels vs get_session — a deliberate strict subset — reads unambiguously.
The measurement tools follow a clean get_<nouon> convention (get_session, get_levels, get_level_history, get_gex_profile) and list_sessions fits the verb_nouon pattern. fetch and search are bare single-word verbs that break the pattern slightly — fetch_document / search_documents would be more uniform — and options_strategy_test is a compressed compound, but the overall snake_case style and semantic grouping are predictable.
Eight tools is well within the 3-15 sweet spot for a specialized data server. Each tool carries a clearly differentiated job: two document access, one enumeration, four measurement surfaces (single-day full, single-day levels, intraday ladder, multi-day history), and one analysis operation. Nothing feels like filler and nothing essential is missing.
The domain is well covered: session discovery (list_sessions), document retrieval (search/fetch), full daily readings (get_session), subset views (get_levels), intraday gamma shape (get_gex_profile), and cross-day movement (get_level_history) — plus a strategy tester. Minor gaps exist, such as no way to compare gamma-ladder shape across multiple days without repeated get_gex_profile calls, but no workflow dead-ends for the stated purpose.