Skip to main content
Glama

Valuein — SEC EDGAR Fundamentals & Smart-Money Data

Project Linked Three-Statement Model

project_three_statement
Read-onlyIdempotent

Linked forward Income Statement / Balance Sheet / Cash Flow projection, seeded from the company's latest historical annual period. The balance sheet ties out (assets == liabilities + equity) EVERY projected year by algebraic construction — each year's tie_out_ok field is a live correctness check, not decoration. Interest is computed on beginning-of-period debt balances (no circular cash-sweep/revolver solve — deterministic by design). Gross margin, operating margin, and the combined D&A + working-capital adjustment are held at the seed period's ratio-of-revenue unless overridden; interest_rate_on_debt and tax_rate are ASSUMPTIONS (no historical InterestExpense concept exists in the dataset). Every simplification is listed in the response caveats[] — read them before presenting this as a precise forecast. Returns a fcf_stream usable directly as compute_dcf's fcf_source:"three_statement" input. Tier: sp500+.

Input Schema

NameRequiredDescriptionDefault
yearsNoProjection horizon in years (1-15). Defaults to 5.
tickerYesStock ticker symbol, e.g. AAPL, MSFT, BRK.B.
tax_rateNoEffective tax rate on positive pretax income. Default 0.21 (US statutory).
as_of_dateNoPoint-in-time cutoff (YYYY-MM-DD) for the seed period. Omit to use the latest knowable annual period.
cash_sweep_pctNoFraction (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).
dividend_payout_pctNoFraction (0-1) of net income paid out as dividends each year. Default 0.
new_debt_draw_year1NoNew debt drawn at year 1 only (absolute USD) — e.g. acquisition financing. Default 0.
revenue_growth_rateYesFlat annual revenue growth rate applied every year (e.g. 0.08 = 8%/yr).
interest_rate_on_debtNoAnnual interest rate on beginning-of-period debt. Assumption — default 0.06.
new_equity_draw_year1NoNew equity contributed at year 1 only (absolute USD) — hits cash + equity symmetrically. Default 0.
gross_margin_pct_overrideNoOverride the seed period's gross margin (held flat across all years). Leave unset to use the historical ratio.
capex_pct_of_revenue_overrideNoOverride the seed period's capex-as-%-of-revenue ratio. Leave unset to use the historical ratio.
operating_margin_pct_overrideNoOverride the seed period's operating margin. Leave unset to use the historical ratio.

Output Schema

