Skip to main content
Glama

Valuein — SEC EDGAR Fundamentals & Smart-Money Data

Server Details

Point-in-time, survivorship-free SEC EDGAR fundamentals + smart-money signals for AI agents.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 60 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
valuein/valuein
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 22 tools

Disambiguation4/5

Tools mostly target distinct resources and actions, with clear 'Use this when' guidance and cross-references to alternatives. Some overlap remains among get_company_fundamentals, get_financial_ratios, and get_valuation_metrics for profitability and margin questions, so an agent could occasionally misselect.

Naming Consistency4/5

All names use snake_case, and most follow a clear verb_noun pattern (get_*, compute_*, verify_*, list_*). The noun phrase 'forensic_audit' is a minor deviation, but the overall convention is predictable.

Tool Count3/5

22 tools is heavy for MCP selection; while many are specialized analytical functions, the count exceeds the typical well-scoped range (3-15) and borders on overwhelming for an agent choosing the right tool.

Completeness3/5

The surface covers SEC fundamentals, ratios, valuation, projections, forensic checks, and lineage well. However, the server's stated 'Smart-Money Data' aspect (e.g., institutional holdings or insider activity) has no corresponding tools, leaving a notable gap for that stated purpose.

Available Tools

22 tools
compare_periodsCompare two fiscal periodsA
Read-onlyIdempotent
Inspect

Returns a company's reported figures for two fiscal periods side by side, with each figure's absolute and percentage change, a significance label (minor under 5%, notable 5 to 15%, significant over 15%) and a count of material changes. Use this when the user asks how a company changed between two years or quarters. Periods given in reverse order are swapped and the result says so.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker symbol or SEC CIK of the company, e.g. AAPL.
period_aYesEarlier period: FY and the year, or Q1 to Q4, a hyphen and the year, e.g. FY2023.
period_bYesLater period, in the same format as period_a, e.g. FY2024.
as_of_dateNoPoint-in-time cutoff, YYYY-MM-DD: only figures filed with the SEC on or before this date, e.g. 2024-06-30.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_metaYesProvenance envelope — data lineage for every MCP response
tickerYes
changesYesPer-metric deltas: metric, label, period_a, period_b, delta, delta_pct, significance
swappedYesTrue when inputs were reordered so period_b is the more recent period
period_aYesEarlier period descriptor: label, fiscal_year, fiscal_period, period_end, filing_date
period_bYesLater period descriptor, same shape as period_a
as_of_dateNo
company_nameNo
total_metricsYesCount of metrics compared across the two periods
material_changesYesCount of metrics flagged as a material change

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower, yet the description still adds real behavior: the significance thresholds (<5% minor, 5-15% notable, >15% significant), the material-change count, and the fact that reversed periods are swapped with the result disclosing it. It omits error handling for invalid tickers or mismatched period formats.

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

Conciseness4/5

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

Three sentences, front-loaded with the return shape before the usage cue and the swap rule. The parenthetical significance bands are informative rather than filler, though the output enumeration in sentence one is dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return formatting need not be explained, and the description still sketches the response. With four params fully documented in schema and the swap/idempotency behavior disclosed, an agent has everything needed to call and interpret this tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema by clarifying that period_a/period_b are semantically ordered and that reverse-order input is normalized by swapping (with notification). That goes past the schema's 'earlier/later' labels.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (compare a company's reported figures across two fiscal periods) and enumerates the outputs: side-by-side figures, absolute and percentage change, significance label, material-change count. This is clearly distinguishable from siblings like get_financial_ratios or get_company_fundamentals, which retrieve rather than diff.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use it when the user asks how a company changed between two years or quarters, giving the triggering intent. It stops short of naming alternatives or exclusion cases (e.g. use get_financial_ratios for single-period ratios), so it is clear context without routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_accretion_dilutionMerger accretion and dilutionA
Read-onlyIdempotent
Inspect

Returns whether a proposed acquisition raises or lowers the acquirer's earnings per share in the first year after the deal, with deal value, new shares and debt, pro forma net income, shares and EPS, and the takeover premium, from both companies' latest annual 10-K figures and month-end closing prices. Use this when the user asks whether a deal would be accretive or dilutive at an offer price, cash and stock mix and synergies they choose. It covers one year only: synergy ramp, integration costs and purchase accounting are not modelled.

ParametersJSON Schema
NameRequiredDescriptionDefault
cash_pctYesShare of the deal value settled in cash, 0 to 1; the rest is acquirer stock, e.g. 0.5.
tax_rateNoTax rate on synergies and interest, 0 to 1; defaults to 0.21, e.g. 0.25.
as_of_dateNoPoint-in-time cutoff for both companies, YYYY-MM-DD: filings accepted and closes on or before this date, e.g. 2024-06-30.
target_tickerYesTicker symbol or SEC CIK of the company being acquired, e.g. AAPL.
acquirer_tickerYesTicker symbol or SEC CIK of the acquiring company, e.g. MSFT.
synergies_pretaxNoYearly pretax synergies in USD at full run rate; defaults to 0, e.g. 500000000.
cash_financing_sourceNoHow the cash is funded: new_debt (default, adds after-tax interest) or balance_sheet_cash (no interest cost), e.g. balance_sheet_cash.new_debt
offer_price_per_shareYesPrice offered per target share in USD, above zero, e.g. 250.
new_debt_interest_rateNoInterest rate on new acquisition debt, 0 to 0.5, used with new_debt; defaults to 0.06, e.g. 0.07.
target_share_price_overrideNoTarget share price in USD used instead of its month-end close, for the takeover premium only, e.g. 180.
acquirer_share_price_overrideNoAcquirer share price in USD used instead of its month-end close, e.g. 420.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_metaYesProvenance envelope — data lineage for every MCP response
resultYes
target_tickerYes
acquirer_tickerYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish the safe read-only, idempotent, closed-world profile, so the bar is lower. The description still adds meaningful context the annotations cannot: data provenance (latest annual 10-K figures and month-end closing prices) and hard modelling boundaries (one-year horizon, no synergy ramp/integration costs/purchase accounting).

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

Conciseness4/5

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

Three front-loaded sentences: purpose/outputs, when-to-use, then scope limits. Every sentence earns its place, though the output enumeration overlaps with the existing output schema and is slightly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With complete schema coverage, an output schema, and annotations covering the safety profile, the description supplies the remaining needed context: what the call computes, its data sources, and its modelling limits. Nothing an agent needs to invoke it correctly appears to be missing.

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

Parameters3/5

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

Schema description coverage is 100% and each of the 11 parameters is documented with units, ranges and examples, so the schema does the heavy lifting. The description only gestures at the inputs (offer price, cash/stock mix, synergies) without adding syntax or format detail beyond what the schema already provides, which is the baseline 3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It names a specific computation (first-year EPS accretion/dilution from a proposed acquisition) and enumerates the outputs produced, which clearly separates it from siblings like compute_dcf and compute_lbo. An agent can identify the tool from the first clause 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this when the user asks whether a deal would be accretive or dilutive at an offer price, cash and stock mix and synergies they choose" gives a clear triggering condition, and the closing sentence states an explicit exclusion (one year only; synergy ramp, integration costs and purchase accounting not modelled). It stops short of naming an alternative sibling, so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_dcfDiscounted cash flow valueA
Read-onlyIdempotent
Inspect

Returns a two-stage discounted cash flow value per share in US cents, with enterprise and equity value, the terminal value's share and a 5 by 5 sensitivity grid over discount rate and terminal growth, built from the company's latest free cash flow, net debt and share count and the growth and discount rates given. Use this when the user asks what a company could be worth under stated assumptions. A null value means the inputs leave the model undefined, and the reason field says why.

ParametersJSON Schema
NameRequiredDescriptionDefault
waccNoDiscount rate as a decimal, 0.01 to 0.5; defaults to 0.09, e.g. 0.1.
tickerYesTicker symbol or SEC CIK of the company to value, e.g. AAPL.
as_of_dateNoPoint-in-time cutoff for the reported inputs, YYYY-MM-DD: only filings accepted by this date, e.g. 2024-06-30.
fcf_sourceNotrend (default) grows starting free cash flow by stage1_growth_rate; three_statement projects linked statements instead, e.g. three_statement.trend
stage1_yearsNoNumber of projection years, 3 to 15; defaults to 5, e.g. 10.
shares_overrideNoShare count used instead of the reported figure, above zero, e.g. 15000000000.
fcf_base_overrideNoStarting free cash flow in USD, used instead of the reported figure; trend mode only, e.g. 95000000000.
stage1_growth_rateYesYearly growth in the projection years as a decimal, -0.5 to 1: of free cash flow (trend) or of revenue (three_statement), e.g. 0.08.
terminal_growth_rateNoGrowth after the projection years as a decimal, -0.05 to 0.1; defaults to 0.025, e.g. 0.02.
three_statement_assumptionsNoOverrides for three_statement mode; each unset field keeps its default, e.g. {"tax_rate": 0.25}.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_metaYesProvenance envelope — data lineage for every MCP response
resultYes
tickerYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: a null result means the inputs leave the model undefined, and the reason field explains why. Return shape and the sensitivity grid are also disclosed.

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

Conciseness4/5

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

Front-loaded with the return value, then the use case, then the null/reason edge case, so an agent gets the essential facts first. The first sentence is dense with many clauses, but each one carries information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 100% parameter coverage, the description need not spell out returns or argument formats, yet it still summarizes outputs, the two-stage structure, the input sourcing and null semantics. Nothing needed to call this 10-parameter model correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with per-parameter bounds, defaults, enums and examples already in the schema, so the baseline is 3. The description links the growth/discount inputs to the sensitivity grid and names the reported inputs being consumed, but adds no per-parameter semantics beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific computation (two-stage DCF per share in US cents) and enumerates the exact outputs returned, including enterprise/equity value, terminal value share and a 5x5 sensitivity grid. This distinguishes it from siblings like get_valuation_metrics, compute_lbo and compute_accretion_dilution 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this when the user asks what a company could be worth under stated assumptions" gives a clear triggering context and implicitly frames it as an assumption-driven model rather than a market-multiple lookup. It stops short of naming alternatives (e.g., get_valuation_metrics) or stating when not to use it, so no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_lboLeveraged buyout returnsA
Read-onlyIdempotent
Inspect

Returns the sponsor's multiple of invested capital and internal rate of return for a leveraged buyout, with entry and exit enterprise value, debt, equity and a yearly projection, on an opening balance sheet built from the deal terms and the company's latest annual 10-K operating figures. Use this when the user asks what a buyout could return under stated purchase and exit multiples, leverage and hold period. EBITDA is approximated by operating income unless an entry figure is given, and a null rate means no rate fits the cash flows.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker symbol or SEC CIK of the buyout target, e.g. AAPL.
tax_rateNoTax rate on positive pretax income, 0 to 1; defaults to 0.21, e.g. 0.25.
as_of_dateNoPoint-in-time cutoff for the reported inputs, YYYY-MM-DD: only filings accepted by this date, e.g. 2024-06-30.
minimum_cashNoCash left on the opening balance sheet, in USD; defaults to 0, e.g. 1000000000.
exit_multipleNoSale price as a multiple of the final year's EBITDA; defaults to entry_multiple, e.g. 12.
cash_sweep_pctNoShare of each year's free cash flow used to repay debt, 0 to 1; defaults to 1, e.g. 0.75.
entry_multipleYesPurchase price as a multiple of EBITDA, above zero, e.g. 10.
hold_period_yearsNoYears from purchase to sale, 1 to 10; defaults to 5, e.g. 7.
leverage_multipleYesDebt raised at entry as a multiple of EBITDA, zero or more, e.g. 5.
dividend_payout_pctNoShare of each year's net income distributed to the sponsor, 0 to 1; defaults to 0, e.g. 0.2.
revenue_growth_rateYesYearly revenue growth over the hold as a decimal, -0.5 to 1, e.g. 0.05.
entry_ebitda_overrideNoEBITDA in USD that sets the entry price and debt instead of operating income, e.g. 130000000000.
interest_rate_on_debtNoInterest rate on buyout debt at the start of each year, 0 to 0.5; defaults to 0.08, e.g. 0.09.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_metaYesProvenance envelope — data lineage for every MCP response
resultYes
tickerYes
seed_period_endYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/non-destructive, so safety is covered. The description adds real modeling behavior beyond that: EBITDA is approximated by operating income unless an override is given, and a null rate means no rate fits the cash flows. It does not mention runtime cost, but for a read-only computation this is solid added context.

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

Conciseness4/5

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