NameRequiredDescriptionDefault
_metaYesProvenance envelope — data lineage for every MCP response
resultYes
tickerYes
seed_period_endYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / _meta / properties / cost_usd / properties / basis / description
      Previous value: -"payg_charge = real charge (agent-pay or your balance). payg_rate_card = indicative price, not billed."New value: +"payg_charge = real pay-per-call charge (a card or MPP payment through agent-pay). payg_rate_card = indicative price, not billed."
  2. Changed2 schema fields changed
    • changedOutput schema / properties / _meta / properties / cost_usd / properties / basis / description
      Previous value: -"payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed."New value: +"payg_charge = real charge (agent-pay or your balance). payg_rate_card = indicative price, not billed."
    • changedOutput schema / properties / _meta / properties / cost_usd / properties / billed / description
      Previous value: -"true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free."New value: +"true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value only: no charge was made for this call (it was within your plan)."
  3. Changed28 schema fields changed
    • changedInput schema / properties / as_of_date / description
      Previous value: -"Point-in-time cutoff for the reported inputs, YYYY-MM-DD: only filings accepted by this date, e.g. 2024-06-30."New value: +"Point-in-time cutoff (YYYY-MM-DD) for the seed period. Omit to use the latest knowable annual period."
    • changedInput schema / properties / capex_pct_of_revenue_override / description
      Previous value: -"Capital spending as a share of revenue; omit to keep the latest year's, e.g. 0.03."New value: +"Override the seed period's capex-as-%-of-revenue ratio. Leave unset to use the historical ratio."
    • changedInput schema / properties / cash_sweep_pct / description
      Previous value: -"Share of each year's free cash flow used to repay debt, 0 to 1; defaults to 0, e.g. 0.5."New 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)."
    • changedInput schema / properties / dividend_payout_pct / description
      Previous value: -"Share of each year's net income distributed as dividends, 0 to 1; defaults to 0, e.g. 0.3."New value: +"Fraction (0-1) of net income paid out as dividends each year. Default 0."
    • changedInput schema / properties / gross_margin_pct_override / description
      Previous value: -"Gross margin for every projected year; omit to keep the latest year's, e.g. 0.45."New value: +"Override the seed period's gross margin (held flat across all years). Leave unset to use the historical ratio."
    • changedInput schema / properties / interest_rate_on_debt / description
      Previous value: -"Interest rate on debt at the start of each year, 0 to 0.5; defaults to 0.06, e.g. 0.05."New value: +"Annual interest rate on beginning-of-period debt. Assumption — default 0.06."
    • changedInput schema / properties / new_debt_draw_year1 / description
      Previous value: -"New debt borrowed in the first projected year, in USD; defaults to 0, e.g. 5000000000."New value: +"New debt drawn at year 1 only (absolute USD) — e.g. acquisition financing. Default 0."
    • changedInput schema / properties / new_equity_draw_year1 / description
      Previous value: -"New equity raised in the first projected year, in USD, added to cash and equity; defaults to 0, e.g. 2000000000."New value: +"New equity contributed at year 1 only (absolute USD) — hits cash + equity symmetrically. Default 0."
    • changedInput schema / properties / operating_margin_pct_override / description
      Previous value: -"Operating margin for every projected year; omit to keep the latest year's, e.g. 0.3."New value: +"Override the seed period's operating margin. Leave unset to use the historical ratio."
    • changedInput schema / properties / revenue_growth_rate / description
      Previous value: -"Yearly revenue growth as a decimal, -0.5 to 1, e.g. 0.08."New value: +"Flat annual revenue growth rate applied every year (e.g. 0.08 = 8%/yr)."
    • changedInput schema / properties / tax_rate / description
      Previous value: -"Tax rate on positive pretax income, 0 to 1; defaults to 0.21, e.g. 0.25."New value: +"Effective tax rate on positive pretax income. Default 0.21 (US statutory)."
    • changedInput schema / properties / ticker / description
      Previous value: -"Ticker symbol or SEC CIK of the company to project, e.g. AAPL."New value: +"Stock ticker symbol, e.g. AAPL, MSFT, BRK.B."
    • changedInput schema / properties / years / description
      Previous value: -"Years to project, 1 to 15; defaults to 5, e.g. 10."New value: +"Projection horizon in years (1-15). Defaults to 5."
    • addedOutput schema / properties / _meta / properties / cost_usd
      Added 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"
      +}
    • addedOutput schema / properties / _meta / properties / data_plan
      Added value: +{
      +  "description": "Access plan: sample | sp500 | pro | full",
      +  "type": "string"
      +}
    • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
      Previous 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."New 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."
    • addedOutput schema / properties / _meta / properties / last_updated
      Added value: +{
      +  "description": "ISO timestamp when the snapshot was exported",
      +  "type": "string"
      +}
    • addedOutput schema / properties / _meta / properties / latency_ms
      Added value: +{
      +  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / _meta / properties / limit_warnings
      Added 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"
      +}
    • addedOutput schema / properties / _meta / properties / payg_override
      Added 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"
      +}
    • addedOutput schema / properties / _meta / properties / rate_limit
      Added 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"
      +}
    • addedOutput schema / properties / _meta / properties / request_id
      Added value: +{
      +  "description": "Per-request correlation id (8-char)",
      +  "type": "string"
      +}
    • addedOutput schema / properties / _meta / properties / schema_version
      Added value: +{
      +  "description": "Parquet schema version from manifest.json",
      +  "type": "string"
      +}
    • addedOutput schema / properties / _meta / properties / snapshot
      Added value: +{
      +  "description": "Snapshot directory name (e.g. snapshot_20260420)",
      +  "type": "string"
      +}
    • addedOutput schema / properties / _meta / properties / truncation / properties / current_plan
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / _meta / required
      Previous value: -[
      -  "source",
      -  "pit_safe"
      -]New value: +[
      +  "data_plan",
      +  "schema_version",
      +  "snapshot",
      +  "last_updated",
      +  "source",
      +  "pit_safe"
      +]
  4. Changed28 schema 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"
      +]
  5. Changed1 schema field changed
    • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
      Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt. Use THIS — not `last_updated` — when telling a user how current the 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."New 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."
  6. Changed2 schema fields changed
    • addedOutput schema / properties / _meta / properties / fundamentals_as_of
      Added value: +{
      +  "description": "ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt. Use THIS — not `last_updated` — when telling a user how current the 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.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / _meta / properties / price_as_of
      Added value: +{
      +  "description": "ISO timestamp when the price surfaces were last refreshed.",
      +  "type": "string"
      +}
  7. Added

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past the readOnly/idempotent annotations: it discloses the tie-out guarantee via algebraic construction, the deliberate absence of a circular revolver solve, that margins and D&A/working-capital are held at seed ratios unless overridden, and that interest_rate_on_debt and tax_rate are assumptions because no historical InterestExpense concept exists. It also points at a caveats[] array in the response — exactly the kind of modeling caveat an agent must surface.

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?

Dense but front-loaded: what it is, then correctness guarantee, then methodology limits, then integration. The all-caps emphasis (EVERY, ASSUMPTIONS) is slightly heavy-handed and a sentence or two could be tighter, but essentially every sentence carries information an agent needs.

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 enumerated; the description instead covers what matters for correct use — deterministic design, held-flat assumptions, and the caveats pointer. Nothing an agent needs to invoke and interpret this tool correctly is missing.

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 schema already documents all 13 parameters. The description still adds a cross-parameter policy the schema cannot express: the ratio-of-revenue defaults propagate from the seed period unless an override is supplied, and the interest/tax defaults are flagged as assumptions rather than derived values.

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 action and artifact: a linked three-statement forward projection seeded from the latest historical annual period. It is immediately distinguishable from compute_dcf and compute_lbo, and it explicitly names its downstream consumer (compute_dcf's fcf_source:"three_statement").

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?

Explains the integration path to compute_dcf and warns to read caveats before presenting output as a precise forecast, which implies the appropriate level of trust. It does not explicitly contrast with compute_lbo or state when a simpler DCF would suffice, 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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.