The output is front-loaded (what the tool returns first, then when to use it, then modeling caveats). It is a dense single long sentence, but every clause carries information and none is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter computational tool with an output schema and full annotation coverage, the description supplies the essential modeling conventions an agent needs. It is largely complete, though the relationships among the many leverage/cash-flow parameters are left to the schema.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning on top: it explains the EBITDA proxy rule tied to entry_ebitda_override and what a null result rate implies. It does not clarify the interaction between cash_sweep_pct and dividend_payout_pct, so it stops short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (returns sponsor's MOIC and IRR for an LBO) plus the concrete outputs and inputs (entry/exit EV, debt, equity, yearly projection, 10-K opening balance sheet). This clearly distinguishes it from sibling compute tools like compute_dcf and compute_accretion_dilution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger: 'Use this when the user asks what a buyout could return under stated purchase and exit multiples, leverage and hold period.' That is clear usage context, but it does not name alternatives (e.g. compute_dcf for a plain DCF) 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.

describe_schemaDataset field referenceA
Read-onlyIdempotent
Inspect

Returns the definitions of the dataset's tables: each table's description and its columns. Use this when the user asks what a field in another result means or which fields the data holds.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableNoName of one table to describe; omit for all tables. An unknown name returns the valid names, e.g. entity.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_metaYesProvenance envelope — data lineage for every MCP response
tableNoSingle-table mode: the requested table name
tablesNoFull-schema mode: map of table name → { description, column_count, columns }
columnsNoSingle-table mode: map of column name → definition
projectNoFull-schema mode: source project name
descriptionNoSingle-table mode: the table's description

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds essentially no behavioral context beyond that — the return content it describes overlaps with the output schema, and it says nothing about the table-omission fallback that the schema documents.

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

Conciseness5/5

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

Two sentences, no filler, and the resource being described is front-loaded before the usage guidance. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the return-value detail need not be restated, and a one-optional-param read-only tool is well covered by this description plus its annotations. Only minor gaps remain (e.g., it doesn't hint at the all-tables default behavior described in the schema).

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

Parameters3/5

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

Schema coverage is 100%, so the single optional 'table' parameter, its pattern, and the unknown-name fallback are already fully documented in the schema. The description adds nothing about parameter behavior, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Returns the definitions of the dataset's tables') and enumerates what is returned (each table's description and its columns). This clearly distinguishes it from the sibling tools, which are all computation/analysis tools rather than metadata lookups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger: 'Use this when the user asks what a field in another result means or which fields the data holds.' That is clear context for invocation, though no when-not conditions or named alternatives are provided (arguably none exist among the siblings).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

forensic_auditForensic accounting checkA
Read-onlyIdempotent
Inspect

Returns forensic accounting scores from a company's two latest annual filings: a partial Beneish M-score (sales growth, total accruals and leverage growth), Sloan accruals, debt to equity, debt to assets and return on assets, and plain-language red flags, with the source filing. Use this when the user asks about earnings quality or accounting risk. The M-score is partial because some of its inputs are not in the dataset, and the result marks it so.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker symbol or SEC CIK of the company to check, e.g. AAPL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_metaYesProvenance envelope — data lineage for every MCP response
resultYes
tickerYes
sec_urlYes
period_endYes
source_filingYes
prior_period_endYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the safe, read-only, idempotent profile. The description adds meaningful non-obvious context: the M-score is partial because some inputs are absent and the result marks this limitation, preventing misinterpretation of the output.

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

Conciseness4/5

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

The description is front-loaded with the return value and then the usage condition. It is slightly long because it enumerates every metric, but every clause carries specific information relevant to invoking the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema, annotations, and fully documented single parameter, the description provides all the context an agent needs: what is computed, what caveat to expect, and when to call it. Nothing essential is missing.

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

Parameters3/5

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

The schema fully documents the single ticker parameter, including CIK support and an example. The description adds no parameter-specific detail, so the baseline of 3 for high schema coverage is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Returns'), resource ('forensic accounting scores'), and enumerates exactly what is computed: partial Beneish M-score components, Sloan accruals, leverage ratios, and red flags. This clearly separates it from generic siblings like get_financial_ratios or get_earnings_signals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear usage trigger: 'Use this when the user asks about earnings quality or accounting risk.' However, it does not name alternative tools or state when not to use it, leaving routing to the agent's inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_capital_allocation_profileCapital allocationA
Read-onlyIdempotent
Inspect

Returns, for each fiscal year from annual 10-K filings, operating cash flow, capital expenditures, free cash flow, R&D, acquisitions and divestitures, dividends, buybacks, debt issued and repaid, each use as a share of operating cash flow, and flags such as buybacks or total payouts exceeding free cash flow. Use this when the user asks where a company's cash goes or whether its payouts exceed its free cash flow.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker symbol or SEC CIK of the company, e.g. AAPL.
as_of_dateNoPoint-in-time cutoff, YYYY-MM-DD: only figures filed with the SEC on or before this date, e.g. 2024-06-30.
lookback_yearsNoFiscal years to cover, counting back from the latest filing, 1 to 20; defaults to 5, e.g. 3.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesPer-period capital-allocation rows: capex, R&D, M&A, dividends, buybacks, debt, and deployment-mix flags
noteNo
_metaYesProvenance envelope — data lineage for every MCP response
tickerYes
as_of_dateNo
lookback_yearsYesNumber of fiscal years summarized
periods_returnedYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety is covered. The description still adds provenance the annotations do not: figures come from annual 10-K filings, are presented per fiscal year, and include derived flags (buybacks or total payouts exceeding free cash flow), which tells the agent the data is filing-sourced and point-in-time aware.

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

Conciseness4/5

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

Front-loads the returned fields and follows with a single imperative usage sentence — efficient and well-ordered. The field enumeration is long and largely mirrors the output schema, which is mild redundancy, but it is scannable rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return-value detail is not required, and the description still gives enough to know the tool's shape and the question it answers. Nothing critical is missing for invocation, though it never states filing-availability limits or what happens when fewer than lookback_years of 10-Ks exist.

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

Parameters3/5

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

Schema description coverage is 100%, so ticker, as_of_date, and lookback_years are already fully documented in the schema; baseline 3 applies. The description's mention of 'each fiscal year from annual 10-K filings' loosely reinforces the fiscal-year grain of lookback_years but adds no new syntax, defaults, or bounds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns ... operating cash flow, capital expenditures, free cash flow, R&D, acquisitions and divestitures, dividends, buybacks, debt issued and repaid') scoped to fiscal years from annual 10-K filings. This granularity clearly separates it from siblings like get_company_fundamentals, get_financial_ratios, and compute_dcf, which an agent could otherwise confuse with a cash-flow breakdown.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the triggering user intents: 'where a company's cash goes' and 'whether its payouts exceed its free cash flow.' That is clear when-to-use guidance, but it names no alternative sibling (e.g., get_financial_ratios for ratio-level views) nor any exclusion, so the agent must infer routing on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_company_fundamentalsCompany financial statementsA
Read-onlyIdempotent
Inspect

Returns reported figures from a company's 10-K or 10-Q filings by period: revenue, gross profit, operating income, net income, diluted EPS, total assets, liabilities, equity, cash, short-term investments, debt, operating cash flow, capital expenditures and shares outstanding, each tied to its source filing. Use this when the user asks what a company reported. It covers current and former S&P 500 companies over the most recent five fiscal years; margins and multiples come from get_valuation_metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of periods, 1 to 40; defaults to 5, e.g. 8.
periodNoannual (10-K) or quarterly (10-Q); defaults to annual, e.g. quarterly.annual
tickerYesTicker symbol or SEC CIK of the company, e.g. AAPL.
as_of_dateNoPoint-in-time cutoff, YYYY-MM-DD: only figures filed with the SEC on or before this date, e.g. 2024-06-30.
fiscal_yearNoFiscal year to return, four digits; omit for the most recent years, e.g. 2024.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
_metaYesProvenance envelope — data lineage for every MCP response
periodYes
tickerYes
as_of_dateYes
company_nameYes
years_returnedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the description is freed to add value - and it does by disclosing data lineage ('each tied to its source filing') and the coverage universe. It does not mention result ordering or how multiple periods are shaped, which keeps it short of a 5.

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

Conciseness4/5

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

Front-loaded with the content of the return, then usage and scope in two short sentences; nothing is wasted. The long comma list of line items is dense but earns its place by telling the agent exactly what is retrievable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With rich annotations, a fully documented five-parameter schema, and an output schema, the description needs only to establish scope and lineage - which it does, including the five-year history limit and the S&P 500 universe. Only a note on multi-period result shape is missing.

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

Parameters3/5

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

Schema description coverage is 100%, including period enum semantics (annual = 10-K, quarterly = 10-Q), the as_of_date point-in-time cutoff, and limit bounds. The description adds only 'by period', which duplicates the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (returns) and resource (reported figures from 10-K/10-Q filings), enumerates the returned line items, and explicitly contrasts itself with the sibling get_valuation_metrics. An agent can distinguish it from get_financial_ratios or get_valuation_metrics 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger ('Use this when the user asks what a company reported'), names the alternative for margin/multiple questions, and states coverage bounds (current and former S&P 500, five fiscal years). That is when-to-use plus routing to a sibling, which is the top bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_earnings_signalsEarnings trend signalsA
Read-onlyIdempotent
Inspect

Returns, by fiscal period, reported EPS and revenue, revenue growth year over year, a trend EPS estimate built from the company's own past EPS and the gap between actual and trend, plus 1, 3, 6 and 12-month price momentum and the 52-week high and low. Use this when the user asks about a company's earnings trajectory or price momentum. The trend estimate is not analyst consensus, so the gap is not a beat or miss against forecasts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of periods, newest first, 1 to 40; defaults to 8, e.g. 4.
tickerYesTicker symbol or SEC CIK of the company, e.g. AAPL.
as_of_dateNoPoint-in-time cutoff, YYYY-MM-DD: only periods filed on or before this date, e.g. 2024-06-30.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
noteYes
_metaYesProvenance envelope — data lineage for every MCP response
tickerYes
as_of_dateNo
estimate_basisYes
periods_returnedYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds meaningful behavioral context beyond that: the trend estimate is derived from the company's own past EPS rather than analyst consensus, so the actual-vs-trend gap must not be read as a beat/miss. That caveat prevents real misinterpretation of the returned data.

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

Conciseness5/5

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

Three sentences, all load-bearing: the first lists returned fields, the second gives the usage trigger, the third supplies the key semantic caveat. Front-loaded around what the tool returns and zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out in prose, and the description still summarizes them. For a 3-parameter read-only tool, purpose, trigger, and the consensus-vs-trend caveat cover everything an agent needs before calling it.

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

Parameters3/5

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

Schema description coverage is 100%, so ticker, limit (1-40, default 8, newest first), and as_of_date (point-in-time cutoff) are already fully documented in the schema. The description adds no parameter-level detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (returns) and enumerates the exact resource: reported EPS and revenue by fiscal period, YoY revenue growth, a trend EPS estimate with the actual-vs-trend gap, 1/3/6/12-month momentum, and the 52-week range. It even carves out what the trend estimate is not (analyst consensus), which helps separate it from forecast-based siblings. It does not name a sibling tool outright, so it falls short of the full-sibling-differentiation bar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear positive trigger: 'Use this when the user asks about a company's earnings trajectory or price momentum.' That maps the tool to an intent cleanly. There is no explicit when-not guidance or named alternative (e.g., get_company_fundamentals for raw fundamentals, get_price_history for pure price series), so it stops at clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_financial_ratiosFinancial ratiosA
Read-onlyIdempotent
Inspect

Returns a company's computed ratios by period, annual and trailing twelve months, in groups: profitability, liquidity, leverage, efficiency, per share, owner earnings, forensic, growth, sector rank and valuation, each with value, unit and a reason when missing. Use this when the user asks for a company's ratios or how they changed over time. It covers current and former S&P 500 companies over the most recent five fiscal years; ranking against other companies comes from screen_universe.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of period-end dates to return, 1 to 20; defaults to 5, e.g. 3.
tickerYesTicker symbol or SEC CIK of the company, e.g. AAPL.
as_of_dateNoHistorical cutoff, YYYY-MM-DD: ratios filed by this date, or for periods ending by it when no filing date is held, e.g. 2024-06-30.
categoriesNoGroups to include: profitability, liquidity, leverage, efficiency, per_share, owner_earnings, forensic, growth, rank or valuation; omit for all, e.g. ["profitability"].
fiscal_periodNoPeriod type: FY, TTM, Q1, Q2, Q3 or Q4; omit for FY and TTM rows, e.g. TTM.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
noteYes
_metaYesProvenance envelope — data lineage for every MCP response
tickerYes
lineageNoProvenance for pipeline-derived values (the ratio table / the factor_scores table): source table + pipeline computed_at, plus a pointer to the tools that return filing-level lineage. NOT point-in-time (recomputed on each pipeline run).
periods_returnedYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuinely useful behavioral context beyond that: coverage universe (current and former S&P 500 companies), the five-fiscal-year window, and the missing-value convention ('each with value, unit and a reason when missing').

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

Conciseness4/5

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

Front-loaded with the core purpose and scope before the usage trigger and coverage caveat, with no filler sentences. The ten-group enumeration is long and partially duplicates the schema's enum, which is the only real cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 values, and it still covers scope, period semantics, coverage universe and the ranking alternative. Nothing essential to correct invocation is missing, though the boundary against valuation/fundamentals siblings is left implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so limit, ticker, as_of_date, categories and fiscal_period are all documented in the schema with examples and ranges. The description restates the group names and the FY/TTM default behavior but adds no syntax or format detail the schema lacks, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns a company's computed ratios') scoped by period type (annual and TTM), and enumerates the ratio groups, so an agent knows exactly what comes back. It also distinguishes itself from the sibling that handles ranking ('ranking against other companies comes from screen_universe').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when the user asks for a company's ratios or how they changed over time' gives a clear trigger, and the note that ranking lives in `screen_universe` routes one adjacent need to a sibling. It stops short of excluding other lookalikes such as get_valuation_metrics or get_company_fundamentals, so there is no full when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_peer_comparablesPeer comparisonA
Read-onlyIdempotent
Inspect

Returns a company's latest ratios beside those of up to 10 peers from the same SIC industry, closest code match first and S&P 500 members preferred, using trailing twelve months where available. Use this when the user asks how a company compares with its competitors. It covers current and former S&P 500 companies, so peers come from that set.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of peers besides the company, 1 to 10; defaults to 5, e.g. 8.
tickerYesTicker symbol or SEC CIK of the company to compare, e.g. AAPL.
as_of_dateNoHistorical cutoff, YYYY-MM-DD: ratios known by this date, with peers ranked by index membership on it, e.g. 2024-06-30.
categoriesNoGroups to include: profitability, liquidity, leverage, efficiency, per_share, owner_earnings or valuation; defaults to profitability, valuation and leverage, e.g. ["valuation"].

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesOne row per company (subject + peers): ticker, cik, name, sector, industry, is_subject, ratios
noteNo
_metaYesProvenance envelope — data lineage for every MCP response
lineageNoProvenance for pipeline-derived values (the ratio table / the factor_scores table): source table + pipeline computed_at, plus a pointer to the tools that return filing-level lineage. NOT point-in-time (recomputed on each pipeline run).
subjectYesSubject ticker the peer set is built around
as_of_dateNo
categoriesYesRatio categories included in each peer panel
peers_returnedYes
subject_ratiosNoThe subject company's ratio panel
period_end_beforeNo
peers_omitted_no_dataNoCandidate peers left out because they had no ratio figures for the period; each was replaced by the next-closest candidate

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so safety is covered. The description adds genuinely non-obvious behavior: peer ranking by closest SIC code match, S&P 500 preference, TTM data where available, and the universe limitation to current and former S&P 500 members.

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

Conciseness5/5

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

Three sentences, front-loaded with what is returned, then when to use it, then the universe constraint. No filler and every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-format detail is unnecessary. Between the description, full schema coverage, and annotations, an agent has everything needed to decide when to call this and how peers are chosen and ordered.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description layers on semantics the schema lacks: the ordering rule affecting the 'limit' selection (closest code first) and the TTM/'where available' caveat that qualifies the ratios returned relative to as_of_date.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('returns a company's latest ratios beside those of up to 10 peers') plus the peer-selection scope (same SIC industry, S&P 500 preferred, TTM basis). This is clearly distinguishable from sibling ratio tools like get_financial_ratios, which cover a single company without peer context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when the user asks how a company compares with its competitors' gives clear triggering context. It does not name an alternative for the single-company case (e.g. get_financial_ratios) or state exclusions, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pit_universeIndex membership on a dateA
Read-onlyIdempotent
Inspect

Returns the companies in the S&P 500, a Russell index or a sector on a given date, including members that later left or delisted, with CIK, ticker, name, sector, industry and a confidence label, plus the full member count. Use this when the user asks who was in an index on a past date or whether a company was a member then. It covers current and former S&P 500 companies, and a long list arrives in pages of at most 250 rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNoIndex to list: sp500, russell1000, russell2000 or russell3000; omit for no index filter, e.g. sp500.
limitNoMaximum number of members to return, 1 to 3500; defaults to 100, e.g. 505.
offsetNoRows to skip when paging through a long list; defaults to 0, e.g. 250.
sectorNoSector name to match, case-insensitive partial match, e.g. Technology.
is_activeNotrue keeps only companies still trading today, which drops members that later delisted; omit to keep all, e.g. true.
as_of_dateNoDate the membership applies to, YYYY-MM-DD; omit for the current universe, e.g. 2022-12-30.
as_of_basisNoWhich dates decide membership: effective (default, when a change took effect) or announcement (when it was announced), e.g. announcement.effective
include_share_classesNotrue returns one row per share class instead of one per company; defaults to false, e.g. true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
_metaYesProvenance envelope — data lineage for every MCP response
indexYes
sectorYes
completeYes
coverageYes
companiesYes
as_of_dateYes
truncationNoPresent only when the inline-row cap withheld rows. Page with `next_offset` (keep the same `limit`) or pull the full set via get_compute_ready_stream.
as_of_basisYes
coverage_gapYes
returned_rowsYes
universe_sizeYes
limit_truncatedYes
survivorship_freeYes
confidence_summaryYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful context beyond that: it includes former/delisted members, lists returned fields, mentions a confidence label and full member count, and discloses pagination behavior, though the page-size claim is potentially inconsistent with the schema.

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

Conciseness5/5

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

Three sentences are front-loaded with purpose, then usage, then pagination. Each sentence adds a distinct piece of information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 detailed, and annotations cover safety. The description covers purpose, usage condition, and pagination for an eight-parameter optional-filter query, though it does not explain how filters combine.

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

Parameters2/5

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

Schema description coverage is 100%, so the schema already documents all eight parameters with defaults, ranges, and examples. The description's only parameter-adjacent addition is 'a long list arrives in pages of at most 250 rows', which conflicts with the schema's limit maximum of 3500, and it adds no other meaningful parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns') and resource ('companies in the S&P 500, a Russell index or a sector on a given date'), with explicit temporal and former-member scope. It is clearly distinct from a current-universe screen, but it does not name a sibling alternative like screen_universe to fully differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives a clear trigger: 'Use this when the user asks who was in an index on a past date or whether a company was a member then.' It does not name alternatives or state when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_historyMonth-end price historyA
Read-onlyIdempotent
Inspect

Returns a company's month-end closing prices over a date range, oldest first, one bar per completed month with the unadjusted close in USD, dividend cash, split factor and a total-return index; open, high, low and volume are empty. Use this when the user asks how a stock's price or total return moved over months or years. Closes are not split-adjusted, so the return between two dates is the ratio of their total-return index values minus one.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of month-end bars, 1 to 360; defaults to 252. The most recent bars in the range are kept, e.g. 60.
tickerYesTicker symbol or SEC CIK of the company, e.g. AAPL.
end_dateNoLast date of the range, YYYY-MM-DD; omit for the latest completed month, e.g. 2024-12-31.
start_dateNoFirst date of the range, YYYY-MM-DD; omit to take the latest limit months up to end_date, e.g. 2021-01-01.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cikYes
barsYes
noteYes
_metaYesProvenance envelope — data lineage for every MCP response
tickerYes
end_dateYes
bar_countYes
start_dateYes
granularityYes
company_nameYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already establish the safe-read profile (readOnly, idempotent, non-destructive), and the description adds genuinely non-obvious behavior: closes are NOT split-adjusted, and the correct return between two dates is the ratio of total-return index values minus one. It also discloses output ordering and empty fields, which an agent could otherwise misread.

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

Conciseness4/5

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

Front-loads the core purpose and returned content, then usage, then the critical split-adjustment caveat as the last sentence. The first sentence is dense with a long field list but no sentence is filler; slightly heavy compared to a leaner two-sentence version.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still supplies the interpretive context an agent needs: what an empty OHLC/volume means, ordering, and how to compute returns from the unadjusted closes/TRI. Nothing required to call or interpret this tool is missing.

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

Parameters3/5

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

Schema coverage is 100%, so ticker, start_date, end_date and limit semantics (default 252, max 360, most-recent-bars-retained) are fully documented in the schema. The description adds only the loose phrase 'over a date range' and does not meaningfully extend parameter understanding, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with granularity: 'Returns a company's month-end closing prices over a date range, oldest first, one bar per completed month.' It also enumerates the returned fields (unadjusted close, dividend cash, split factor, total-return index) and notes that OHLC/volume are empty, which clearly separates it from daily-price siblings like get_stock_price.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger: 'Use this when the user asks how a stock's price or total return moved over months or years.' That's a clear usage context, but it names no alternative tool (e.g. get_stock_price for daily bars) and states no when-not condition, so the routing decision is left partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_priceMonth-end stock priceA
Read-onlyIdempotent
Inspect

Returns one of a company's month-end closing prices: the unadjusted close in USD on the last trading day of the latest completed month on or before a date, with the dividend and split factors and a total-return index. Use this when the user asks what a stock traded at around a date. The month in progress is not included; a run of month-ends comes from get_price_history.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate to price as of, YYYY-MM-DD; omit for the latest completed month-end, e.g. 2024-06-15.
tickerYesTicker symbol or SEC CIK of the company, e.g. AAPL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cikYes
noteYes
_metaYesProvenance envelope — data lineage for every MCP response
closeYes
tickerYes
currencyYes
div_cashYes
price_dateYes
granularityYes
company_nameYes
split_factorYes
requested_dateYes
resolved_backwardYes
total_return_indexNo
is_exact_date_matchYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive and closed-world, so the safety profile is handled. The description adds real behavioral context: what exactly is returned (unadjusted close, dividend/split factors, total-return index) and the important edge case that the current month is excluded.

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

Conciseness5/5

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

Three tight sentences that front-load the return definition, then usage, then the alternative tool and exclusion. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 params, no nesting) and an output schema exists, so return-value explanation isn't required. The description still covers semantics, edge cases, and routing to the sibling, leaving nothing an agent needs to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: the date acts as an 'as-of' anchor snapped back to the last completed month-end rather than an exact trading day. That clarifies selection behavior the schema alone doesn't convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns ... month-end closing prices') with precise scope: unadjusted USD close on the last trading day of the latest completed month. It implicitly contrasts with get_price_history's series, so an agent can distinguish it from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('when the user asks what a stock traded at around a date'), states an exclusion (the month in progress is not included), and names the alternative tool for a run of month-ends (get_price_history).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_valuation_metricsValuation and profitabilityA
Read-onlyIdempotent
Inspect

Returns, by fiscal period, margins, return on equity, assets and invested capital, free cash flow and its margin, debt to equity, market multiples at period end (price, market cap, P/E, P/B, EV/EBITDA, dividend yield) and two assumption-free reference values, the Graham number and net current asset value per share. Use this when the user asks what a company trades at or how profitable it is. An intrinsic value under stated assumptions comes from compute_dcf.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of periods, 1 to 40; defaults to 5, e.g. 8.
periodNoannual (10-K) or quarterly (10-Q); defaults to annual, e.g. quarterly.annual
tickerYesTicker symbol or SEC CIK of the company, e.g. AAPL.
as_of_dateNoPoint-in-time cutoff, YYYY-MM-DD: only figures filed with the SEC on or before this date, e.g. 2024-06-30.
fiscal_yearNoFiscal year to return, four digits; omit for the most recent years, e.g. 2024.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
_metaYesProvenance envelope — data lineage for every MCP response
periodYes
tickerYes
as_of_dateYes
periods_returnedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so the safety profile is covered. The description adds genuine context beyond that: it labels the Graham number and NCAV as 'assumption-free reference values' and notes multiples are measured 'at period end', which clarifies interpretation. No mention of auth, rate limits, or stale-data behavior, but the annotation bar is met.

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

Conciseness4/5

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

Front-loaded with the return contents and then the usage trigger, so the most decision-relevant information leads. The first sentence is very dense with metric names, but each clause maps to a distinct data family rather than being filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 annotation coverage, the description needn't explain return shape; it nonetheless enumerates the metric families, which aids tool selection. It also routes to compute_dcf for valuation-with-assumptions. Nothing an agent needs to invoke it correctly appears missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters (limit, period, ticker, as_of_date, fiscal_year) are documented with examples and ranges; baseline 3 applies. The description adds only light semantics via 'by fiscal period' and 'at period end', which map loosely to period/fiscal_year and as_of_date but give no format or edge-case detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Returns, by fiscal period, margins, ROE, ROA, ROIC, FCF, debt-to-equity, market multiples...') and enumerates the metric families so an agent knows exactly what data comes back. It also distinguishes itself from compute_dcf, which handles assumption-based intrinsic value.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use this when the user asks what a company trades at or how profitable it is') and names the alternative tool with the condition that selects it ('An intrinsic value under stated assumptions comes from compute_dcf'). No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_restatementsFinancial restatementsA
Read-onlyIdempotent
Inspect

Returns restatement events: reported figures that a later SEC filing changed by more than 0.5%, each with the original and restated values, the change, a severity, the XBRL tag, both filings' accession numbers and how it was disclosed (non-reliance 8-K, amended filing, or a routine filing). Use this when the user asks whether or how a company's past numbers were revised. A revision in a routine filing describes the filing record, not the company's intent.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNorecent (default, newest restating filing first) or significance (importance, then size of change), e.g. significance.recent
limitNoEvents per page, 1 to 100; defaults to 25, e.g. 50.
cursorNoPaging cursor copied from next_cursor in the previous result, e.g. 25.
sectorNoSector name to limit results to, matched in full but case-insensitive, e.g. Technology.
tickerNoTicker symbol or SEC CIK to limit results to one company, e.g. AAPL.
event_idNoId of one event from an earlier result, lowercase hex, e.g. 3f9a0c12.
severityNohigh (change of 10% or more), medium (2% or more) or low (0.5% or more), e.g. high.
disclosureNoDisclosure types to include: non_reliance (8-K Item 4.02), amended, or undisclosed (a routine 10-K or 10-Q), e.g. ["amended"].
filed_sinceNoEarliest date of the restating filing, YYYY-MM-DD, e.g. 2024-01-01.
max_importanceNo1 keeps headline figures only, 2 adds primary statement lines, 3 includes footnotes, e.g. 1.
amendments_onlyNotrue keeps only changes that arrived in an amended 10-K/A or 10-Q/A, e.g. true.
min_abs_delta_pctNoSmallest absolute change to include, in percent from 0 to 100, e.g. 5.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
_metaYesProvenance envelope — data lineage for every MCP response
totalYes
eventsYes
next_cursorYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/destructive=false, so the safety profile is covered. The description adds genuinely useful non-schema context: the 0.5% inclusion threshold, the disclosure taxonomy in plain terms (non-reliance 8-K, amended filing, routine filing), and an interpretive caveat that a routine-filing revision describes the filing record rather than company intent.

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

Conciseness4/5

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

Three sentences, front-loaded with scope and threshold before the usage trigger and caveat. Every sentence earns its place, though the field enumeration could be tightened slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is not required, yet the description still summarizes the payload (original/restated values, change, severity, XBRL tag, accession numbers, disclosure). Combined with the threshold definition and disclosure taxonomy, an agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100% and every one of the 12 parameters carries its own definition and example, so the schema does the heavy lifting. The description adds no parameter-level syntax or semantics beyond what the schema already provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (restatement events) with a precise threshold definition (figures a later SEC filing changed by more than 0.5%) and enumerates the returned fields. An agent can distinguish this from siblings like forensic_audit or verify_fact_lineage 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this when the user asks whether or how a company's past numbers were revised" gives a clear triggering condition. It stops short of naming alternatives (e.g., forensic_audit, verify_fact_lineage) or stating when not to use it, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_three_statementThree-statement projectionA
Read-onlyIdempotent
Inspect

Returns a linked income statement, balance sheet and cash flow for each projected year, seeded from the company's latest annual 10-K figures, with a yearly check that the balance sheet balances and the free cash flow stream. Use this when the user wants to see how a company's statements could develop under growth, margin, financing and payout assumptions they choose. Margins and capital spending stay at the latest year's share of revenue unless overridden; interest and tax rates are the user's assumptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsNoYears to project, 1 to 15; defaults to 5, e.g. 10.
tickerYesTicker symbol or SEC CIK of the company to project, e.g. AAPL.
tax_rateNoTax rate on positive pretax income, 0 to 1; defaults to 0.21, e.g. 0.25.
as_of_dateNoPoint-in-time cutoff for the reported inputs, YYYY-MM-DD: only filings accepted by this date, e.g. 2024-06-30.
cash_sweep_pctNoShare of each year's free cash flow used to repay debt, 0 to 1; defaults to 0, e.g. 0.5.
dividend_payout_pctNoShare of each year's net income distributed as dividends, 0 to 1; defaults to 0, e.g. 0.3.
new_debt_draw_year1NoNew debt borrowed in the first projected year, in USD; defaults to 0, e.g. 5000000000.
revenue_growth_rateYesYearly revenue growth as a decimal, -0.5 to 1, e.g. 0.08.
interest_rate_on_debtNoInterest rate on debt at the start of each year, 0 to 0.5; defaults to 0.06, e.g. 0.05.
new_equity_draw_year1NoNew equity raised in the first projected year, in USD, added to cash and equity; defaults to 0, e.g. 2000000000.
gross_margin_pct_overrideNoGross margin for every projected year; omit to keep the latest year's, e.g. 0.45.
capex_pct_of_revenue_overrideNoCapital spending as a share of revenue; omit to keep the latest year's, e.g. 0.03.
operating_margin_pct_overrideNoOperating margin for every projected year; omit to keep the latest year's, e.g. 0.3.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_metaYesProvenance envelope — data lineage for every MCP response
resultYes
tickerYes
seed_period_endYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds real behavioral detail beyond them: figures are seeded from the latest annual 10-K, a yearly balance-sheet check is performed, and margins/capex hold the latest year's share unless overridden while interest and tax rates are user assumptions. It doesn't cover failure modes, such as what happens if no acceptable 10-K exists.

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

Conciseness4/5

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

Three sentences, front-loaded with the return payload and the seed data source, then usage, then defaulting rules. Dense but every sentence carries relevant information; the first sentence is slightly long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and all 13 parameters are documented in the schema. The description supplies the usage context and defaulting semantics an agent needs; only edge-case behavior (missing filings, balance-check failure handling) is absent.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description goes beyond it by explaining cross-parameter behavior — that gross/operating margin and capex overrides default to the latest year's share of revenue, and that interest and tax rates are treated as user assumptions rather than derived.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it returns a linked income statement, balance sheet and cash flow for each projected year, seeded from the latest 10-K. This clearly separates it from siblings like compute_dcf or compare_periods, which produce valuations or historical comparisons rather than projected statements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it: 'when the user wants to see how a company's statements could develop under growth, margin, financing and payout assumptions they choose.' It gives clear context but names no alternatives or when-not-to-use conditions (e.g. versus compute_dcf).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_universeFactor screenA
Read-onlyIdempotent
Inspect

Returns companies ranked by factor scores: return on equity, gross, operating and net margin, revenue growth, free cash flow to assets, debt to equity, asset turnover, current ratio and Piotroski F-score, each with a percentile rank from 0 (worst) to 1 (best), plus a composite rank. Use this when the user wants companies ranked or filtered by quality or growth, or where one company ranks. It covers current and former S&P 500 companies; one company's ratios over time come from get_financial_ratios.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of companies to return, 1 to 100; defaults to 25, e.g. 10.
offsetNoRows to skip from the top of the limit results; defaults to 0, e.g. 10.
sectorNoSector name to match, case-insensitive partial match, e.g. Technology.
tickerNoTicker symbol or SEC CIK to show one company's scores; omit to rank all companies, e.g. AAPL.
sort_byNoRank to sort by, such as composite_rank (the default), roe_rank or piotroski_f_score_rank, e.g. roe_rank.composite_rank
as_of_dateNoPoint-in-time cutoff, YYYY-MM-DD: each company ranked on what it had filed by this date, e.g. 2024-06-30.
exclude_outliersNotrue also drops rows with implausible factor values, such as near-zero denominators; defaults to false, e.g. true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesRanked factor-score rows for the screened universe
noteNo
_metaYesProvenance envelope — data lineage for every MCP response
tickerNoPresent only when a single-ticker lookup was requested
lineageNoProvenance for pipeline-derived values (the ratio table / the factor_scores table): source table + pipeline computed_at, plus a pointer to the tools that return filing-level lineage. NOT point-in-time (recomputed on each pipeline run).
sort_byYes
pit_safeNoPresent (and true) only when as_of_date was supplied — the screen was filtered by factor_scores.accepted_at with zero look-ahead
as_of_dateNoPresent only when a point-in-time as_of_date was supplied
truncationNoPresent only when the inline-row cap withheld rows. Page with `next_offset` (keep the same `limit`) or pull the full set via get_compute_ready_stream.
sector_filterNoPresent only when a sector filter was applied
results_returnedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this as a safe, idempotent, read-only operation with no destructive side effects and a closed universe. The description adds useful behavioral context beyond annotations: the universe is current and former S&P 500 companies, and results include percentile ranks from 0 to 1 plus a composite rank, which signals what the return values look like.

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

Conciseness5/5

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

The description is front-loaded with what the tool returns, followed by when to use it, then scope and the sibling alternative. Every sentence contributes: the factor list is dense but necessary for a screening tool, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich annotations, 100% schema coverage, and the presence of an output schema, the description provides everything an agent needs: purpose, ranked-output semantics, usage context, universe scope, and a clear pointer to the right sibling for time-series ratios.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters in detail, including defaults, bounds, enums, and examples. The description adds no parameter-level detail beyond naming the factors, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource (returns companies ranked by factor scores) and enumerates the factors covered, plus the composite rank. It distinguishes the tool from siblings by noting the one-company time-series alternative get_financial_ratios, so an agent can tell it apart 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use the tool: when the user wants companies ranked or filtered by quality or growth, or where one company ranks. It names one alternative for a related need (get_financial_ratios for one company's ratios over time), but does not give explicit exclusions versus other sibling screeners like get_peer_comparables or get_valuation_metrics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_companiesCompany searchA
Read-onlyIdempotent
Inspect

Returns companies matching a name, ticker, CIK or SIC code, with CIK, ticker, name, sector, industry, exchange, listing status and current S&P 500 membership. Use this when the user names a company and other tools need its ticker or CIK, or asks for current S&P 500 members. It covers current and former S&P 500 companies; membership on a past date comes from get_pit_universe.

ParametersJSON Schema
NameRequiredDescriptionDefault
cikNoSEC CIK to match exactly, digits only, leading zeros optional, e.g. 0000320193.
limitNoMaximum number of results, 1 to 50; defaults to 25, e.g. 10.
queryNoText matched against company names and tickers, case-insensitive; an all-digit value matches a CIK exactly, e.g. Apple.
is_sp500Notrue to return current S&P 500 members only, e.g. true.
sic_codeNoFour-digit SIC industry code to match exactly, e.g. 7372.
is_activeNotrue for current listings only, false for delisted or superseded listings only; omit for both, e.g. true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_metaYesProvenance envelope — data lineage for every MCP response
queryYes
companiesYes
coverage_noteNoPresent only when no company matched: what this connector covers.
results_returnedYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds real behavioral context beyond that: it discloses the temporal scope (current and former S&P 500 members) and explicitly routes point-in-time membership elsewhere. It does not discuss result ordering or pagination, but the limit parameter and output schema mitigate that.

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

Conciseness5/5

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

Two sentences, front-loaded with what is returned, followed by the routing rule. No wasted clauses; every sentence carries selection-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, annotations covering the safety profile, and 100% schema description coverage, the description only needs to add scope and routing — which it does cleanly, including the S&P 500 caveat. Nothing needed to invoke it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% with per-parameter descriptions including examples, so the schema does the heavy lifting. The description only groups the identifier types (name, ticker, CIK, SIC) and adds nothing about format, precedence, or empty-query behavior — the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (returns) and resource (companies) plus the exact matching keys (name, ticker, CIK, SIC) and the fields returned (CIK, ticker, sector, exchange, S&P 500 membership). The scope statement about current vs. former S&P 500 companies clearly separates it from get_pit_universe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the triggering situation ('when the user names a company and other tools need its ticker or CIK') and the alternative for the adjacent case ('membership on a past date comes from get_pit_universe'). Both when-to-use and when-to-use-something-else are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_fact_lineageTrace a figure to its filingA
Read-onlyIdempotent
Inspect

Returns one reported figure with its source: company, concept, value, unit, period, form type, filing date, accession number and links to the filing on SEC EDGAR. Use this when the user asks which filing reported a number, by fact_id from an earlier result or by concept for the latest value. A figure from a specific period is traced by the fact_id get_company_fundamentals returns for it, and many fact_ids at once by verify_facts.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker symbol or SEC CIK of the company, e.g. AAPL.
conceptNoStandard concept whose latest reported value to trace, used when no fact_id is given, e.g. TotalRevenue.
fact_idNo64-character lowercase hex fact_id from an earlier result; give this or concept, e.g. 8a02707ced0d5a157ed2cdb28df035e52250daf4d0699952f7fc5420e1ce3afa.
as_of_dateNoCutoff used with concept, YYYY-MM-DD: the latest value filed on or before this date; a filing date, not a period end, e.g. 2024-06-30.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_metaYesProvenance envelope — data lineage for every MCP response
lineageNoFull provenance for one fact. Identity: fact_id, entity_id, ticker, company_name, concept, standard_concept, accession_id. Filing: source_url, inline_viewer_url, document_url, filing_date, form_type, accepted_at. Duration: period_start, period_end, period_span_days, and period_type (instant | quarterly | half_year | nine_month | annual | duration) so a 3-month stub is never mistaken for the 12-month figure — a 10-K tags BOTH at the same period_end.
verifiedYesTrue when the fact was located and its provenance resolved
lookup_byYesHow the fact was located: 'fact_id' or 'concept'

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world behavior, so the safety profile is covered. The description adds little beyond the schema about behavior — no rate limits, auth notes, or edge cases (e.g. what happens when neither concept nor fact_id resolves).

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

Conciseness4/5

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

Three sentences, front-loaded with the return contents and then the usage rule. The field enumeration partly duplicates the output schema, but the routing guidance earns its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 values in detail, and annotations plus full schema coverage carry the rest. It is complete enough to call correctly, missing only edge-case behavior for unresolved inputs.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: fact_id comes from an earlier get_company_fundamentals result, concept traces the latest value, and the fact_id/concept alternative is framed as a selection rule. That is useful beyond the schema's field-level text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Returns one reported figure with its source') and enumerates the returned fields, so an agent knows exactly what comes back. It is clearly differentiated from verify_facts (many figures) and get_company_fundamentals (the source of fact_ids).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger ('when the user asks which filing reported a number') and routes to the two relevant alternatives for the single-figure and bulk cases. It does not state exclusions or when-not-to-use, so it falls short of the top tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_factsTrace many figures to filingsA
Read-onlyIdempotent
Inspect

Returns, for up to 50 fact_ids in one call, each figure's source filing or a not-found code and message, plus counts of requested, found and missing. Use this when the user wants a list of cited figures checked against SEC filings. Duplicate pairs are checked once, and a lookup by concept rather than fact_id comes from verify_fact_lineage.

ParametersJSON Schema
NameRequiredDescriptionDefault
factsYes1 to 50 pairs of ticker and fact_id to check, e.g. [{"ticker": "AAPL", "fact_id": "8a02707ced0d5a157ed2cdb28df035e52250daf4d0699952f7fc5420e1ce3afa"}].

Output Schema

ParametersJSON Schema
NameRequiredDescription
_metaYesProvenance envelope — data lineage for every MCP response
resultsYesCheck `found` before reading `lineage`.
summaryYesCounts over `results`. Quote `missing` when reporting coverage — it is the number of figures you could NOT tie to a filing.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description earns credit for adding per-item failure handling (not-found code and message), batch-size cap, and dedup semantics ("Duplicate pairs are checked once") — behavior an agent cannot read off the annotations. It stops short of noting rate limits or what a partial-failure response looks like in detail.

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

Conciseness5/5

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

Two dense sentences with zero filler; the return shape and batch limit are front-loaded, followed by the usage trigger and the sibling disambiguation. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no elaboration, yet the description still flags the not-found code path and counts. All an agent needs to call this correctly — input shape, batch cap, dedup behavior, and the alternative for concept-based lookups — is present.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents `facts`, ticker format, fact_id hex pattern, and maxItems 50, so baseline is 3. The description adds the dedup rule for duplicate ticker/fact_id pairs, which is genuinely new semantic information not expressible in the schema, lifting this above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns each figure's source filing or a not-found code, plus found/missing counts, for up to 50 fact_ids. It explicitly distinguishes itself from the sibling `verify_fact_lineage` by input type (fact_id vs concept), so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use trigger ("when the user wants a list of cited figures checked against SEC filings") and names the alternative tool with the condition that selects it ("a lookup by concept rather than fact_id comes from `verify_fact_lineage`"). No inference required.

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.

  1. 1 tool update
    • Changedlist_restatements2 fields changed
      • addedOutput schema / properties / events / items / properties / current_is_inline_xbrl
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / events / items / properties / first_is_inline_xbrl
        Added value: +{
        +  "type": "boolean"
        +}
  2. 5 tool updates
    • Changedget_company_fundamentals4 fields changed
      • removedInput schema / properties / lineage_detail
        Removed value: -{
        -  "default": "compact",
        -  "description": "Source detail per period: compact (default, filing and links), full (adds filing timestamps and inputs) or off, e.g. full.",
        -  "enum": [
        -    "off",
        -    "compact",
        -    "full"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / min_confidence
        Removed value: -{
        -  "description": "Withhold figures whose confidence score, 0 to 1, is below this; scores drop for failed accounting checks or later revisions, e.g. 0.95.",
        -  "maximum": 1,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / properties / response_format
        Removed value: -{
        -  "default": "flat",
        -  "description": "flat (default) or envelope, which adds one record per figure with value, unit, period and source, e.g. envelope.",
        -  "enum": [
        -    "flat",
        -    "envelope"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / strict
        Removed value: -{
        -  "default": false,
        -  "description": "true returns an error instead of fewer periods when coverage cannot supply limit periods; defaults to false, e.g. true.",
        -  "type": "boolean"
        -}
    • Changedget_financial_ratios1 field changed
      • removedInput schema / properties / period_end_before
        Removed value: -{
        -  "description": "Older name for as_of_date, same format and meaning; as_of_date wins when both are set, e.g. 2024-06-30.",
        -  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        -  "type": "string"
        -}
    • Changedget_peer_comparables1 field changed
      • removedInput schema / properties / period_end_before
        Removed value: -{
        -  "description": "Older name for as_of_date, same format and meaning; as_of_date wins when both are set, e.g. 2024-06-30.",
        -  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        -  "type": "string"
        -}
    • Changedsearch_companies2 fields changed
      • removedInput schema / properties / include_inactive
        Removed value: -{
        -  "default": true,
        -  "description": "Whether delisted or superseded listings may appear; defaults to true and is ignored when is_active is set, e.g. false.",
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / coverage_note
        Added value: +{
        +  "description": "Present only when no company matched: what this connector covers.",
        +  "type": "string"
        +}
    • Changedverify_fact_lineage2 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Cutoff used with concept, YYYY-MM-DD: the latest value filed on or before this date, e.g. 2024-06-30."New value: +"Cutoff used with concept, YYYY-MM-DD: the latest value filed on or before this date; a filing date, not a period end, e.g. 2024-06-30."
      • removedInput schema / properties / period_end
        Removed value: -{
        -  "description": "Older name for as_of_date, same format and meaning: a filing cutoff, not a period end, e.g. 2024-06-30.",
        -  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        -  "type": "string"
        -}
  3. 121 tool updates
    • Removedapprove_staged_action
    • Removedcancel_scheduled_task
    • Changedcompare_periods19 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Point-in-time date (YYYY-MM-DD). Only returns facts with accepted_at on or before this date — eliminates look-ahead bias for backtesting."New value: +"Point-in-time cutoff, YYYY-MM-DD: only figures filed with the SEC on or before this date, e.g. 2024-06-30."
      • changedInput schema / properties / period_a / description
        Previous value: -"Earlier fiscal period. Format: 'FY2023' for annual or 'Q1-2023' for quarterly."New value: +"Earlier period: FY and the year, or Q1 to Q4, a hyphen and the year, e.g. FY2023."
      • changedInput schema / properties / period_b / description
        Previous value: -"Later fiscal period. Format: 'FY2024' for annual or 'Q1-2024' for quarterly."New value: +"Later period, in the same format as period_a, e.g. FY2024."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT, BRK.B — or a CIK (SEC identifier), e.g. '0000320193'."New value: +"Ticker symbol or SEC CIK of the company, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
    • Changedcompute_accretion_dilution26 fields changed
      • changedInput schema / properties / acquirer_share_price_override / description
        Previous value: -"Override the acquirer's live EOD close. Leave unset to use the latest R2-derived price."New value: +"Acquirer share price in USD used instead of its month-end close, e.g. 420."
      • changedInput schema / properties / acquirer_ticker / description
        Previous value: -"Acquirer's stock ticker symbol, e.g. MSFT."New value: +"Ticker symbol or SEC CIK of the acquiring company, e.g. MSFT."
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Point-in-time cutoff (YYYY-MM-DD) for both companies' fundamentals + prices. Omit to use the latest knowable data."New value: +"Point-in-time cutoff for both companies, YYYY-MM-DD: filings accepted and closes on or before this date, e.g. 2024-06-30."
      • changedInput schema / properties / cash_financing_source / description
        Previous value: -"Where the cash consideration is funded from. \"new_debt\" (default) applies an after-tax interest drag; \"balance_sheet_cash\" applies none."New value: +"How the cash is funded: new_debt (default, adds after-tax interest) or balance_sheet_cash (no interest cost), e.g. balance_sheet_cash."
      • changedInput schema / properties / cash_pct / description
        Previous value: -"Fraction (0-1) of deal value paid in cash; the remainder (1 - cash_pct) is paid in acquirer stock."New value: +"Share of the deal value settled in cash, 0 to 1; the rest is acquirer stock, e.g. 0.5."
      • changedInput schema / properties / new_debt_interest_rate / description
        Previous value: -"Annual interest rate on new acquisition debt (only used when cash_financing_source is \"new_debt\"). Default 0.06."New value: +"Interest rate on new acquisition debt, 0 to 0.5, used with new_debt; defaults to 0.06, e.g. 0.07."
      • changedInput schema / properties / offer_price_per_share / description
        Previous value: -"Offer price per target share (USD)."New value: +"Price offered per target share in USD, above zero, e.g. 250."
      • changedInput schema / properties / synergies_pretax / description
        Previous value: -"Pretax annual run-rate cost/revenue synergies (USD). Default 0."New value: +"Yearly pretax synergies in USD at full run rate; defaults to 0, e.g. 500000000."
      • changedInput schema / properties / target_share_price_override / description
        Previous value: -"Override the target's live EOD close (used only for the disclosed premium). Leave unset to use the latest R2-derived price."New value: +"Target share price in USD used instead of its month-end close, for the takeover premium only, e.g. 180."
      • changedInput schema / properties / target_ticker / description
        Previous value: -"Target's stock ticker symbol, e.g. ATVI."New value: +"Ticker symbol or SEC CIK of the company being acquired, e.g. AAPL."
      • changedInput schema / properties / tax_rate / description
        Previous value: -"Effective tax rate applied to synergies and the interest drag. Default 0.21."New value: +"Tax rate on synergies and interest, 0 to 1; defaults to 0.21, e.g. 0.25."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
    • Changedcompute_dcf29 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Point-in-time cutoff (YYYY-MM-DD) for the auto-pulled inputs. Fundamentals are filtered by SEC accepted_at (strict PIT); valuation.parquet inputs are best-effort PIT (filtered by created_at, its accepted_at proxy — no SEC acceptance timestamp exists for pipeline-computed valuations). Omit to use the latest knowable inputs."New value: +"Point-in-time cutoff for the reported inputs, YYYY-MM-DD: only filings accepted by this date, e.g. 2024-06-30."
      • changedInput schema / properties / fcf_base_override / description
        Previous value: -"Override the auto-pulled FCF base (USD). Leave unset to use R2-derived."New value: +"Starting free cash flow in USD, used instead of the reported figure; trend mode only, e.g. 95000000000."
      • changedInput schema / properties / fcf_source / description
        Previous value: -"\"trend\" (default): compound fcf_base by stage1_growth_rate every year (unchanged original behavior). \"three_statement\": derive the FCF stream from a full linked 3-statement projection instead — see the tool description for details."New value: +"trend (default) grows starting free cash flow by stage1_growth_rate; three_statement projects linked statements instead, e.g. three_statement."
      • changedInput schema / properties / shares_override / description
        Previous value: -"Override shares outstanding. Leave unset to use R2-derived."New value: +"Share count used instead of the reported figure, above zero, e.g. 15000000000."
      • changedInput schema / properties / stage1_growth_rate / description
        Previous value: -"Stage-1 FCF growth rate (e.g. 0.12 = 12%/yr)."New value: +"Yearly growth in the projection years as a decimal, -0.5 to 1: of free cash flow (trend) or of revenue (three_statement), e.g. 0.08."
      • changedInput schema / properties / stage1_years / description
        Previous value: -"Number of explicit high-growth projection years before the terminal stage (3–15). Defaults to 5."New value: +"Number of projection years, 3 to 15; defaults to 5, e.g. 10."
      • changedInput schema / properties / terminal_growth_rate / description
        Previous value: -"Long-run growth. Default 0.025."New value: +"Growth after the projection years as a decimal, -0.05 to 0.1; defaults to 0.025, e.g. 0.02."
      • changedInput schema / properties / three_statement_assumptions / description
        Previous value: -"Only used when fcf_source is \"three_statement\". Overrides for the underlying projection; unset fields use project_three_statement's defaults."New value: +"Overrides for three_statement mode; each unset field keeps its default, e.g. {\"tax_rate\": 0.25}."
      • changedInput schema / properties / three_statement_assumptions / properties / cash_sweep_pct / description
        Previous value: -"Default 0."New value: +"Share of each year's free cash flow used to repay debt, 0 to 1; defaults to 0, e.g. 0.5."
      • changedInput schema / properties / three_statement_assumptions / properties / dividend_payout_pct / description
        Previous value: -"Default 0."New value: +"Share of each year's net income distributed as dividends, 0 to 1; defaults to 0, e.g. 0.3."
      • changedInput schema / properties / three_statement_assumptions / properties / interest_rate_on_debt / description
        Previous value: -"Default 0.06."New value: +"Interest rate on debt as a decimal, 0 to 0.5; defaults to 0.06, e.g. 0.05."
      • changedInput schema / properties / three_statement_assumptions / properties / tax_rate / description
        Previous value: -"Default 0.21."New value: +"Tax rate as a decimal, 0 to 1; defaults to 0.21, e.g. 0.25."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol of the company to value, e.g. AAPL, MSFT, BRK.B."New value: +"Ticker symbol or SEC CIK of the company to value, e.g. AAPL."
      • changedInput schema / properties / wacc / description
        Previous value: -"Discount rate. Default 0.09."New value: +"Discount rate as a decimal, 0.01 to 0.5; defaults to 0.09, e.g. 0.1."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
    • Changedcompute_lbo28 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Point-in-time cutoff (YYYY-MM-DD) for the seed period. Omit to use the latest knowable annual period."New value: +"Point-in-time cutoff for the reported inputs, YYYY-MM-DD: only filings accepted by this date, e.g. 2024-06-30."
      • changedInput schema / properties / cash_sweep_pct / description
        Previous value: -"Fraction (0-1) of each year's FCF swept to debt paydown. Default 1.0 (standard LBO — 100% sweep)."New value: +"Share of each year's free cash flow used to repay debt, 0 to 1; defaults to 1, e.g. 0.75."
      • changedInput schema / properties / dividend_payout_pct / description
        Previous value: -"Fraction (0-1) of net income distributed to the sponsor each year (dividend recap style). Default 0 — most LBOs return capital only at exit."New value: +"Share of each year's net income distributed to the sponsor, 0 to 1; defaults to 0, e.g. 0.2."
      • changedInput schema / properties / entry_ebitda_override / description
        Previous value: -"Override the EBITDA figure used for both entry and exit multiples. Without this, EBITDA is proxied by operating income."New value: +"EBITDA in USD that sets the entry price and debt instead of operating income, e.g. 130000000000."
      • changedInput schema / properties / entry_multiple / description
        Previous value: -"EV/EBITDA multiple paid at entry (e.g. 10 = 10x)."New value: +"Purchase price as a multiple of EBITDA, above zero, e.g. 10."
      • changedInput schema / properties / exit_multiple / description
        Previous value: -"EV/EBITDA multiple assumed at exit. Defaults to entry_multiple (no multiple expansion/contraction) when omitted."New value: +"Sale price as a multiple of the final year's EBITDA; defaults to entry_multiple, e.g. 12."
      • changedInput schema / properties / hold_period_years / description
        Previous value: -"Hold period in years (1-10). Defaults to 5."New value: +"Years from purchase to sale, 1 to 10; defaults to 5, e.g. 7."
      • changedInput schema / properties / interest_rate_on_debt / description
        Previous value: -"Annual interest rate on beginning-of-period LBO debt. Default 0.08 (leveraged debt typically prices above IG)."New value: +"Interest rate on buyout debt at the start of each year, 0 to 0.5; defaults to 0.08, e.g. 0.09."
      • changedInput schema / properties / leverage_multiple / description
        Previous value: -"Debt/EBITDA raised at entry (e.g. 5 = 5x leverage)."New value: +"Debt raised at entry as a multiple of EBITDA, zero or more, e.g. 5."
      • changedInput schema / properties / minimum_cash / description
        Previous value: -"Minimum operating cash left on the pro-forma opening balance sheet. Default 0."New value: +"Cash left on the opening balance sheet, in USD; defaults to 0, e.g. 1000000000."
      • changedInput schema / properties / revenue_growth_rate / description
        Previous value: -"Flat annual revenue growth rate applied every year of the hold (e.g. 0.05 = 5%/yr)."New value: +"Yearly revenue growth over the hold as a decimal, -0.5 to 1, e.g. 0.05."
      • changedInput schema / properties / tax_rate / description
        Previous value: -"Effective tax rate on positive pretax income. Default 0.21."New value: +"Tax rate on positive pretax income, 0 to 1; defaults to 0.21, e.g. 0.25."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol of the LBO target, e.g. AAPL."New value: +"Ticker symbol or SEC CIK of the buyout target, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
    • Removedcreate_report
    • Removedcreate_rule
    • Removedcreate_signal
    • Removeddelete_agent
    • Removeddelete_agent_memory
    • Removeddelete_citation_override
    • Removeddelete_claim
    • Removeddelete_report
    • Removeddelete_rule
    • Removeddelete_signal
    • Removeddelete_thesis
    • Removeddelete_uploaded_document
    • Removeddelete_watchlist
    • Changeddescribe_schema21 fields changed
      • changedInput schema / properties / table / description
        Previous value: -"Filter to a single table name (e.g. 'fact', 'entity', 'references'). Omit to return the full schema for all tables."New value: +"Name of one table to describe; omit for all tables. An unknown name returns the valid names, e.g. entity."
      • addedInput schema / properties / table / maxLength
        Added value: +64
      • addedInput schema / properties / table / minLength
        Added value: +1
      • addedInput schema / properties / table / pattern
        Added value: +"^[a-z][a-z0-9_]*$"
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
      • removedOutput schema / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from the active R2 manifest",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "_meta",
        -  "schema_version"
        -]New value: +[
        +  "_meta"
        +]
    • Removeddismiss_inbox_item
    • Changedforensic_audit16 fields changed
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol of the company to audit, e.g. AAPL, MSFT, BRK.B."New value: +"Ticker symbol or SEC CIK of the company to check, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
    • Removedgenerate_comps_xlsx
    • Removedgenerate_dcf_xlsx
    • Removedgenerate_lbo_xlsx
    • Removedgenerate_research_brief_docx
    • Removedget_agent
    • Removedget_agent_memory
    • Removedget_agent_run
    • Removedget_blockholders
    • Changedget_capital_allocation_profile18 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Point-in-time date (YYYY-MM-DD). Only returns facts with accepted_at on or before this date — eliminates look-ahead bias."New value: +"Point-in-time cutoff, YYYY-MM-DD: only figures filed with the SEC on or before this date, e.g. 2024-06-30."
      • changedInput schema / properties / lookback_years / description
        Previous value: -"Number of fiscal years to look back from the most recent filing (1–20). Defaults to 5 years for a full capital allocation cycle."New value: +"Fiscal years to cover, counting back from the latest filing, 1 to 20; defaults to 5, e.g. 3."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT — or a CIK (SEC identifier), e.g. '0000320193'."New value: +"Ticker symbol or SEC CIK of the company, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
    • Removedget_claim
    • Changedget_company_fundamentals26 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Point-in-time date (YYYY-MM-DD). Only returns facts with accepted_at on or before this date — eliminates look-ahead bias for backtesting. Omit for the full dataset."New value: +"Point-in-time cutoff, YYYY-MM-DD: only figures filed with the SEC on or before this date, e.g. 2024-06-30."
      • changedInput schema / properties / fiscal_year / description
        Previous value: -"Fiscal year (YYYY). Omit to return the most recent available years."New value: +"Fiscal year to return, four digits; omit for the most recent years, e.g. 2024."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of periods to return (1–40). Defaults to 5."New value: +"Maximum number of periods, 1 to 40; defaults to 5, e.g. 8."
      • changedInput schema / properties / lineage_detail / description
        Previous value: -"Per-period provenance envelope + per-metric availability/provenance sidecars. 'compact' (default) returns source_filing + source_url (the SEC Inline-XBRL viewer with every tagged fact highlighted when the filing is iXBRL, else the rendered document, else the filing index) + sec_url/document_url/inline_viewer_url + restated flag, plus lean per-metric availability + fact_id + source_filing. 'full' adds first_filed_at + accepted_at + per-metric source_url + computed inputs[]. 'off' omits all provenance."New value: +"Source detail per period: compact (default, filing and links), full (adds filing timestamps and inputs) or off, e.g. full."
      • changedInput schema / properties / min_confidence / description
        Previous value: -"Withhold any metric whose backing fact scores below this confidence [0, 1]. The score is a PENALTY FROM EVIDENCE — every fact starts at 1.0 and is docked only for something checkable: a failed accounting identity (-0.40), a later filing that revised the number (-0.20), an unaudited filing (-0.05). It is NOT a function of age: a clean 1995 fact scores the same as a clean 2026 one. Guide: 0.95 = 'no evidence against this number' (the normal case — ~99.9% of facts, every year); 0.80 = tolerate a fact a later filing revised; 0.60 = tolerate a filing whose accounting identities failed. A withheld metric is reported as availability:'suppressed' — never dropped silently, and never as 'not_reported', which would claim the company did not file it. Facts with no confidence score are withheld too (fail closed)."New value: +"Withhold figures whose confidence score, 0 to 1, is below this; scores drop for failed accounting checks or later revisions, e.g. 0.95."
      • changedInput schema / properties / period / description
        Previous value: -"Filing period granularity. Annual uses 10-K; quarterly uses 10-Q."New value: +"annual (10-K) or quarterly (10-Q); defaults to annual, e.g. quarterly."
      • changedInput schema / properties / response_format / description
        Previous value: -"Output shape. 'flat' (default) returns the legacy `metrics` object plus the additive `metrics_availability`/`metrics_provenance`/`metrics_display` sidecars — `metrics_display` holds each figure already rendered for prose (\"$402.83B\"), and you should quote it verbatim rather than reformatting `metrics` yourself. 'envelope' additionally attaches `metric_envelopes` — one canonical {metric,value,unit,scale,period,availability,provenance,display} object per metric. Both shapes carry the same display strings."New value: +"flat (default) or envelope, which adds one record per figure with value, unit, period and source, e.g. envelope."
      • changedInput schema / properties / strict / description
        Previous value: -"When true, fail with PLAN_LIMIT_EXCEEDED if the plan cannot satisfy the requested limit. Default false: return what's available and explain the gap in _meta.truncation."New value: +"true returns an error instead of fewer periods when coverage cannot supply limit periods; defaults to false, e.g. true."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT, BRK.B — or a CIK (SEC identifier), e.g. '0000320193'."New value: +"Ticker symbol or SEC CIK of the company, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
      • removedOutput schema / properties / data / items / properties / metric_envelopes / items / properties / display / description
        Removed value: -"The figure rendered exactly as it should be quoted in prose ($391.04B, 23.7%, $6.11). QUOTE THIS VERBATIM rather than re-rounding `value` yourself — re-rendering a raw number is how a stated figure drifts away from the filing it came from."
      • removedOutput schema / properties / data / items / properties / metrics_display / description
        Removed value: -"The figure rendered exactly as it should be quoted in prose ($402.83B, 59.65%, $6.11). QUOTE THESE VERBATIM. Do not re-render the raw number in `metrics` yourself: a figure you reformat no longer matches the string Valuein can bind to its filing, so it is reported to the reader as unverified even though the underlying fact was sound."
    • Removedget_compute_ready_stream
    • Changedget_earnings_signals20 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Point-in-time filter: only return signals with accepted_at on or before this date. Use for backtesting to avoid look-ahead bias."New value: +"Point-in-time cutoff, YYYY-MM-DD: only periods filed on or before this date, e.g. 2024-06-30."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of periods to return (1–40), most recent first. Defaults to 8 — covers 2 years of quarterly signals plus their TTM equivalents. earnings_signals.parquet currently emits one row per (entity, period_end); older rows surface here as more historical periods are published."New value: +"Maximum number of periods, newest first, 1 to 40; defaults to 8, e.g. 4."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT — or a CIK (SEC identifier), e.g. '0000320193'."New value: +"Ticker symbol or SEC CIK of the company, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
      • removedOutput schema / properties / plan
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "_meta",
        -  "ticker",
        -  "plan",
        -  "periods_returned",
        -  "note",
        -  "estimate_basis",
        -  "data"
        -]New value: +[
        +  "_meta",
        +  "ticker",
        +  "periods_returned",
        +  "note",
        +  "estimate_basis",
        +  "data"
        +]
    • Changedget_financial_ratios26 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Historical cutoff (canonical cross-tool date param). PIT by SEC accepted_at when the ratio data carries it (latest value knowable on/before the date, zero look-ahead, _meta.pit_safe=true), else by ratio.period_end (pit_safe=false). For guaranteed accepted_at PIT use get_company_fundamentals."New value: +"Historical cutoff, YYYY-MM-DD: ratios filed by this date, or for periods ending by it when no filing date is held, e.g. 2024-06-30."
      • changedInput schema / properties / categories / description
        Previous value: -"Ratio categories to include (see the enum). Omit to return every category this ticker has. `valuation` (pe_ratio, pb_ratio, ev_ebitda, market_cap, dividend_yield) is LIVE since schema 2.18.0 — price-derived, period-end-aligned, not strictly PIT. Availability is per-ticker (the envelope lists this ticker's available_categories)."New value: +"Groups to include: profitability, liquidity, leverage, efficiency, per_share, owner_earnings, forensic, growth, rank or valuation; omit for all, e.g. [\"profitability\"]."
      • addedInput schema / properties / categories / maxItems
        Added value: +10
      • changedInput schema / properties / fiscal_period / description
        Previous value: -"Filter to a specific fiscal period type. Use 'TTM' for trailing twelve months. Omit to return both annual (FY) and TTM rows."New value: +"Period type: FY, TTM, Q1, Q2, Q3 or Q4; omit for FY and TTM rows, e.g. TTM."
      • changedInput schema / properties / limit / description
        Previous value: -"Number of distinct period_end dates to return (1–20). Defaults to 5. Within each period, all matching ratio_names are included."New value: +"Number of period-end dates to return, 1 to 20; defaults to 5, e.g. 3."
      • changedInput schema / properties / period_end_before / description
        Previous value: -"Alias of as_of_date (as_of_date preferred — the canonical name). Returns ratios with period_end on or before this date."New value: +"Older name for as_of_date, same format and meaning; as_of_date wins when both are set, e.g. 2024-06-30."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT — or a CIK (SEC identifier), e.g. '0000320193'."New value: +"Ticker symbol or SEC CIK of the company, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
      • removedOutput schema / properties / data / items / properties / ratios / additionalProperties / properties / display / description
        Removed value: -"The ratio rendered exactly as it should be quoted (31.20%, 1.45x, $6.11). QUOTE THIS VERBATIM instead of converting `value` yourself."
      • changedOutput schema / properties / lineage / description
        Previous value: -"Provenance for pipeline-derived values (ratio.parquet / factor_scores.parquet): source table + pipeline computed_at, plus a pointer to the tools that return filing-level lineage. NOT point-in-time (recomputed on each pipeline run)."New value: +"Provenance for pipeline-derived values (the ratio table / the factor_scores table): source table + pipeline computed_at, plus a pointer to the tools that return filing-level lineage. NOT point-in-time (recomputed on each pipeline run)."
      • removedOutput schema / properties / plan
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "_meta",
        -  "ticker",
        -  "plan",
        -  "note",
        -  "periods_returned",
        -  "data"
        -]New value: +[
        +  "_meta",
        +  "ticker",
        +  "note",
        +  "periods_returned",
        +  "data"
        +]
    • Removedget_insider_sentiment
    • Removedget_insider_transactions
    • Removedget_institutional_holdings
    • Removedget_manager_portfolio
    • Removedget_morning_brief
    • Changedget_peer_comparables23 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Historical cutoff (canonical cross-tool date param) for the FIGURE leg: PIT by ratio accepted_at when present (latest-knowable, zero look-ahead, _meta.pit_safe=true), else by ratio.period_end (pit_safe=false). Peer SELECTION still uses current S&P 500 membership as a ranking proxy regardless of as_of_date (W3-G2)."New value: +"Historical cutoff, YYYY-MM-DD: ratios known by this date, with peers ranked by index membership on it, e.g. 2024-06-30."
      • changedInput schema / properties / categories / description
        Previous value: -"Ratio categories to include in the comparison. Defaults to profitability, valuation, and leverage."New value: +"Groups to include: profitability, liquidity, leverage, efficiency, per_share, owner_earnings or valuation; defaults to profitability, valuation and leverage, e.g. [\"valuation\"]."
      • addedInput schema / properties / categories / maxItems
        Added value: +7
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of peers to return alongside the subject company (1–10). Defaults to 5."New value: +"Number of peers besides the company, 1 to 10; defaults to 5, e.g. 8."
      • changedInput schema / properties / period_end_before / description
        Previous value: -"Alias of as_of_date (as_of_date preferred — the canonical name). Only include ratios with period_end on or before this date."New value: +"Older name for as_of_date, same format and meaning; as_of_date wins when both are set, e.g. 2024-06-30."
      • changedInput schema / properties / ticker / description
        Previous value: -"Subject company ticker or CIK, e.g. AAPL or '0000320193'. Peers are auto-selected by SIC code."New value: +"Ticker symbol or SEC CIK of the company to compare, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
      • changedOutput schema / properties / lineage / description
        Previous value: -"Provenance for pipeline-derived values (ratio.parquet / factor_scores.parquet): source table + pipeline computed_at, plus a pointer to the tools that return filing-level lineage. NOT point-in-time (recomputed on each pipeline run)."New value: +"Provenance for pipeline-derived values (the ratio table / the factor_scores table): source table + pipeline computed_at, plus a pointer to the tools that return filing-level lineage. NOT point-in-time (recomputed on each pipeline run)."
      • addedOutput schema / properties / peers_omitted_no_data
        Added value: +{
        +  "description": "Candidate peers left out because they had no ratio figures for the period; each was replaced by the next-closest candidate",
        +  "type": "integer"
        +}
    • Changedget_pit_universe23 fields changed
      • changedInput schema / properties / as_of_basis / description
        Previous value: -"Which date column drives historical construction. 'effective' (default) = effective_date/removal_date (first trading day; passive replication). 'announcement' = announcement_date/removal_announcement_date (S&P's public-announcement day; for inclusion-arb backtests) — rows with NULL announcement_date (mostly pre-2015) are skipped."New value: +"Which dates decide membership: effective (default, when a change took effect) or announcement (when it was announced), e.g. announcement."
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Historical date (YYYY-MM-DD) for survivorship-free construction. Index queries use index_membership join/leave dates (entrants after the date excluded, later-removed members kept); sector queries use security valid_from/valid_to. Omit for the current universe."New value: +"Date the membership applies to, YYYY-MM-DD; omit for the current universe, e.g. 2022-12-30."
      • changedInput schema / properties / include_share_classes / description
        Previous value: -"false (default) collapses to one row per CIK (index-provider convention — BRK counts once, not BRK-A + BRK-B). true returns every share-class row (GOOG and GOOGL separately) — for security-level analysis only."New value: +"true returns one row per share class instead of one per company; defaults to false, e.g. true."
      • changedInput schema / properties / index / description
        Previous value: -"Index filter. 'sp500' (~500 large caps, curated history back to 1996), 'russell1000' (~1000 large/mid), 'russell2000' (~2000 small caps), 'russell3000' (~3000 broad market) — the three Russell indices carry fund-derived history back to 2000-09-30 at medium confidence, with observation spacing that widens before 2007. Omit for no index filter (sector-only or full universe queries)."New value: +"Index to list: sp500, russell1000, russell2000 or russell3000; omit for no index filter, e.g. sp500."
      • changedInput schema / properties / is_active / description
        Previous value: -"Filter to active (currently trading) companies only. Omit to include all. WARNING: setting this to true on a HISTORICAL query reintroduces survivorship bias — companies that were active on as_of_date but later went bankrupt or got acquired will be filtered out.  Leave unset for true PIT backtests."New value: +"true keeps only companies still trading today, which drops members that later delisted; omit to keep all, e.g. true."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum companies to return (1–3500). Defaults to 100 — which is SMALLER THAN EVERY INDEX, so the default call returns a slice, reports `limit_truncated: true` and withholds `survivorship_free`. `universe_size` always states the full matched count whatever you set here. Raising it is NOT sufficient on its own: at most 250 rows are inlined per call, so a large limit still returns a page (`complete: false`) until you walk it with `offset`. Universe is deduped to one row per CIK, so for a usable backtest universe set this near the index size (SP500 ~505, Russell 3000 ~3050) and page with `offset`."New value: +"Maximum number of members to return, 1 to 3500; defaults to 100, e.g. 505."
      • changedInput schema / properties / offset / description
        Previous value: -"Zero-based row offset for paging a large universe. At most 250 rows are inlined per call; when more match, the response carries a `truncation` envelope — pass its `next_offset` here (keeping the same `limit`) to fetch the next page. Defaults to 0."New value: +"Rows to skip when paging through a long list; defaults to 0, e.g. 250."
      • changedInput schema / properties / sector / description
        Previous value: -"Sector filter (case-insensitive substring) over the SIC-derived, GICS-aligned label (not licensed GICS — see tool description). E.g. 'Technology', 'Energy'."New value: +"Sector name to match, case-insensitive partial match, e.g. Technology."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
    • Removedget_pit_valuation_ratios
    • Changedget_price_history22 fields changed
      • changedInput schema / properties / end_date / description
        Previous value: -"Inclusive end of the date range (YYYY-MM-DD). Defaults to today (the latest available close). Weekends and holidays resolve to the last trading close on or before this date."New value: +"Last date of the range, YYYY-MM-DD; omit for the latest completed month, e.g. 2024-12-31."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of bars to return. Daily plans (Pro, Institutional): 1–252, default 252 ≈ 1 trading year. Free plans (sample, benchmark), which return month-end bars: 1–360, covering up to the full ~30-year monthly archive. When the range contains more bars than `limit`, the most recent `limit` bars within the range are returned."New value: +"Maximum number of month-end bars, 1 to 360; defaults to 252. The most recent bars in the range are kept, e.g. 60."
      • changedInput schema / properties / start_date / description
        Previous value: -"Inclusive start of the date range (YYYY-MM-DD). Bars on or after this date are returned (up to `limit`). Omit to receive the `limit` most-recent bars before end_date."New value: +"First date of the range, YYYY-MM-DD; omit to take the latest limit months up to end_date, e.g. 2021-01-01."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT — or a CIK (SEC identifier), e.g. '0000320193'."New value: +"Ticker symbol or SEC CIK of the company, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / source
        Removed value: -{
        -  "const": "SEC EDGAR",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "pit_safe"
        +]
      • removedOutput schema / properties / plan
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "_meta",
        -  "ticker",
        -  "plan",
        -  "cik",
        -  "company_name",
        -  "start_date",
        -  "end_date",
        -  "bar_count",
        -  "granularity",
        -  "bars",
        -  "note"
        -]New value: +[
        +  "_meta",
        +  "ticker",
        +  "cik",
        +  "company_name",
        +  "start_date",
        +  "end_date",
        +  "bar_count",
        +  "granularity",
        +  "bars",
        +  "note"
        +]
    • Removedget_report
    • Removedget_report_version
    • Removedget_research_file
    • Changedget_sec_filing_links23 fields changed
      • changedInput schema / properties / end_date / description
        Previous value: -"Inclusive upper bound on filing_date (YYYY-MM-DD). E.g. '2023-12-31'."New value: +"Latest filing date to include, YYYY-MM-DD, e.g. 2024-12-31."
      • changedInput schema / properties / event_types / description
        Previous value: -"8-K item codes to filter by. E.g. ['1.01'] for material agreements, ['2.01'] for asset acquisitions, ['5.02'] for director/officer changes. Only relevant when form_types includes '8-K'."New value: +"8-K item numbers to match; filings without a matching item are left out, e.g. [\"2.02\"]."
      • addedInput schema / properties / event_types / maxItems
        Added value: +30
      • changedInput schema / properties / form_types / description
        Previous value: -"Filing form types to include. Defaults to 10-K and 10-Q."New value: +"Forms to include: 10-K, 10-Q, 8-K, 20-F, 40-F or their /A amendments; defaults to 10-K and 10-Q, e.g. [\"8-K\"]."
      • addedInput schema / properties / form_types / maxItems
        Added value: +9
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of filings to return (1–50). Defaults to 10."New value: +"Maximum number of filings, 1 to 50; defaults to 10, e.g. 20."
      • changedInput schema / properties / start_date / description
        Previous value: -"Inclusive lower bound on filing_date (YYYY-MM-DD). E.g. '2023-01-01'."New value: +"Earliest filing date to include, YYYY-MM-DD, e.g. 2024-01-01."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT — or a CIK (SEC identifier), e.g. '0000320193'."New value: +"Ticker symbol or SEC CIK of the company, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
    • Removedget_smart_money_flow
    • Removedget_sop
    • Changedget_stock_price20 fields changed
      • changedInput schema / properties / date / description
        Previous value: -"As-of calendar date (YYYY-MM-DD). Returns the close of the most recent trading day on or before this date — a weekend/holiday resolves to the prior trading close. Omit to get the latest available close."New value: +"Date to price as of, YYYY-MM-DD; omit for the latest completed month-end, e.g. 2024-06-15."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT — or a CIK (SEC identifier), e.g. '0000320193'."New value: +"Ticker symbol or SEC CIK of the company, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / source
        Removed value: -{
        -  "const": "SEC EDGAR",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "pit_safe"
        +]
      • removedOutput schema / properties / plan
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "_meta",
        -  "ticker",
        -  "plan",
        -  "cik",
        -  "company_name",
        -  "requested_date",
        -  "price_date",
        -  "close",
        -  "currency",
        -  "is_exact_date_match",
        -  "resolved_backward",
        -  "div_cash",
        -  "split_factor",
        -  "granularity",
        -  "note"
        -]New value: +[
        +  "_meta",
        +  "ticker",
        +  "cik",
        +  "company_name",
        +  "requested_date",
        +  "price_date",
        +  "close",
        +  "currency",
        +  "is_exact_date_match",
        +  "resolved_backward",
        +  "div_cash",
        +  "split_factor",
        +  "granularity",
        +  "note"
        +]
    • Removedget_thesis
    • Removedget_top_holders
    • Removedget_uploaded_document
    • Changedget_valuation_metrics21 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Point-in-time date (YYYY-MM-DD). Only returns data with accepted_at on or before this date. Eliminates look-ahead bias for backtesting."New value: +"Point-in-time cutoff, YYYY-MM-DD: only figures filed with the SEC on or before this date, e.g. 2024-06-30."
      • changedInput schema / properties / fiscal_year / description
        Previous value: -"Fiscal year (YYYY). Omit to return most recent periods."New value: +"Fiscal year to return, four digits; omit for the most recent years, e.g. 2024."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of periods to return (1–40). Defaults to 5."New value: +"Maximum number of periods, 1 to 40; defaults to 5, e.g. 8."
      • changedInput schema / properties / period / description
        Previous value: -"Filing period granularity. Annual uses 10-K; quarterly uses 10-Q."New value: +"annual (10-K) or quarterly (10-Q); defaults to annual, e.g. quarterly."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT — or a CIK (SEC identifier), e.g. '0000320193'."New value: +"Ticker symbol or SEC CIK of the company, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
      • removedOutput schema / properties / data / items / properties / metrics_display / description
        Removed value: -"The figure rendered exactly as it should be quoted in prose ($402.83B, 59.65%, $6.11). QUOTE THESE VERBATIM. Do not re-render the raw number in `metrics` yourself: a figure you reformat no longer matches the string Valuein can bind to its filing, so it is reported to the reader as unverified even though the underlying fact was sound."
    • Removedget_watchlist
    • Removedlink_claim_to_thesis
    • Removedlist_agent_runs
    • Removedlist_agents
    • Removedlist_citation_overrides
    • Removedlist_claims
    • Removedlist_claims_for_thesis
    • Removedlist_figure_reviews
    • Removedlist_my_reports
    • Removedlist_pending_approvals
    • Removedlist_public_claims_by_user
    • Removedlist_public_theses_by_user
    • Removedlist_report_versions
    • Changedlist_restatements29 fields changed
      • changedInput schema / properties / amendments_only / description
        Previous value: -"Only restatements that arrived in an AMENDED filing (10-K/A, 10-Q/A) — the company formally telling the SEC it got a number wrong. The sharpest cut there is: it separates real restatements from routine re-files (a next-year 10-K carrying a revised comparative)."New value: +"true keeps only changes that arrived in an amended 10-K/A or 10-Q/A, e.g. true."
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque pagination cursor from a prior response's next_cursor."New value: +"Paging cursor copied from next_cursor in the previous result, e.g. 25."
      • addedInput schema / properties / cursor / maxLength
        Added value: +20
      • addedInput schema / properties / cursor / pattern
        Added value: +"^\\d+$"
      • changedInput schema / properties / disclosure / description
        Previous value: -"Filter by HOW the company told the market. 'non_reliance' = it filed an 8-K Item 4.02 ('Non-Reliance on Previously Issued Financial Statements') — formally telling the SEC not to rely on what it already reported. The loudest signal in US disclosure, and rare. 'amended' = corrected in a 10-K/A or 10-Q/A. 'undisclosed' = the value changed inside a ROUTINE 10-Q or 10-K: no amendment, no 4.02, the old number is simply gone. ~94% of events. Anyone can parse an 8-K, so anyone can list what companies ANNOUNCED; finding what they didn't requires every vintage back to 1993."New value: +"Disclosure types to include: non_reliance (8-K Item 4.02), amended, or undisclosed (a routine 10-K or 10-Q), e.g. [\"amended\"]."
      • changedInput schema / properties / event_id / description
        Previous value: -"Fetch exactly one event by its id (from a prior response)."New value: +"Id of one event from an earlier result, lowercase hex, e.g. 3f9a0c12."
      • changedInput schema / properties / filed_since / description
        Previous value: -"Only restatements FILED on or after this date — the 'what changed recently' window."New value: +"Earliest date of the restating filing, YYYY-MM-DD, e.g. 2024-01-01."
      • changedInput schema / properties / limit / description
        Previous value: -"Page size (1-100, default 25)."New value: +"Events per page, 1 to 100; defaults to 25, e.g. 50."
      • changedInput schema / properties / max_importance / description
        Previous value: -"Only lines at or above this importance tier: 1 = headline only (revenue, net income, EPS, total assets, operating cash flow), 2 = + primary statement lines, 3 = everything incl. footnotes. Severity says how far a number moved; importance says whether anyone cares."New value: +"1 keeps headline figures only, 2 adds primary statement lines, 3 includes footnotes, e.g. 1."
      • changedInput schema / properties / min_abs_delta_pct / description
        Previous value: -"Only events whose absolute restatement is at least this percent (e.g. 5 = ≥5% swings)."New value: +"Smallest absolute change to include, in percent from 0 to 100, e.g. 5."
      • changedInput schema / properties / sector / description
        Previous value: -"Restrict to one GICS-style sector (e.g. 'Technology')."New value: +"Sector name to limit results to, matched in full but case-insensitive, e.g. Technology."
      • changedInput schema / properties / severity / description
        Previous value: -"high = |Δ|≥10%, medium = ≥2%, low = ≥0.5%."New value: +"high (change of 10% or more), medium (2% or more) or low (0.5% or more), e.g. high."
      • changedInput schema / properties / sort / description
        Previous value: -"'recent' = newest restating filing first (a market-wide radar). 'significance' = importance tier, then swing size (one company's history)."New value: +"recent (default, newest restating filing first) or significance (importance, then size of change), e.g. significance."
      • changedInput schema / properties / ticker / description
        Previous value: -"Restrict to one company — ticker (e.g. 'AAPL') or CIK (e.g. '0000320193')."New value: +"Ticker symbol or SEC CIK to limit results to one company, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
    • Removedlist_rules
    • Removedlist_scheduled_tasks
    • Removedlist_signal_inbox
    • Removedlist_signals
    • Removedlist_sops
    • Removedlist_theses
    • Removedlist_uploaded_documents
    • Removedlist_watchlists
    • Removedmark_inbox_read
    • Changedproject_three_statement28 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Point-in-time cutoff (YYYY-MM-DD) for the seed period. Omit to use the latest knowable annual period."New value: +"Point-in-time cutoff for the reported inputs, YYYY-MM-DD: only filings accepted by this date, e.g. 2024-06-30."
      • changedInput schema / properties / capex_pct_of_revenue_override / description
        Previous value: -"Override the seed period's capex-as-%-of-revenue ratio. Leave unset to use the historical ratio."New value: +"Capital spending as a share of revenue; omit to keep the latest year's, e.g. 0.03."
      • changedInput schema / properties / cash_sweep_pct / description
        Previous value: -"Fraction (0-1) of each year's free cash flow swept to debt paydown. Default 0 (going-concern; use ~1.0 for an LBO-style paydown)."New value: +"Share of each year's free cash flow used to repay debt, 0 to 1; defaults to 0, e.g. 0.5."
      • changedInput schema / properties / dividend_payout_pct / description
        Previous value: -"Fraction (0-1) of net income paid out as dividends each year. Default 0."New value: +"Share of each year's net income distributed as dividends, 0 to 1; defaults to 0, e.g. 0.3."
      • changedInput schema / properties / gross_margin_pct_override / description
        Previous value: -"Override the seed period's gross margin (held flat across all years). Leave unset to use the historical ratio."New value: +"Gross margin for every projected year; omit to keep the latest year's, e.g. 0.45."
      • changedInput schema / properties / interest_rate_on_debt / description
        Previous value: -"Annual interest rate on beginning-of-period debt. Assumption — default 0.06."New value: +"Interest rate on debt at the start of each year, 0 to 0.5; defaults to 0.06, e.g. 0.05."
      • changedInput schema / properties / new_debt_draw_year1 / description
        Previous value: -"New debt drawn at year 1 only (absolute USD) — e.g. acquisition financing. Default 0."New value: +"New debt borrowed in the first projected year, in USD; defaults to 0, e.g. 5000000000."
      • changedInput schema / properties / new_equity_draw_year1 / description
        Previous value: -"New equity contributed at year 1 only (absolute USD) — hits cash + equity symmetrically. Default 0."New value: +"New equity raised in the first projected year, in USD, added to cash and equity; defaults to 0, e.g. 2000000000."
      • changedInput schema / properties / operating_margin_pct_override / description
        Previous value: -"Override the seed period's operating margin. Leave unset to use the historical ratio."New value: +"Operating margin for every projected year; omit to keep the latest year's, e.g. 0.3."
      • changedInput schema / properties / revenue_growth_rate / description
        Previous value: -"Flat annual revenue growth rate applied every year (e.g. 0.08 = 8%/yr)."New value: +"Yearly revenue growth as a decimal, -0.5 to 1, e.g. 0.08."
      • changedInput schema / properties / tax_rate / description
        Previous value: -"Effective tax rate on positive pretax income. Default 0.21 (US statutory)."New value: +"Tax rate on positive pretax income, 0 to 1; defaults to 0.21, e.g. 0.25."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT, BRK.B."New value: +"Ticker symbol or SEC CIK of the company to project, e.g. AAPL."
      • changedInput schema / properties / years / description
        Previous value: -"Projection horizon in years (1-15). Defaults to 5."New value: +"Years to project, 1 to 15; defaults to 5, e.g. 10."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
    • Removedpublish_claim
    • Removedpublish_report
    • Removedpublish_thesis
    • Removedreject_staged_action
    • Removedrender_report
    • Removedrestore_deleted
    • Removedrun_agent
    • Removedrun_backtest
    • Removedrun_workflow
    • Removedsave_agent
    • Removedsave_citation_override
    • Removedsave_claim
    • Removedsave_figure_review
    • Removedsave_freeform_report
    • Removedsave_thesis
    • Removedsave_watchlist
    • Removedschedule_task
    • Removedscore_claim
    • Removedscore_due_claims
    • Removedscore_due_theses
    • Removedscore_thesis_outcome
    • Changedscreen_universe27 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Point-in-time cutoff (YYYY-MM-DD). When set, the screen is reconstructed as of this date via factor_scores.accepted_at — each entity ranked at its latest-knowable period, zero look-ahead, survivorship-free. Omit for the latest snapshot."New value: +"Point-in-time cutoff, YYYY-MM-DD: each company ranked on what it had filed by this date, e.g. 2024-06-30."
      • changedInput schema / properties / exclude_outliers / description
        Previous value: -"Optional data-quality guard (default false). When true, additionally drops rows with implausible raw factor values (non-finite, or e.g. asset_turnover > 50x, |FCF/assets| > 10) from shell companies with near-zero denominators. Rows that do not join to a company (null symbol) are ALWAYS omitted in full-universe mode, regardless of this flag."New value: +"true also drops rows with implausible factor values, such as near-zero denominators; defaults to false, e.g. true."
      • changedInput schema / properties / limit / description
        Previous value: -"Number of results to return (1-100). Defaults to 25."New value: +"Number of companies to return, 1 to 100; defaults to 25, e.g. 10."
      • changedInput schema / properties / offset / description
        Previous value: -"Zero-based row offset for paging within the requested `limit` window. At most 250 rows are inlined per call; if the response carries a `truncation` envelope, pass its `next_offset` here. Defaults to 0."New value: +"Rows to skip from the top of the limit results; defaults to 0, e.g. 10."
      • changedInput schema / properties / sector / description
        Previous value: -"Filter to a specific sector (case-insensitive partial match). E.g. 'Technology', 'Healthcare'."New value: +"Sector name to match, case-insensitive partial match, e.g. Technology."
      • addedInput schema / properties / sector / maxLength
        Added value: +64
      • addedInput schema / properties / sector / minLength
        Added value: +1
      • changedInput schema / properties / sort_by / description
        Previous value: -"Which factor rank to sort by (see the enum). Defaults to composite_rank. An unrecognized column is rejected with INVALID_ARGUMENT (no silent fallback)."New value: +"Rank to sort by, such as composite_rank (the default), roe_rank or piotroski_f_score_rank, e.g. roe_rank."
      • changedInput schema / properties / ticker / description
        Previous value: -"If provided, show only this ticker's factor scores (single-entity mode). Omit to screen the full universe."New value: +"Ticker symbol or SEC CIK to show one company's scores; omit to rank all companies, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
      • changedOutput schema / properties / lineage / description
        Previous value: -"Provenance for pipeline-derived values (ratio.parquet / factor_scores.parquet): source table + pipeline computed_at, plus a pointer to the tools that return filing-level lineage. NOT point-in-time (recomputed on each pipeline run)."New value: +"Provenance for pipeline-derived values (the ratio table / the factor_scores table): source table + pipeline computed_at, plus a pointer to the tools that return filing-level lineage. NOT point-in-time (recomputed on each pipeline run)."
      • removedOutput schema / properties / plan
        Removed value: -{
        -  "description": "Caller's data plan used to scope the screen",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "_meta",
        -  "plan",
        -  "sort_by",
        -  "results_returned",
        -  "data"
        -]New value: +[
        +  "_meta",
        +  "sort_by",
        +  "results_returned",
        +  "data"
        +]
    • Changedsearch_companies24 fields changed
      • changedInput schema / properties / cik / description
        Previous value: -"SEC CIK identifier (exact match). E.g. '0000320193' for Apple."New value: +"SEC CIK to match exactly, digits only, leading zeros optional, e.g. 0000320193."
      • changedInput schema / properties / include_inactive / description
        Previous value: -"Whether delisted / superseded listings may appear in results. Defaults to true — this is a survivorship-free product, so a search must not silently hide dead companies by default. Set to false to restrict to currently-active listings only (equivalent to `is_active: true`, but as a search-scope toggle rather than a hard filter). If `is_active` is also supplied, `is_active` wins."New value: +"Whether delisted or superseded listings may appear; defaults to true and is ignored when is_active is set, e.g. false."
      • changedInput schema / properties / is_active / description
        Previous value: -"Filter on whether the LISTING is current. true = currently trading; false = superseded listings only (delisted, or a ticker that moved to a new registrant). Omit to return both."New value: +"true for current listings only, false for delisted or superseded listings only; omit for both, e.g. true."
      • changedInput schema / properties / is_sp500 / description
        Previous value: -"Filter to current S&P 500 members only."New value: +"true to return current S&P 500 members only, e.g. true."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return (1–50). Defaults to 25."New value: +"Maximum number of results, 1 to 50; defaults to 25, e.g. 10."
      • changedInput schema / properties / query / description
        Previous value: -"Free-text search over company name and ticker. Case-insensitive. E.g. 'Apple', 'AAPL', 'Microsoft', 'semiconductor'."New value: +"Text matched against company names and tickers, case-insensitive; an all-digit value matches a CIK exactly, e.g. Apple."
      • changedInput schema / properties / sic_code / description
        Previous value: -"4-digit SIC industry code. E.g. '7372' for Prepackaged Software."New value: +"Four-digit SIC industry code to match exactly, e.g. 7372."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
      • changedOutput schema / properties / companies / items / properties / status / description
        Previous value: -"Entity-level flag from entity.status. Kept for back-compat and NOT a reliable liveness signal — it is wrong in both directions on real data (American Electric Power, a current S&P 500 member, reads 'INACTIVE'). Read `is_active` instead."New value: +"Entity-level flag from entity.status. Read `is_active` instead."
      • changedOutput schema / properties / companies / items / properties / valid_from / description
        Previous value: -"Date this listing became current, or null when unknown. Paired with valid_to/cik/is_active so an agent can disambiguate a RECYCLED ticker — two rows for one symbol, each covering a different window — without a second call."New value: +"Date this listing became current, or null when unknown."
    • Removedsearch_reports
    • Removedset_agent_memory
    • Removedsign_off_report
    • Removedstage_action
    • Removedsubmit_artifact_feedback
    • Removedsubmit_feedback
    • Removedtest_rule
    • Removedtest_signal
    • Removedunlink_claim_from_thesis
    • Removedunpublish_claim
    • Removedunpublish_report
    • Removedunpublish_thesis
    • Removedupdate_report
    • Removedupdate_signal
    • Changedverify_fact_lineage23 fields changed
      • changedInput schema / properties / as_of_date / description
        Previous value: -"Point-in-time cutoff (YYYY-MM-DD) used with `concept` — returns the latest fact whose 10-K/10-Q was accepted by SEC on or before this date (true PIT, no lookahead; any calendar date works). Canonical name across the suite; supersedes the legacy `period_end`."New value: +"Cutoff used with concept, YYYY-MM-DD: the latest value filed on or before this date, e.g. 2024-06-30."
      • changedInput schema / properties / concept / description
        Previous value: -"Standard concept to look up the most recently known fact for (see the enum for the full fundamentals + capital-allocation set). Use this when you don't have a fact_id. Provide either concept OR fact_id."New value: +"Standard concept whose latest reported value to trace, used when no fact_id is given, e.g. TotalRevenue."
      • changedInput schema / properties / fact_id / description
        Previous value: -"Deterministic fact identity hash: SHA-256(entity_id|accession_id|concept|period_end|unit). 64-char lowercase hex. Use this when you already have the hash from a previous query. Provide either fact_id OR concept (not both required, but at least one must be set)."New value: +"64-character lowercase hex fact_id from an earlier result; give this or concept, e.g. 8a02707ced0d5a157ed2cdb28df035e52250daf4d0699952f7fc5420e1ce3afa."
      • changedInput schema / properties / period_end / description
        Previous value: -"[DEPRECATED — pass `as_of_date` instead.] Filing-acceptance cutoff (YYYY-MM-DD) used with `concept`; despite the name it filters on filing accepted_at, not the returned fact's period_end. Kept one release for back-compat."New value: +"Older name for as_of_date, same format and meaning: a filing cutoff, not a period end, e.g. 2024-06-30."
      • changedInput schema / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT, BRK.B — or a CIK (SEC identifier), e.g. '0000320193'."New value: +"Ticker symbol or SEC CIK of the company, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
      • changedOutput schema / properties / lineage / description
        Previous value: -"Full provenance for one fact. Identity: fact_id, entity_id, ticker, company_name, concept, standard_concept, accession_id. Value: numeric_value (raw), `display` (the SAME number already rendered — \"$391.04B\" — QUOTE THIS rather than re-rounding numeric_value yourself), unit, plus derived_quarterly_value/derived_quarterly_display (a Q2/Q3 10-Q states year-to-date, so the quarter and the filing are different numbers). Filing: source_url, inline_viewer_url, document_url, filing_date, form_type, accepted_at. Duration: period_start, period_end, period_span_days, and period_type (instant | quarterly | half_year | nine_month | annual | duration) so a 3-month stub is never mistaken for the 12-month figure — a 10-K tags BOTH at the same period_end. ⚠️ There is no `value` key and no `cik` key; the fields are named exactly as emitted."New value: +"Full provenance for one fact. Identity: fact_id, entity_id, ticker, company_name, concept, standard_concept, accession_id. Filing: source_url, inline_viewer_url, document_url, filing_date, form_type, accepted_at. Duration: period_start, period_end, period_span_days, and period_type (instant | quarterly | half_year | nine_month | annual | duration) so a 3-month stub is never mistaken for the 12-month figure — a 10-K tags BOTH at the same period_end."
      • changedOutput schema / properties / lineage / properties / display / description
        Previous value: -"`numeric_value` ALREADY RENDERED — \"$391.04B\", \"$6.11\". QUOTE THIS character-for-character rather than re-rounding `numeric_value` yourself: the rendering also needs a scale, and `unit` alone cannot tell a fraction (0.5965 → \"59.65%\") from a percent (0.5965 → \"0.60%\"). Null when `numeric_value` is null."New value: +"Null when `numeric_value` is null."
      • removedOutput schema / properties / lineage / properties / standard_concept / description
        Removed value: -"Valuein's standardized concept name (TotalRevenue, NetIncome, …); null when the raw tag is unmapped."
    • Changedverify_facts20 fields changed
      • changedInput schema / properties / facts / description
        Previous value: -"The facts to verify, 1–50 of them. Group a report's whole citation list here rather than calling once per figure. Duplicate (ticker, fact_id) pairs are resolved once and returned once, in first-seen order."New value: +"1 to 50 pairs of ticker and fact_id to check, e.g. [{\"ticker\": \"AAPL\", \"fact_id\": \"8a02707ced0d5a157ed2cdb28df035e52250daf4d0699952f7fc5420e1ce3afa\"}]."
      • changedInput schema / properties / facts / items / properties / fact_id / description
        Previous value: -"Deterministic fact identity hash: SHA-256(entity_id|accession_id|concept|period_end|unit), 64-char lowercase hex, exactly as a previous tool result gave it to you. Never invent one."New value: +"64-character lowercase hex fact_id as an earlier result gave it, e.g. 8a02707ced0d5a157ed2cdb28df035e52250daf4d0699952f7fc5420e1ce3afa."
      • changedInput schema / properties / facts / items / properties / ticker / description
        Previous value: -"Stock ticker symbol, e.g. AAPL, MSFT, BRK.B — or a CIK (SEC identifier), e.g. '0000320193'. The company the fact belongs to; a fact_id is only resolvable against its own filer."New value: +"Ticker symbol or SEC CIK of the company that reported the fact, e.g. AAPL."
      • removedOutput schema / properties / _meta / properties / cost_usd
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
        -  "properties": {
        -    "amount_usd": {
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "basis": {
        -      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
        -      "enum": [
        -        "payg_charge",
        -        "payg_rate_card"
        -      ],
        -      "type": "string"
        -    },
        -    "billed": {
        -      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "amount_usd",
        -    "billed",
        -    "basis"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / data_plan
        Removed value: -{
        -  "description": "Access plan: sample | sp500 | pro | full",
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
        Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."New value: +"Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
      • removedOutput schema / properties / _meta / properties / last_updated
        Removed value: -{
        -  "description": "ISO timestamp when the snapshot was exported",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / latency_ms
        Removed value: -{
        -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedOutput schema / properties / _meta / properties / limit_warnings
        Removed value: -{
        -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "code": {
        -        "const": "LIMIT_EXCEEDED",
        -        "type": "string"
        -      },
        -      "current_plan": {
        -        "type": "string"
        -      },
        -      "extensions": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "limit_type": {
        -        "type": "string"
        -      },
        -      "limit_value": {},
        -      "remediation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "contact_sales": {
        -            "type": "string"
        -          },
        -          "default_action": {
        -            "type": "string"
        -          },
        -          "options": {
        -            "items": {
        -              "additionalProperties": {},
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pricing_page": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "options",
        -          "default_action",
        -          "pricing_page",
        -          "contact_sales"
        -        ],
        -        "type": "object"
        -      },
        -      "requested_value": {},
        -      "returned_value": {},
        -      "subcode": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "subcode",
        -      "limit_type",
        -      "current_plan",
        -      "remediation"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / _meta / properties / payg_override
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
        -  "properties": {
        -    "amount_cents": {
        -      "type": "number"
        -    },
        -    "entity_scope_hash": {
        -      "type": "string"
        -    },
        -    "meter": {
        -      "type": "string"
        -    },
        -    "quote_id": {
        -      "type": "string"
        -    },
        -    "retry_token_hash": {
        -      "type": "string"
        -    },
        -    "ticker_count": {
        -      "type": "number"
        -    },
        -    "tool": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "quote_id",
        -    "tool",
        -    "meter",
        -    "amount_cents",
        -    "ticker_count",
        -    "entity_scope_hash",
        -    "retry_token_hash"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / rate_limit
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Caller's remaining budget",
        -  "properties": {
        -    "limit": {
        -      "type": "integer"
        -    },
        -    "remaining": {
        -      "type": "integer"
        -    },
        -    "reset_at": {
        -      "description": "ISO 8601 timestamp when the window resets",
        -      "type": "string"
        -    },
        -    "window": {
        -      "enum": [
        -        "minute",
        -        "hour"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "limit",
        -    "remaining",
        -    "reset_at",
        -    "window"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / _meta / properties / request_id
        Removed value: -{
        -  "description": "Per-request correlation id (8-char)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / schema_version
        Removed value: -{
        -  "description": "Parquet schema version from manifest.json",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / snapshot
        Removed value: -{
        -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "data_plan",
        -  "schema_version",
        -  "snapshot",
        -  "last_updated",
        -  "source",
        -  "pit_safe"
        -]New value: +[
        +  "source",
        +  "pit_safe"
        +]
      • changedOutput schema / properties / results / description
        Previous value: -"One entry per UNIQUE requested pair, in first-seen order. Check `found` before reading `lineage`."New value: +"Check `found` before reading `lineage`."
      • changedOutput schema / properties / results / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "fact_id": {
        -        "description": "The fact_id this item asked about — echoed so a caller can key results without relying on order.",
        -        "type": "string"
        -      },
        -      "found": {
        -        "const": true,
        -        "description": "The fact resolved; `lineage` carries its full provenance chain.",
        -        "type": "boolean"
        -      },
        -      "lineage": {
        -        "additionalProperties": false,
        -        "description": "Full provenance for one fact. Identity: fact_id, entity_id, ticker, company_name, concept, standard_concept, accession_id. Value: numeric_value (raw), `display` (the SAME number already rendered — \"$391.04B\" — QUOTE THIS rather than re-rounding numeric_value yourself), unit, plus derived_quarterly_value/derived_quarterly_display (a Q2/Q3 10-Q states year-to-date, so the quarter and the filing are different numbers). Filing: source_url, inline_viewer_url, document_url, filing_date, form_type, accepted_at. Duration: period_start, period_end, period_span_days, and period_type (instant | quarterly | half_year | nine_month | annual | duration) so a 3-month stub is never mistaken for the 12-month figure — a 10-K tags BOTH at the same period_end. ⚠️ There is no `value` key and no `cik` key; the fields are named exactly as emitted.",
        -        "properties": {
        -          "accepted_at": {
        -            "description": "SEC acceptance timestamp (ISO 8601) — the moment this number became public. The PIT cut is taken on this.",
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "accession_id": {
        -            "description": "SEC accession number of the filing that reported this value, e.g. 0000320193-24-000123.",
        -            "type": "string"
        -          },
        -          "company_name": {
        -            "description": "Registrant name as filed.",
        -            "type": "string"
        -          },
        -          "concept": {
        -            "description": "Raw XBRL tag as the filer used it, e.g. us-gaap:Revenues.",
        -            "type": "string"
        -          },
        -          "derived_quarterly_display": {
        -            "description": "`derived_quarterly_value` rendered the same way. Null when that value is null.",
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "derived_quarterly_value": {
        -            "description": "The three-month figure derived from a year-to-date filing. A Q2/Q3 10-Q states YTD, so THIS and `numeric_value` are different numbers for the same fact — a verifier comparing against whichever one it happened to read passes wrong numbers half the time. Null when no derivation applies.",
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "display": {
        -            "description": "`numeric_value` ALREADY RENDERED — \"$391.04B\", \"$6.11\". QUOTE THIS character-for-character rather than re-rounding `numeric_value` yourself: the rendering also needs a scale, and `unit` alone cannot tell a fraction (0.5965 → \"59.65%\") from a percent (0.5965 → \"0.60%\"). Null when `numeric_value` is null.",
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "document_url": {
        -            "description": "Direct link to the rendered primary document (not the index page). Null when the primary document is unknown.",
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "entity_id": {
        -            "description": "Zero-padded 10-digit SEC CIK of the filer. (The key is named entity_id — there is no `cik` field.)",
        -            "type": "string"
        -          },
        -          "fact_id": {
        -            "description": "Deterministic fact identity: SHA-256(entity_id|accession_id|concept|period_end|unit), 64-char lowercase hex.",
        -            "type": "string"
        -          },
        -          "filing_date": {
        -            "description": "Filing date (YYYY-MM-DD). Null when the filing join found nothing.",
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "form_type": {
        -            "description": "Filing form type — 10-K, 10-Q, 8-K, 20-F. Null when the filing join found nothing.",
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "inline_viewer_url": {
        -            "description": "SEC Inline-XBRL viewer opened on the rendered primary document — the strongest one-click verification link. Null when the filing is not Inline-XBRL or the primary document is unknown.",
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "numeric_value": {
        -            "description": "The raw reported value. Null when the fact carries no numeric value.",
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "period_end": {
        -            "description": "End of the reporting window (YYYY-MM-DD), or the instant date for balance-sheet facts.",
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "period_span_days": {
        -            "description": "Length of the reporting window in days. Null when not derivable.",
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "period_start": {
        -            "description": "Start of the reporting window (YYYY-MM-DD). Null for instant (balance-sheet) facts.",
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "period_type": {
        -            "description": "Coarse duration class: instant | quarterly | half_year | nine_month | annual | duration. A single 10-K tags BOTH a 12-month figure and a 3-month Q4 stub at the same period_end, so this is what stops a stub being quoted as the annual number.",
        -            "type": "string"
        -          },
        -          "source_url": {
        -            "description": "SEC filing-index URL. Null when the filing join found nothing.",
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "standard_concept": {
        -            "description": "Valuein's standardized concept name (TotalRevenue, NetIncome, …); null when the raw tag is unmapped.",
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "ticker": {
        -            "description": "Uppercase ticker the lookup resolved through.",
        -            "type": "string"
        -          },
        -          "unit": {
        -            "description": "Unit of the value, e.g. USD, USD/share, shares.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "fact_id",
        -          "entity_id",
        -          "ticker",
        -          "company_name",
        -          "accession_id",
        -          "concept",
        -          "standard_concept",
        -          "unit",
        -          "numeric_value",
        -          "derived_quarterly_value",
        -          "display",
        -          "derived_quarterly_display",
        -          "accepted_at",
        -          "source_url",
        -          "inline_viewer_url",
        -          "document_url",
        -          "filing_date",
        -          "form_type",
        -          "period_start",
        -          "period_end",
        -          "period_span_days",
        -          "period_type"
        -        ],
        -        "type": "object"
        -      },
        -      "ticker": {
        -        "description": "The uppercased ticker (or CIK) this item asked about.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "ticker",
        -      "fact_id",
        -      "found",
        -      "lineage"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "error": {
        -        "additionalProperties": false,
        -        "description": "Why this item could not be resolved. Never fabricate a lineage for an item that carries this.",
        -        "properties": {
        -          "code": {
        -            "description": "Machine-readable reason: TICKER_NOT_FOUND (the company is outside the bucket your plan reads), DATA_NOT_AVAILABLE_FOR_PERIOD (the period is outside your history window), DATA_NOT_FOUND / FACT_NOT_FOUND (no fact carries that fact_id for that company), or any other code the lookup raised — the original code is preserved, never flattened.",
        -            "type": "string"
        -          },
        -          "message": {
        -            "description": "Human-readable detail for this item.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "fact_id": {
        -        "description": "The fact_id this item asked about.",
        -        "type": "string"
        -      },
        -      "found": {
        -        "const": false,
        -        "description": "This one fact could not be resolved. The other items in the call are unaffected — read them.",
        -        "type": "boolean"
        -      },
        -      "ticker": {
        -        "description": "The uppercased ticker (or CIK) this item asked about.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "ticker",
        -      "fact_id",
        -      "found",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "fact_id": {
        +        "description": "The fact_id this item asked about — echoed so a caller can key results without relying on order.",
        +        "type": "string"
        +      },
        +      "found": {
        +        "const": true,
        +        "description": "The fact resolved; `lineage` carries its full provenance chain.",
        +        "type": "boolean"
        +      },
        +      "lineage": {
        +        "additionalProperties": false,
        +        "description": "Full provenance for one fact. Identity: fact_id, entity_id, ticker, company_name, concept, standard_concept, accession_id. Filing: source_url, inline_viewer_url, document_url, filing_date, form_type, accepted_at. Duration: period_start, period_end, period_span_days, and period_type (instant | quarterly | half_year | nine_month | annual | duration) so a 3-month stub is never mistaken for the 12-month figure — a 10-K tags BOTH at the same period_end.",
        +        "properties": {
        +          "accepted_at": {
        +            "description": "SEC acceptance timestamp (ISO 8601) — the moment this number became public. The PIT cut is taken on this.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "accession_id": {
        +            "description": "SEC accession number of the filing that reported this value, e.g. 0000320193-24-000123.",
        +            "type": "string"
        +          },
        +          "company_name": {
        +            "description": "Registrant name as filed.",
        +            "type": "string"
        +          },
        +          "concept": {
        +            "description": "Raw XBRL tag as the filer used it, e.g. us-gaap:Revenues.",
        +            "type": "string"
        +          },
        +          "derived_quarterly_display": {
        +            "description": "`derived_quarterly_value` rendered the same way. Null when that value is null.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "derived_quarterly_value": {
        +            "description": "The three-month figure derived from a year-to-date filing. A Q2/Q3 10-Q states YTD, so THIS and `numeric_value` are different numbers for the same fact — a verifier comparing against whichever one it happened to read passes wrong numbers half the time. Null when no derivation applies.",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "display": {
        +            "description": "Null when `numeric_value` is null.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "document_url": {
        +            "description": "Direct link to the rendered primary document (not the index page). Null when the primary document is unknown.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "entity_id": {
        +            "description": "Zero-padded 10-digit SEC CIK of the filer. (The key is named entity_id — there is no `cik` field.)",
        +            "type": "string"
        +          },
        +          "fact_id": {
        +            "description": "Deterministic fact identity: SHA-256(entity_id|accession_id|concept|period_end|unit), 64-char lowercase hex.",
        +            "type": "string"
        +          },
        +          "filing_date": {
        +            "description": "Filing date (YYYY-MM-DD). Null when the filing join found nothing.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "form_type": {
        +            "description": "Filing form type — 10-K, 10-Q, 8-K, 20-F. Null when the filing join found nothing.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "inline_viewer_url": {
        +            "description": "SEC Inline-XBRL viewer opened on the rendered primary document — the strongest one-click verification link. Null when the filing is not Inline-XBRL or the primary document is unknown.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "numeric_value": {
        +            "description": "The raw reported value. Null when the fact carries no numeric value.",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "period_end": {
        +            "description": "End of the reporting window (YYYY-MM-DD), or the instant date for balance-sheet facts.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "period_span_days": {
        +            "description": "Length of the reporting window in days. Null when not derivable.",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "period_start": {
        +            "description": "Start of the reporting window (YYYY-MM-DD). Null for instant (balance-sheet) facts.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "period_type": {
        +            "description": "Coarse duration class: instant | quarterly | half_year | nine_month | annual | duration. A single 10-K tags BOTH a 12-month figure and a 3-month Q4 stub at the same period_end, so this is what stops a stub being quoted as the annual number.",
        +            "type": "string"
        +          },
        +          "source_url": {
        +            "description": "SEC filing-index URL. Null when the filing join found nothing.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "standard_concept": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "ticker": {
        +            "description": "Uppercase ticker the lookup resolved through.",
        +            "type": "string"
        +          },
        +          "unit": {
        +            "description": "Unit of the value, e.g. USD, USD/share, shares.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "fact_id",
        +          "entity_id",
        +          "ticker",
        +          "company_name",
        +          "accession_id",
        +          "concept",
        +          "standard_concept",
        +          "unit",
        +          "numeric_value",
        +          "derived_quarterly_value",
        +          "display",
        +          "derived_quarterly_display",
        +          "accepted_at",
        +          "source_url",
        +          "inline_viewer_url",
        +          "document_url",
        +          "filing_date",
        +          "form_type",
        +          "period_start",
        +          "period_end",
        +          "period_span_days",
        +          "period_type"
        +        ],
        +        "type": "object"
        +      },
        +      "ticker": {
        +        "description": "The uppercased ticker (or CIK) this item asked about.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "ticker",
        +      "fact_id",
        +      "found",
        +      "lineage"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "error": {
        +        "additionalProperties": false,
        +        "description": "Why this item could not be resolved.",
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "message": {
        +            "description": "Human-readable detail for this item.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "fact_id": {
        +        "description": "The fact_id this item asked about.",
        +        "type": "string"
        +      },
        +      "found": {
        +        "const": false,
        +        "description": "This one fact could not be resolved. The other items in the call are unaffected — read them.",
        +        "type": "boolean"
        +      },
        +      "ticker": {
        +        "description": "The uppercased ticker (or CIK) this item asked about.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "ticker",
        +      "fact_id",
        +      "found",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Removedverify_report_figures
    • Removedwatchlist_diff

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Give your AI agent live SEC EDGAR data: company financials, insider trades, 8-K events, 13F holdings, and the raw filings stream — all normalized to clean JSON, every number traceable back to its sec.gov source filing.
    8
    148 PyPI
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI agents with clean, normalized access to financial data including company fundamentals, insider trades, SEC filings, macro series from FRED, real-time quotes, and ETF holdings.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Wall Street data feed for AI agents, providing access to 100M+ source-traced SEC records, institutional holdings, insider trades, congress trading, and more via MCP tools.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.