Valuein — SEC EDGAR Fundamentals & Smart-Money Data
REMOTE · MCP.VALUEIN.BIZ · SCANNED AUG 3
Point-in-time, survivorship-free SEC EDGAR fundamentals + smart-money signals for AI agents.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security66
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_thesis). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 35169 tokens (~253/item across 139 items; 113 tools + 26 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 98% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · mcp.valuein.biz
claude mcp add --transport http valuein-mcp-sec-edgar https://mcp.valuein.biz/mcp
[mcp_servers.valuein-mcp-sec-edgar] url = "https://mcp.valuein.biz/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"valuein-mcp-sec-edgar": {
"type": "remote",
"url": "https://mcp.valuein.biz/mcp",
"enabled": true
}
}
} openclaw mcp add valuein-mcp-sec-edgar --url https://mcp.valuein.biz/mcp --transport streamable-http
mcp_servers:
valuein-mcp-sec-edgar:
url: "https://mcp.valuein.biz/mcp" {
"mcpServers": {
"valuein-mcp-sec-edgar": {
"type": "http",
"url": "https://mcp.valuein.biz/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- New tool “sign_off_report”, which the server declares destructive security
- Tool “update_report” rewrote its description, which is the text the model reads security
- Tool “save_freeform_report” rewrote its description, which is the text the model reads security
- Schema quality: good → excellent functional
- New prompt “review_and_signoff” functional
- Server version: 2.68.0 → 2.78.0 functional
- New tool “save_figure_review” functional
- New tool “list_figure_reviews” functional
- New tool “get_research_file” functional
- “update_report” added an optional parameter “remove_section_ids” cosmetic
- “update_report” added an optional parameter “citations” cosmetic
- “save_freeform_report” added an optional parameter “citations” cosmetic
- “update_report” reworded the description of “sections” cosmetic
- “get_company_fundamentals” reworded the description of “response_format” cosmetic
- 1 Aug 26 +1
- Tool “score_due_claims” rewrote its description, which is the text the model reads security
- Tool “score_due_theses” rewrote its description, which is the text the model reads security
- Server version: 2.67.0 → 2.68.0 functional
- “score_due_claims” reworded the description of “customer_id” cosmetic
- “score_due_theses” reworded the description of “customer_id” cosmetic
- 31 Jul 26 0
- Tool “get_price_history” rewrote its description, which is the text the model reads security
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- Server version: 2.65.0 → 2.66.0 functional
- 30 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +1
- Tool “save_citation_override” rewrote its description, which is the text the model reads security
- Tool “save_thesis” rewrote its description, which is the text the model reads security
- New resource “investment_adviser_private_fund schema” functional
- New resource “investment_adviser schema” functional
- Server version: 2.64.1 → 2.65.0 functional
- Server version: 2.64.0 → 2.64.1 functional
- 28 Jul 26 +2
- Tool “restore_deleted” rewrote its description, which is the text the model reads security
- Schema quality: good → excellent functional
- Server version: 2.63.0 → 2.64.0 functional
- Server version: 2.62.0 → 2.63.0 functional
- New tool “restore_deleted” functional
- “restore_deleted” reworded the description of “kind” cosmetic
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 64
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://mcp.valuein.biz/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=valuein.biz | CN=WE1,O=Google Trust Services,C=US | 31 Jul 2026 | 29 Oct 2026 | ECDSA 256 | ECDSA-SHA256 | 76dc5aa63b68f26c0ec7944f45f23884 |
| SANs: valuein.biz, mcp.valuein.biz, *.mcp.valuein.biz | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
DNSSEC secure
Validation of mcp.valuein.biz. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| biz. | present | 11044 | 8 | Verified |
| valuein.biz. | present | 2371 | 13 | Verified |
| mcp.valuein.biz. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=15552000; includeSubDomains; preload |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | no-referrer |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.valuein.biz/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.valuein.biz/mcp | HTTPS enforced | 301 | https://mcp.valuein.biz/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
approve_staged_action Approve Staged Action ~244
Approve a staged action by id and RUN the underlying tool call it proposed, using the caller's own current credentials — never the original proposer's. Idempotent and race-safe: an action already decided (approved by a concurrent call, rejected, executed, or failed) is NEVER re-executed — this returns the action's current state with `executed_now: false` instead. On a fresh approval, `executed_now` is true and `tool_result` carries the underlying tool's own structured result, exactly what a direct call to that tool would have returned. If the underlying tool itself fails, the staged action transitions to 'failed' with a `reason` — this call still succeeds (the approval + execution ATTEMPT is what it promises; a failed underlying write is a normal, inspectable outcome, not a tool error). An id belonging to a different customer's token is indistinguishable from an unknown id (returns NOT_FOUND) — ownership is never leaked. Tier: sp500+ (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| staged_action_id | string | yes | Id of the staged action to approve, from stage_action or list_pending_approvals. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| executed_now | boolean | yes | True only if THIS call is the one that ran the underlying tool (won the approval race). |
| staged_action | object | yes | — |
| tool_result | — | yes | The underlying tool's structuredContent, when available (executed now, or previously executed). |
No examples provided.
cancel_scheduled_task Cancel Scheduled Task ~90
Cancel a pending scheduled task by id (from schedule_task or list_scheduled_tasks). Only a `pending` task can be cancelled — one that already woke (completed) cannot be un-woken. Idempotent: cancelling an already-cancelled task is a no-op. Tier: sp500+ (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| task_id | string | yes | Identifier of the scheduled task to cancel. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| cancelled | boolean | yes | True if THIS call moved the task to cancelled; false if it was already completed/cancelled or not found. |
| task_id | string | yes | — |
No examples provided.
compare_periods Compare Financial Periods ~328
Compare a company's core financial metrics across two fiscal periods side-by-side. Shows absolute and percentage changes with significance classification (minor < 5%, notable 5–15%, significant > 15%). The response includes a `material_changes` count: this is the number of metrics whose `significance` ∈ {notable, significant} (i.e. absolute percentage change > 5%). Use it as a quick scalar to triage filings — anything > ~3 typically signals a material event worth deeper review. Use period format: 'FY2024' for annual, 'Q1-2024' for quarterly. Pass `period_a` as the EARLIER period and `period_b` as the LATER one — if you invert them the server auto-swaps and sets `swapped: true` in the response so deltas always carry the correct sign (rather than silently flipping). Point-in-time safe via as_of_date. Available on all plans.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of_date | string | — | Point-in-time date (YYYY-MM-DD). Only returns facts with accepted_at on or before this date — eliminates look-ahead bias for backtesting. |
| period_a | string | yes | Earlier fiscal period. Format: 'FY2023' for annual or 'Q1-2023' for quarterly. |
| period_b | string | yes | Later fiscal period. Format: 'FY2024' for annual or 'Q1-2024' for quarterly. |
| ticker | string | yes | Stock ticker symbol, e.g. AAPL, MSFT, BRK.B |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| as_of_date | string|null | — | — |
| changes | array | yes | Per-metric deltas: metric, label, period_a, period_b, delta, delta_pct, significance |
| company_name | string | — | — |
| material_changes | integer | yes | Count of metrics flagged as a material change |
| period_a | object | yes | Earlier period descriptor: label, fiscal_year, fiscal_period, period_end, filing_date |
| period_b | object | yes | Later period descriptor, same shape as period_a |
| swapped | boolean | yes | True when inputs were reordered so period_b is the more recent period |
| ticker | string | yes | — |
| total_metrics | integer | yes | Count of metrics compared across the two periods |
No examples provided.
compute_accretion_dilution Compute M&A Accretion/Dilution ~544
M&A accretion/dilution: the standard sell-side/banker quick-screen for whether a proposed acquisition adds to (accretive) or subtracts from (dilutive) the acquirer's EPS in the first pro-forma year. Pulls net income + shares outstanding for both companies, and each side's latest EOD close (acquirer's price converts stock consideration into new shares issued; target's price is used only to disclose the offer premium). Caller sets the consideration mix (cash_pct, cash-financed by new debt or the acquirer's balance sheet), annual run-rate synergies, and the new-debt interest rate. A SINGLE pro-forma-year bridge — NOT a multi-year merger model; synergy ramp, integration costs, and purchase-price-allocation amortization (goodwill/intangibles step-up) are not modeled (see `result.caveats[]`). `result.accretion_dilution_pct` positive = accretive, negative = dilutive. Tier: sp500+.
| Name | Type | Req | Description |
|---|---|---|---|
| acquirer_share_price_override | number | — | Override the acquirer's live EOD close. Leave unset to use the latest R2-derived price. |
| acquirer_ticker | string | yes | Acquirer's stock ticker symbol, e.g. MSFT. |
| as_of_date | string | — | Point-in-time cutoff (YYYY-MM-DD) for both companies' fundamentals + prices. Omit to use the latest knowable data. |
| cash_financing_source | string | — | Where the cash consideration is funded from. "new_debt" (default) applies an after-tax interest drag; "balance_sheet_cash" applies none. |
| cash_pct | number | yes | Fraction (0-1) of deal value paid in cash; the remainder (1 - cash_pct) is paid in acquirer stock. |
| new_debt_interest_rate | number | — | Annual interest rate on new acquisition debt (only used when cash_financing_source is "new_debt"). Default 0.06. |
| offer_price_per_share | number | yes | Offer price per target share (USD). |
| synergies_pretax | number | — | Pretax annual run-rate cost/revenue synergies (USD). Default 0. |
| target_share_price_override | number | — | Override the target's live EOD close (used only for the disclosed premium). Leave unset to use the latest R2-derived price. |
| target_ticker | string | yes | Target's stock ticker symbol, e.g. ATVI. |
| tax_rate | number | — | Effective tax rate applied to synergies and the interest drag. Default 0.21. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| acquirer_ticker | string | yes | — |
| result | object | yes | — |
| target_ticker | string | yes | — |
No examples provided.
compute_dcf Compute Forward DCF ~783
Forward discounted-cash-flow valuation (two-stage Gordon-growth model): caller provides growth + WACC + terminal assumptions, returns per-share intrinsic value (`value_per_share_cents`, cents USD) + 5×5 sensitivity grid. Pulls FCF base + net debt + shares from R2; caller can override any field. Definitions (consistent with `get_financial_ratios` / `get_capital_allocation_profile`): FCF base = operating_cash_flow − capex (absolute USD); net_debt = total_debt − (cash + short-term investments). Shares resolve via a fallback chain (valuation row → fact CommonSharesOutstanding → net_income/eps_diluted), reported as `result.shares_source`. The pulled inputs are echoed in `result.inputs_echo` with their source lineage so the valuation is reproducible and traceable. A null `value_per_share_cents` means the model is degenerate (e.g. WACC ≤ terminal growth, or FCF base ≤ 0) or a required input was unavailable — it is NOT a zero valuation; the `reason` field explains. Use the returned figures exactly. Use this when you want to drive the assumptions yourself; for the pipeline's pre-computed DCF/DDM value and inputs (no assumptions needed) use `get_valuation_metrics` instead. Does NOT persist a report — use `create_report` (report_type:'reverse_dcf') for that. `fcf_source` (default "trend"): "trend" compounds a single FCF base by `stage1_growth_rate` every year (the original behavior, unchanged). "three_statement" instead runs a full linked Income Statement / Balance Sheet / Cash Flow projection (`project_three_statement`'s engine) and feeds its year-by-year FCF stream into the same PV math — `stage1_growth_rate` is then ignored (kept for echo only) because revenue growth + margins drive FCF instead of a flat compounding rate. The projection detail (including per-year `tie_out_ok`) is returned in `three_statement_detail` when used. Tier: sp500+.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of_date | string | — | 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 acce… |
| fcf_base_override | number | — | Override the auto-pulled FCF base (USD). Leave unset to use R2-derived. |
| fcf_source | string | — | "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 t… |
| shares_override | number | — | Override shares outstanding. Leave unset to use R2-derived. |
| stage1_growth_rate | number | yes | Stage-1 FCF growth rate (e.g. 0.12 = 12%/yr). |
| stage1_years | integer | — | Number of explicit high-growth projection years before the terminal stage (3–15). Defaults to 5. |
| terminal_growth_rate | number | — | Long-run growth. Default 0.025. |
| three_statement_assumptions | object | — | Only used when fcf_source is "three_statement". Overrides for the underlying projection; unset fields use project_three_statement's defaults. |
| ticker | string | yes | Stock ticker symbol of the company to value, e.g. AAPL, MSFT, BRK.B. |
| wacc | number | — | Discount rate. Default 0.09. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| result | object | yes | — |
| ticker | string | yes | — |
No examples provided.
compute_lbo Compute LBO Returns (IRR + MOIC) ~631
Leveraged buyout returns analysis: caller provides entry/exit multiples, leverage, and a hold period; the tool builds a Day-1 pro-forma opening balance sheet from the deal's own sources & uses (cash-free, debt-free convention — entry_debt = leverage_multiple x EBITDA, sponsor_equity = entry_enterprise_value + minimum_cash - entry_debt), then runs it through the same linked three-statement engine as `project_three_statement` (100% FCF-to-debt-paydown sweep by default). Returns MOIC and IRR (solved by bounded bisection over the sponsor's cash flow stream — interim dividends if any, plus exit equity proceeds). EBITDA is PROXIED by operating income (no separate D&A concept exists in the dataset) unless entry_ebitda_override is supplied — see `result.entry_ebitda_is_proxy`. `result.irr.converged:false` means no root was found (e.g. a total wipeout) — never a fabricated rate. Every simplification is listed in `result.caveats[]`. Tier: sp500+.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of_date | string | — | Point-in-time cutoff (YYYY-MM-DD) for the seed period. Omit to use the latest knowable annual period. |
| cash_sweep_pct | number | — | Fraction (0-1) of each year's FCF swept to debt paydown. Default 1.0 (standard LBO — 100% sweep). |
| dividend_payout_pct | number | — | Fraction (0-1) of net income distributed to the sponsor each year (dividend recap style). Default 0 — most LBOs return capital only at exit. |
| entry_ebitda_override | number | — | Override the EBITDA figure used for both entry and exit multiples. Without this, EBITDA is proxied by operating income. |
| entry_multiple | number | yes | EV/EBITDA multiple paid at entry (e.g. 10 = 10x). |
| exit_multiple | number | — | EV/EBITDA multiple assumed at exit. Defaults to entry_multiple (no multiple expansion/contraction) when omitted. |
| hold_period_years | integer | — | Hold period in years (1-10). Defaults to 5. |
| interest_rate_on_debt | number | — | Annual interest rate on beginning-of-period LBO debt. Default 0.08 (leveraged debt typically prices above IG). |
| leverage_multiple | number | yes | Debt/EBITDA raised at entry (e.g. 5 = 5x leverage). |
| minimum_cash | number | — | Minimum operating cash left on the pro-forma opening balance sheet. Default 0. |
| revenue_growth_rate | number | yes | Flat annual revenue growth rate applied every year of the hold (e.g. 0.05 = 5%/yr). |
| tax_rate | number | — | Effective tax rate on positive pretax income. Default 0.21. |
| ticker | string | yes | Stock ticker symbol of the LBO target, e.g. AAPL. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| result | object | yes | — |
| seed_period_end | string | yes | — |
| ticker | string | yes | — |
No examples provided.
create_alert Create Alert ~465
Persist an alert and register it with the firing pipeline. Five condition shapes: * `filing_event` — fire when a ticker files a chosen form type (8-K, 10-K, etc.). * `ratio_threshold` — fire when a ticker's financial ratio crosses a threshold (e.g. interest_coverage < 1.5). * `watchlist_change` — fire on any filing on any ticker in a named watchlist. * `price_move` (Pro+) — fire when a ticker's close-to-close move over 1/5/21 trading days crosses a percent threshold in a given direction. * `fundamental_change` (Pro+) — fire when a standard_concept reports a brand-new period or gets restated. Delivery channels: `email` (transactional via Resend), `webhook` (HMAC-SHA256-signed POST), `slack` (hooks.slack.com incoming webhook), `dashboard` (in-app inbox), or `agent_run` (Pro+ — runs a standing agent team and delivers the finished artifact to your inbox). The cron evaluator runs every 5 minutes. Use `test_alert` to verify your channel is wired correctly before relying on the cron.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | — | yes | Delivery channel for a match — `email` (Resend transactional email), `webhook` (HMAC-SHA256-signed POST to your URL), `slack` (POST to a hooks.slack.com incoming-webhook URL), `dashboard` (in-app inb… |
| condition | — | yes | Condition evaluated each cron tick — a discriminated union of `filing_event` (a watched ticker files a new form), `ratio_threshold` (a financial ratio crosses a comparator/threshold), `watchlist_chan… |
| name | string | yes | Human-readable label. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| alert | object | yes | — |
| cron_indexed | boolean | yes | — |
No examples provided.
create_report Create Research Report ~315
Synchronously generate a research report and persist it under the caller's authorship. Two subtypes: • `reverse_dcf` — solves the stage-1 free-cash-flow growth rate the market price implies, with a 5×5 sensitivity grid across WACC × terminal-growth assumptions. Returns full markdown + structured JSON + every numerical claim's citation chain to the originating SEC accession. • `thesis` — snapshot a saved thesis (via `save_thesis`) as a frozen narrative report with at-a-glance table, author notes, anchor fundamentals (latest annual), and lineage to the source filing. Later edits to the thesis do NOT propagate — generate a new report to capture new state. Tier: sample tier rejected — reports are per-author state.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | — | Optional key for at-most-once semantics. Same key from the same user always yields the same report id. |
| params | object | — | Reverse-DCF parameters — required for report_type=reverse_dcf. |
| report_type | string | yes | Subtype. `reverse_dcf` requires ticker + params; `thesis` requires thesis_id (from save_thesis / list_theses). |
| thesis_id | string | — | Id of a saved thesis owned by the caller — required for report_type=thesis. |
| ticker | string | — | US-listed ticker — required for report_type=reverse_dcf. Case-insensitive. |
| title | string | — | Optional human-supplied title; auto-generated when omitted. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| citations | array | yes | — |
| markdown | string | yes | — |
| report | object | yes | — |
| sections | array | yes | — |
| structured | object | yes | — |
No examples provided.
create_rule Create Rule ~397
Persist a trigger -> action rule and register it with the evaluator. 7 trigger types accepted (alert_fired, schedule_tick, inbox_item, price_threshold, filing_event, manual, scheduled_task_wake) x six action types (run_team, send_alert, create_report, score_thesis, schedule_task, post_inbox). These trigger types have a live event source and DO dispatch today: alert_fired, schedule_tick, inbox_item, filing_event and scheduled_task_wake. price_threshold and manual are accepted and persisted (forward-compatible schema) but have NO live event source wired yet, so a rule created with one of them is saved as enabled:true and simply never fires. Always read the returned rule's `trigger_wiring_status` field ("live" vs "not_yet_wired") — it is computed from the dispatcher's own registry, so it is authoritative even if this description is stale. `condition_expr` is an OPTIONAL single comparison (`"field op value"`, op one of gt/gte/lt/lte/eq, e.g. `"price_change_pct gt 5"`) evaluated against the trigger event's payload — omit to fire on the trigger alone. Deliberately NOT a general expression language (no AND/OR, no loops) — this is both an anti-complexity and an anti-loop guard; compose multiple rules if you need more than one comparison. Use `test_rule` immediately after creating to verify it fires as expected WITHOUT spending a real dispatch. Tier: sp500+ (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| action | — | yes | Discriminated union — what happens when the rule fires. |
| condition_expr | string | — | Optional single comparison against the trigger payload, e.g. "price_change_pct gt 5". Omit to fire on the trigger alone. |
| name | string | yes | Human-readable label. |
| trigger | — | yes | Discriminated union — which signal fires this rule. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| rule | object | yes | — |
| warning | string | — | — |
No examples provided.
delete_agent_memory Delete Agent Memory ~163
Forget ONE durable memory entry by key — use it when a note you stored is now wrong, superseded, or was only ever scratch. Every entry is re-read into your context at the start of every future run, so leaving a stale one behind means re-grounding yourself in something false; deleting is the correction. Idempotent: deleting a key that is not there returns deleted:false, not an error. Also how you free a slot when the 200-entry cap is reached. This removes only YOUR memory note — it never touches a thesis, claim, report, or any financial fact. Tier: sp500+ (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | yes | The memory key to forget. Discover keys with get_agent_memory (no key = list all). |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| deleted | boolean | yes | true if an entry existed and was removed; false if the key was already absent. |
| key | string | yes | — |
No examples provided.
delete_alert Delete Alert ~94
Soft-delete an alert by its id (from create_alert/list_alerts): status flips to `deleted` and it is removed from the cron evaluator index so it stops firing. Alerts are immutable — to change one, delete then create_alert. Idempotent. Tier: sp500+ (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| alert_id | string | yes | Identifier of the alert to soft-delete, as returned by create_alert or list_alerts. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| alert_id | string | yes | — |
| status | string | yes | — |
No examples provided.
delete_citation_override Delete Citation Override ~94
Remove a user-authored citation correction by fact_id. Idempotent — deleting a missing override returns deleted=false without error. Once deleted, reports that previously rendered the corrected value revert to the canonical fact value on next regeneration. Tier: paid + free (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| fact_id | string | yes | Fact identifier whose citation override should be removed, as returned by save_citation_override or list_citation_overrides. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| deleted | boolean | yes | — |
| fact_id | string | yes | — |
No examples provided.
delete_claim Delete Claim ~81
Soft-delete a claim by id. The row and its score history are preserved for audit (archived, not erased); the claim drops out of default list_claims results. Idempotent — deleting an already-archived claim succeeds. Tier: all paid + free tiers (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| claim_id | string | yes | Id of the claim to archive. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| archived | boolean | yes | — |
| claim_id | string | yes | — |
No examples provided.
delete_report Delete (Soft) Research Report ~85
Soft-delete a report owned by the caller: status flips to `delisted`, visibility to `private` — not a hard delete, the row and R2 artifact are preserved (90-day audit window). Idempotent (deleting an already-delisted report succeeds). Sample tier rejected.
| Name | Type | Req | Description |
|---|---|---|---|
| report_id | string | yes | Id from `create_report` or `list_my_reports`. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| report_id | string | yes | — |
| status | string | yes | — |
No examples provided.
delete_rule Delete Rule ~80
Delete a rule by id (from create_rule/list_rules) — removes it from both the catalog and the evaluator's scan index, so it stops firing immediately. Rules are immutable — to change one, delete then create_rule. Idempotent. Tier: sp500+ (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| rule_id | string | yes | Identifier of the rule to delete. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| rule_id | string | yes | — |
| status | string | yes | — |
No examples provided.
delete_thesis Archive Saved Thesis ~112
Soft-delete a saved thesis: status flips to `archived` (the row stays for audit / re-scoring). Idempotent — archiving an already-archived thesis succeeds. Hard-delete is not supported by design; future versions may expire archived theses after N years. This does not delete the claims linked to the thesis — use delete_claim for those. Tier: paid + free (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| thesis_id | string | yes | Id returned by `save_thesis` or `list_theses`. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| status | string | yes | — |
| thesis_id | string | yes | — |
No examples provided.
delete_uploaded_document Delete an Uploaded Document ~57
Delete an uploaded document before its 24h TTL. Deleting a missing/already-expired/foreign id returns deleted:false rather than an error.
| Name | Type | Req | Description |
|---|---|---|---|
| upload_id | string | yes | The upload_id returned by POST /v1/uploads. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| deleted | boolean | yes | — |
No examples provided.
delete_watchlist Archive Watchlist ~97
Soft-delete a watchlist by its name (not id): status flips to `archived` (still readable via list_watchlists status=all/archived). The name is freed for reuse by a new save_watchlist. Idempotent. Tier: sp500+ (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Watchlist name to soft-delete (case-insensitive, 1–80 chars); frees the name for reuse. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| status | string | yes | — |
| watchlist_id | string | yes | — |
No examples provided.
describe_schema Describe Data Schema ~108
Returns the Parquet schema for all tables in the Valuein SEC data warehouse. Includes table descriptions, column names, types, primary keys, and foreign-key references. Use this tool to understand the data model before querying with other tools. No data reads required — schema is embedded in the manifest. Available on all plans.
| Name | Type | Req | Description |
|---|---|---|---|
| table | string | — | Filter to a single table name (e.g. 'fact', 'entity', 'references'). Omit to return the full schema for all tables. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| columns | object | — | Single-table mode: map of column name → definition |
| description | string|null | — | Single-table mode: the table's description |
| project | string|null | — | Full-schema mode: source project name |
| schema_version | string | yes | Parquet schema version from the active R2 manifest |
| table | string | — | Single-table mode: the requested table name |
| tables | object | — | Full-schema mode: map of table name → { description, column_count, columns } |
No examples provided.
dismiss_inbox_item Dismiss Inbox Item ~97
Soft-delete a single inbox item by its id (from list_alert_inbox) — not an alert id; sets `dismissed_at`. The row stays queryable via `list_alert_inbox(include_dismissed=true)` for audit. Idempotent. Tier: sp500+ (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| inbox_id | string | yes | Identifier of the inbox item to dismiss (soft-delete), as returned by list_alert_inbox. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| dismissed | boolean | yes | — |
| inbox_id | string | yes | — |
| unread_count | integer | yes | — |
No examples provided.
forensic_audit Forensic Audit (Beneish + Sloan + Solvency) ~151
Deterministic forensic-accounting scores for a single ticker: partial Beneish M-Score, Sloan accruals, and a solvency snapshot. Returns a red-flag narrative ranked by severity, with citations to source filings. Used by the `forensic_earnings_brief` SOP. Note: full Beneish needs AR / current assets / PPE / SGA / current liabilities, which aren't in our fundamentals model. We compute the recoverable subset (SGI + TATA + LVGI) and flag `partial=true`. Tier: sp500+.
| Name | Type | Req | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker symbol of the company to audit, e.g. AAPL, MSFT, BRK.B. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| period_end | string|null | yes | — |
| prior_period_end | string|null | yes | — |
| result | object | yes | — |
| sec_url | string|null | yes | — |
| source_filing | string|null | yes | — |
| ticker | string | yes | — |
No examples provided.
generate_comps_xlsx Generate Peer Comparables Workbook (xlsx) ~292
Render a peer comparables table into an Excel workbook. The Comps sheet is formatted as a named Excel Table (`ValueinPeerComps`) so the user gets one-click Insert Chart on any column — the cleanest workaround for not embedding chart objects server-side. Subject-row highlight makes side-by-side comparison instant. A Summary sheet adds subject vs peer-median deltas. SERVER-TRUST: the ratios you pass are rendered as-supplied and are NOT re-derived by Valuein, so the workbook carries a visible 'figures supplied by caller, not verified by Valuein' watermark (response `verification.status` = 'unverified'). For authoritative numbers, source them from `get_peer_comparables` / `get_financial_ratios` first. Pair with `get_peer_comparables` for a typical flow. Tier: pro+.
| Name | Type | Req | Description |
|---|---|---|---|
| notes | string | — | Optional free-text note (≤500 chars) rendered on the Summary sheet. |
| peers | array | yes | Peer companies to tabulate against the subject (1–50 rows); each row carries the peer's ticker, name, and comparable ratio values. |
| subject_company_name | string | — | Optional display name for the subject company; falls back to the ticker if omitted. |
| subject_ticker | string | yes | Stock ticker symbol of the subject company the comps sheet is built around, e.g. AAPL. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| content_type | string | yes | — |
| expires_at | string | yes | — |
| expires_in_seconds | integer | yes | — |
| filename | string | yes | — |
| r2_key | string | yes | — |
| size_bytes | integer | yes | — |
| url | string | yes | — |
| verification | object | yes | Server-trust record. Comps ratios are rendered as supplied and are NOT re-derived by Valuein, so the workbook carries a visible 'figures supplied by caller' watermark. Pull authoritative ratios via g… |
No examples provided.
generate_dcf_xlsx Generate DCF Workbook (xlsx) ~283
Render a forward DCF result into a professional Excel workbook (Summary + 5×5 Sensitivity heatmap + Inputs sheet). Native conditional formatting — no chart images needed. Returns a 15-minute presigned R2 download URL. SERVER-TRUST: the DCF is re-derived in-Worker from the supplied `inputs_echo` (the math is pure + deterministic) and the workbook renders Valuein's recomputed figures — never the caller's claimed values. If the claimed figures disagree, the workbook is still produced but stamped with a visible correction banner and the response `verification.status` is 'corrected'. A fabricated per-share value can never appear as Valuein-authoritative. Pair with `compute_dcf` for a typical analyst flow: agent calls `compute_dcf({ticker, ...})`, then passes the structured result straight to `generate_dcf_xlsx({ticker, dcf_result, ...})` to materialise a shareable file. Tier: pro+.
| Name | Type | Req | Description |
|---|---|---|---|
| company_name | string | — | Optional — surfaces on the cover row. Falls back to ticker only. |
| dcf_result | object | yes | Structured DCF result — typically the `result` field returned by `compute_dcf`. |
| ticker | string | yes | Stock ticker symbol of the company the DCF workbook is built for, e.g. AAPL. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| content_type | string | yes | — |
| expires_at | string | yes | — |
| expires_in_seconds | integer | yes | — |
| filename | string | yes | — |
| r2_key | string | yes | — |
| size_bytes | integer | yes | — |
| url | string | yes | — |
| verification | object | yes | Server-trust record. status='verified' when the caller's figures matched the server re-derivation; 'corrected' when they did not (the workbook shows the SERVER figures + a banner). `mismatches` lists… |
No examples provided.
generate_lbo_xlsx Generate LBO Workbook (xlsx) ~252
Render an LBO result into a professional Excel workbook (Summary + year-by-year Projection table + Inputs sheet). Returns a 15-minute presigned R2 download URL. SERVER-TRUST: the deal is re-derived in-Worker from the supplied `lbo_result.inputs_echo` (the math is pure + deterministic) and the workbook renders Valuein's recomputed figures — never the caller's claimed values. If the claimed figures disagree, the workbook is still produced but stamped with a visible correction banner and the response `verification.status` is 'corrected'. Pair with `compute_lbo` for a typical flow: agent calls `compute_lbo({ticker, ...})`, then passes the structured result straight to `generate_lbo_xlsx({ticker, lbo_result, ...})` to materialise a shareable file. Tier: pro+.
| Name | Type | Req | Description |
|---|---|---|---|
| company_name | string | — | Optional — surfaces on the cover row. Falls back to ticker only. |
| lbo_result | object | yes | Structured LBO result — typically the `result` field returned by `compute_lbo`. |
| ticker | string | yes | Stock ticker symbol of the LBO target, e.g. AAPL. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| content_type | string | yes | — |
| expires_at | string | yes | — |
| expires_in_seconds | integer | yes | — |
| filename | string | yes | — |
| r2_key | string | yes | — |
| size_bytes | integer | yes | — |
| url | string | yes | — |
| verification | object | yes | Server-trust record. status='verified' when the caller's figures matched the server re-derivation; 'corrected' when they did not (the workbook shows the SERVER figures + a banner). `mismatches` lists… |
No examples provided.
generate_research_brief_docx Generate Research Brief (docx) ~477
Render a structured research brief into a professionally-styled Word document — a cover page (title as the hero, the named analyst credited directly beneath it, a small 'Built on Valuein' credit linked to valuein.biz) followed by page 2 (masthead repeating the analyst's name, abstract, optional snapshot table, body sections, and a citations table with clickable SEC EDGAR links), with a running footer (ticker, page number, a single disclosure line) repeated on every page. No embedded charts in v1; pair with `generate_dcf_xlsx` / `generate_comps_xlsx` for visuals the analyst pastes in. SERVER-TRUST: prose, snapshot rows, and citations are rendered as-supplied and are NOT verified by Valuein, so the brief carries a visible 'figures supplied by caller, not verified by Valuein' watermark (response `verification.status` = 'unverified'). Resolve each citation via `verify_fact_lineage` before publishing. Consumes the same `sections` + `citations` shape `create_report` emits, so the typical flow is two tool calls: `create_report` → `generate_research_brief_docx`. Tier: pro+.
| Name | Type | Req | Description |
|---|---|---|---|
| abstract | string | — | Optional executive-summary paragraph (≤2000 chars) shown after the masthead. |
| author_name | string | — | Display name of the analyst producing this brief, shown as a named byline ('By {name}') on the masthead — the way a real research note credits an analyst. Omit to show just the date. |
| citations | array | — | Optional source citations (≤60) rendered as a table with clickable SEC EDGAR hyperlinks. |
| company_name | string | — | Optional display name shown in the masthead subtitle; falls back to the ticker if omitted. |
| sections | array | yes | Ordered body sections of the brief (1–20); each has a heading and body text. |
| snapshot | array | — | Optional at-a-glance metric rows (≤20) rendered as the snapshot table. |
| ticker | string | yes | Stock ticker symbol the brief covers, e.g. AAPL, MSFT, BRK.B. |
| title | string | yes | Document title rendered in the page-1 masthead (1–200 chars). |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| content_type | string | yes | — |
| expires_at | string | yes | — |
| expires_in_seconds | integer | yes | — |
| filename | string | yes | — |
| r2_key | string | yes | — |
| size_bytes | integer | yes | — |
| url | string | yes | — |
| verification | object | yes | Server-trust record. Brief prose, snapshot rows, and citations are rendered as supplied and are NOT verified by Valuein, so the brief carries a visible 'figures supplied by caller' watermark. Resolve… |
No examples provided.
get_agent_memory Get Agent Memory ~109
Recall this user's durable memory. Omit `key` (or pass null) to read EVERYTHING you have remembered, newest-first — do this at the START of a task to re-ground yourself. Pass a specific `key` to fetch one entry. An absent key returns an empty list, never an error (absence is a first-class answer). Tier: sp500+ (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| key | — | — | A specific key to fetch, or omit/null to recall all memory (newest-first). |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| memories | array | yes | — |
No examples provided.
get_agent_run Get Agent Run ~129
Fetch full detail for one of the caller's own standing-agent runs by id (from list_agent_runs) — status, goal, tickers, cost, artifact ids, role breakdown, and any error. A run may have been triggered by this same agent or by the customer's own Workspace; this tool works either way. Returns `found: false` (not an error) for an unknown id OR an id belonging to another customer — there is no distinguishing signal, by design. Tier: sp500+ (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| run_id | string | yes | Run identifier, from list_agent_runs. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| found | boolean | yes | — |
| run | object | — | — |
No examples provided.
get_blockholders Blockholders (SC 13D / 13G) ~328
Returns SC 13D / SC 13G blockholder disclosures (5%+ stakes) for a US public company. Each row carries percent_owned, sole/shared voting + dispositive split, schedule_type, and the first-class ``going_active`` flag — TRUE when the same filer flipped 13G → 13D within the lookback window (the single most actionable activist signal in this dataset). Use latest_only=true (default) to dedupe to the most recent filing per filer. Use collapse_groups=true to fold multi-person filings into one row. Institutional tier only.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of_date | string | — | PIT filter on accepted_at — only filings on or before this date. |
| collapse_groups | boolean | — | When true, fold multi-reporting-person filings into a single row, with secondary persons in the ``persons[]`` field. Default false: each person stays as its own row. |
| latest_only | boolean | — | When true (default), keep only the most recent filing per (filer, schedule prefix) — typically what analysts want. Set false to see the full filing history. |
| lineage_detail | string | — | Per-row provenance envelope. |
| lookback_days | integer | — | Window for the going_active (13G → 13D) detection. Default 365 days. |
| schedule_filter | string | — | Which schedule(s) to return. '13D' = activist (intent to influence). '13G' = passive. 'both' = no filter. |
| ticker | string | yes | Stock ticker symbol of the issuer. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| cik | string | yes | — |
| company_name | string | yes | — |
| data_age_days | number|null | yes | — |
| rows | array | yes | — |
| staleness_warning | string|null | yes | — |
| ticker | string | yes | — |
No examples provided.
get_capital_allocation_profile Capital Allocation Profile ~405
Get a multi-year capital allocation breakdown for a US public company. Shows how management deploys cash across all six categories — capex, R&D, M&A, dividends, buybacks, and debt — plus pre-computed deployment ratios (% of operating cash flow) and over-distribution flags. Use this tool when the user asks: how does a company allocate capital, what's the buyback-vs-dividend mix, is the company over-distributing, is growth funded by R&D or M&A, what's the cash-return-ratio trend, or any 'where does the money go' question — including owner-earnings (Buffett-style) and reinvestment-rate (Damodaran-style) analysis. Data sourced from annual 10-K filings; PIT-safe via as_of_date. R&D is included as a deployment category (the primary growth-reinvestment vehicle for knowledge-economy firms), but since it's already deducted before operating cash flow, `rd_pct_ocf` is INFORMATIONAL and `total_deployment_pct_ocf` EXCLUDES R&D to preserve the cash-flow identity (OCF = capex + M&A + dividends + buybacks + debt repayment + Δcash). The `flags` object carries pre-computed booleans: `buybacks_exceed_fcf`, `total_returns_exceed_fcf` (buybacks + dividends > FCF), and `debt_funded_distribution` (over-distribution funded by leverage vs cash). Available on all plans.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of_date | string | — | Point-in-time date (YYYY-MM-DD). Only returns facts with accepted_at on or before this date — eliminates look-ahead bias. |
| lookback_years | integer | — | Number of fiscal years to look back from the most recent filing (1–20). Defaults to 5 years for a full capital allocation cycle. |
| ticker | string | yes | Stock ticker symbol, e.g. AAPL, MSFT |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| as_of_date | string|null | — | — |
| data | array | yes | Per-period capital-allocation rows: capex, R&D, M&A, dividends, buybacks, debt, and deployment-mix flags |
| lookback_years | integer | yes | Number of fiscal years summarized |
| note | string | — | — |
| periods_returned | integer | yes | — |
| ticker | string | yes | — |
No examples provided.
get_claim Get Claim ~79
Fetch a single claim by id, plus the ids of theses it supports/refutes and its full append-only score history. Use this to inspect a claim's evidence, current status, and how its outcome has evolved. Tier: all paid + free tiers (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| claim_id | string | yes | Id returned by save_claim or list_claims. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| claim | object | yes | — |
| linked_thesis_ids | array | yes | — |
| score_events | array | yes | — |
No examples provided.
get_company_fundamentals Company Fundamentals ~904
Retrieve standardized SEC EDGAR fundamental financial metrics for a US public company. Returns revenue, gross profit, operating income, net income, EPS (diluted), total assets, total liabilities, stockholders' equity, cash & equivalents, total debt, operating cash flow, and capital expenditures for one or more fiscal periods. Data sourced from 10-K (annual) and 10-Q (quarterly) filings. Point-in-time: no look-ahead bias — pass `as_of_date` (YYYY-MM-DD) to reconstruct exactly the information set known on that date. This returns the raw as-reported line items ONLY. Do NOT derive metrics from them yourself — a hand-computed figure carries no fact_id and cannot be verified against a filing. Every derived metric is already served pre-computed WITH provenance: free cash flow, FCF margin, margins, ROE/ROA/ROIC, leverage and the price multiples come from `get_valuation_metrics`; the full ratio table (incl. per-share, owner-earnings, growth) from `get_financial_ratios`; intrinsic value from `compute_dcf`. If one of those is gated on your plan, say so and offer the upgrade — never substitute your own arithmetic.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of_date | string | — | 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. |
| fiscal_year | integer | — | Fiscal year (YYYY). Omit to return the most recent available years. |
| limit | integer | — | Maximum number of periods to return (1–40). Defaults to 5. |
| lineage_detail | string | — | 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 whe… |
| min_confidence | number | — | 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 accoun… |
| period | string | — | Filing period granularity. Annual uses 10-K; quarterly uses 10-Q. |
| response_format | string | — | Output shape. 'flat' (default) returns the legacy `metrics` object plus the additive `metrics_availability`/`metrics_provenance`/`metrics_display` sidecars — `metrics_display` holds each figure alrea… |
| strict | boolean | — | 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. |
| ticker | string | yes | Stock ticker symbol, e.g. AAPL, MSFT, BRK.B |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| as_of_date | string|null | yes | — |
| company_name | string | yes | — |
| data | array | yes | — |
| period | string | yes | — |
| ticker | string | yes | — |
| years_returned | integer | yes | — |
No examples provided.
get_compute_ready_stream Compute-Ready Stream ~225
Returns a short-lived (15-min) download URL for a bulk Parquet object that can be piped directly into Python/DuckDB/Polars for high-throughput computation that exceeds the MCP context window. The URL streams the object straight from Valuein storage and supports HTTP range reads, so `duckdb.read_parquet(url)` / `pl.read_parquet(url)` work without downloading the whole file first. Datasets: fact (per-entity partition — requires ticker), ratio (all computed ratios), valuation (DCF inputs), filing (SEC filing metadata), references (company universe), index_membership (historical index composition). Scoped to the caller's tier bucket; the link is signed and cannot be used to list the bucket or read other objects.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset_type | string | yes | Dataset to access. 'fact' requires ticker (per-entity partition). All others are full-universe tables. |
| ticker | string | — | Required when dataset_type is 'fact'. Resolves to the per-entity fact/{CIK}.parquet partition for that company. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| bucket | string | — | — |
| dataset_type | string | yes | — |
| expires_at | string | — | — |
| expires_in_seconds | integer | — | — |
| format | string | — | — |
| object_key | string | — | — |
| scope | object | — | What the presigned URL is scoped to (method, object_key_only, etc.) |
| ticker | string|null | — | — |
| url | string | — | Signed, time-limited (15-min) download URL for the Parquet object (Range-enabled) |
| url_hash | string | — | — |
| usage | object | — | Ready-to-run DuckDB / Polars snippets |
No examples provided.
get_earnings_signals Earnings Signals ~316
Reported earnings results and a model-derived earnings-trend signal for a company, by fiscal period: actual reported EPS, a trailing-trend EPS estimate (`eps_trend_est`), the deviation of actual vs that trend (`eps_surprise_pct`), reported revenue, and year-over-year revenue growth. IMPORTANT: `eps_trend_est` is NOT Wall Street analyst consensus — Valuein is sourced purely from SEC EDGAR and carries no consensus feed. It is a deterministic estimate computed from the company's own prior reported EPS, so `eps_surprise_pct` measures how far the print landed from its own trailing trend, not whether it 'beat the Street'. Use it to track earnings/revenue trajectory and momentum, not to claim a consensus beat or miss. Point-in-time safe — pass as_of_date to filter by SEC acceptance (accepted_at) for look-ahead-free backtests. Available on all plans.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of_date | string | — | Point-in-time filter: only return signals with accepted_at on or before this date. Use for backtesting to avoid look-ahead bias. |
| limit | integer | — | 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 (en… |
| ticker | string | yes | Stock ticker symbol, e.g. AAPL, MSFT |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| as_of_date | string | — | — |
| data | array | yes | — |
| estimate_basis | string | yes | — |
| note | string | yes | — |
| periods_returned | integer | yes | — |
| plan | string | yes | — |
| ticker | string | yes | — |
No examples provided.
get_financial_ratios Financial Ratios ~691
Get pipeline-computed financial ratios from ratio.parquet. Served categories: profitability (margins, ROE, ROA, ROIC), liquidity (current ratio, quick ratio), leverage (D/E, interest coverage, net debt/EBITDA), efficiency (asset turnover, inventory days), per_share (EPS, BVPS, FCF/share), owner_earnings (Buffett FCF, owner yield), valuation (pe_ratio, pb_ratio, ev_ebitda, market_cap, dividend_yield), and the pipeline-emitted forensic, growth, and rank (cross-sectional *_sector_pctile) categories. NOT every category exists for every ticker — omit `categories` to get whatever this ticker has, or read `available_categories` in the CATEGORY_NOT_AVAILABLE envelope. valuation is LIVE (schema 2.18.0): price-derived multiples from EOD prices period-end-aligned — pipeline-derived, NOT strictly PIT (no accepted_at column on these rows). Includes TTM rows alongside annual; each row's `is_calendar_aligned` is TRUE only when period_end sits on the fiscal-year boundary (±7 days) — filter to TRUE when joining ratios to fact-table fundamentals on (entity, fiscal_year). For historical cuts use `as_of_date` (PIT by accepted_at when present, else by period_end — see the param). Use this *instead of* `get_valuation_metrics` when you only need ratios (no DCF wiring); use `get_valuation_metrics` when you also need DCF/DDM. Each ratio is a `{value, unit, category, reason}` entry with a response-level `lineage` (DerivedLineage) pointing to `get_company_fundamentals` / `verify_fact_lineage` for filing-level provenance; a null value carries a `reason` (e.g. INPUT_MISSING) so missing is never a real zero. Available on all plans.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of_date | string | — | 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 ra… |
| categories | array | — | 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-… |
| fiscal_period | string | — | Filter to a specific fiscal period type. Use 'TTM' for trailing twelve months. Omit to return both annual (FY) and TTM rows. |
| limit | integer | — | Number of distinct period_end dates to return (1–20). Defaults to 5. Within each period, all matching ratio_names are included. |
| period_end_before | string | — | Alias of as_of_date (as_of_date preferred — the canonical name). Returns ratios with period_end on or before this date. |
| ticker | string | yes | Stock ticker symbol, e.g. AAPL, MSFT |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| data | array | yes | — |
| lineage | object | — | 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 (r… |
| note | string | yes | — |
| periods_returned | integer | yes | — |
| plan | string | yes | — |
| ticker | string | yes | — |
No examples provided.
get_insider_sentiment Insider Sentiment (composite) ~187
Role-weighted insider sentiment score on a fixed [-100, +100] scale for a single issuer over a lookback window. Role weights: CEO/CFO = 3.0 (via officer_title pattern), other NEO Officer = 2.0, 10%-Owner = 1.5, Director = 1.0. P = +1, S = -1; option exercises, grants, and tax withholdings are neutralised. Cluster flag = TRUE when ≥3 distinct insiders transacted within any 30-day window inside the lookback. Institutional tier only.
| Name | Type | Req | Description |
|---|---|---|---|
| cluster_window_days | integer | — | Sliding window for the cluster_flag detection. Default 30 days. |
| lookback_days | integer | — | Days back from today to scan transactions for. Default 180. |
| ticker | string | yes | Issuer ticker symbol. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| buy_count | integer | yes | — |
| cik | string | yes | — |
| cluster_flag | boolean | yes | — |
| company_name | string | yes | — |
| lookback_days | integer | yes | — |
| sell_count | integer | yes | — |
| sentiment_score | number | yes | — |
| ticker | string | yes | — |
| top_contributors | array | yes | — |
| total_buy_shares | number | yes | — |
| total_buy_usd | number | yes | — |
| total_sell_shares | number | yes | — |
| total_sell_usd | number | yes | — |
No examples provided.
get_insider_transactions Insider Transactions ~381
Form 3 / 4 / 5 / 144 line items for a US public company. Returns each transaction (or initial holding / proposed sale) with the insider's name, role, transaction code, share count, price, and notional. Filters by lookback window, transaction code (P=purchase, S=sale, A=grant, M=option exercise, F=tax withholding, etc.), insider role, and minimum share threshold. Institutional tier only — sample / sp500 / pro return ENTITLEMENT_DENIED with an upgrade link.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of_date | string | — | Point-in-time date (YYYY-MM-DD). Only returns transactions with accepted_at <= this date — eliminates look-ahead bias. When set, lookback_days is ignored. |
| limit | integer | — | Maximum rows to return. Default 100, max 500. |
| lineage_detail | string | — | Per-row provenance envelope. 'compact' (default) returns source_filing + source_url. 'full' adds accepted_at. 'off' omits lineage. |
| lookback_days | integer | — | How many days back from today to scan transactions for. Ignored when as_of_date is set. |
| min_shares | number | — | Minimum |shares| per transaction. Omit for no floor. |
| roles_in | array | — | Insider roles to keep. Omit to include any role. |
| ticker | string | yes | Stock ticker symbol, e.g. AAPL, MSFT, BRK.B |
| transaction_codes | array | — | SEC transaction codes to keep (uppercase, single-letter): P=purchase, S=sale, A=grant, M=option exercise, F=tax withholding, G=gift, J=other. Unknown codes are rejected. Omit to include all codes. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| cik | string | yes | — |
| company_name | string | yes | — |
| data_age_days | number|null | yes | — |
| rows | array | yes | — |
| staleness_warning | string|null | yes | — |
| ticker | string | yes | — |
No examples provided.
get_institutional_holdings Institutional Holdings (by issuer) ~298
Returns top-N institutional holders of a US public company at a specific period_end (latest by default), with aggregate institutional shares, total market value, holder count, and HHI concentration (sum of squared share-of-total percentages). Sourced from Form 13F-HR via the by-issuer partition. Institutional tier only. 13F filings carry a ~45-day reporting lag — staleness_warning fires when latest data is older than 90 days.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of_date | string | — | Point-in-time cutoff (YYYY-MM-DD): only 13F filings ACCEPTED by SEC on or before this date are considered, applied BEFORE the latest period is resolved. A 13F/A amendment or late filing accepted afte… |
| lineage_detail | string | — | Per-row provenance envelope. compact / full / off. |
| period_end | string | — | Quarter-end of the 13F reporting period (YYYY-MM-DD). Omit to use the latest period available. This is a REPORTING period, NOT a point-in-time cutoff — use as_of_date for that. |
| ticker | string | yes | Stock ticker symbol of the issuer. |
| top_n | integer | — | Maximum holders to return, ranked by market_value_usd. Default 25, max 200. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| aggregate | object | yes | — |
| as_of_date | string|null | yes | The point-in-time cutoff actually applied (echo of the as_of_date input). Null when no PIT cut was requested — never confuse this with the reporting period_end. |
| cik | string | yes | — |
| company_name | string | yes | — |
| data_age_days | number|null | yes | — |
| hhi_concentration | number|null | yes | — |
| holders_count | integer | yes | — |
| options_positions_count | integer | yes | Option positions (put_call set) excluded from totals/HHI/rows. rows[] are common-stock 13F holdings only. |
| period_end | string|null | yes | The 13F REPORTING period the rows belong to — NOT a point-in-time cutoff. |
| rows | array | yes | — |
| staleness_warning | string|null | yes | — |
| ticker | string | yes | — |
| total_institutional_shares | number | yes | — |
| total_market_value_usd | number | yes | — |
No examples provided.
get_manager_portfolio Manager Portfolio (13F by filer) ~331
Returns a 13F filer's full portfolio at a specific period_end (latest by default), with QoQ deltas vs the prior quarter (new / increased / decreased / exited / unchanged). Specify the filer either by filer_cik (preferred) or filer_name (fuzzy match against entity.name; multiple matches raise an ambiguity error so you can disambiguate by CIK). Institutional tier only.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of_date | string | — | Point-in-time cutoff (YYYY-MM-DD): only 13F filings ACCEPTED by SEC on or before this date are considered, applied BEFORE the latest + prior periods (and the QoQ basis) are resolved. A 13F/A amendmen… |
| filer_cik | string | — | CIK of the 13F filer (1-10 digits; will be zero-padded to 10). Preferred over filer_name when known. |
| filer_name | string | — | Filer name to fuzzy-match against entity.name. Case-insensitive substring match. Multiple matches raise INVALID_ARGUMENT — use filer_cik in that case. |
| lineage_detail | string | — | Per-row provenance envelope. |
| period_end | string | — | Quarter-end (YYYY-MM-DD). Omit to use latest available. This is a REPORTING period, NOT a point-in-time cutoff — use as_of_date for that. |
| top_n | integer | — | Maximum positions to return, ranked by market_value_usd. Default 25. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| aggregate | object | yes | — |
| as_of_date | string|null | yes | The point-in-time cutoff actually applied (echo of the as_of_date input). Null when no PIT cut was requested — never confuse this with the reporting period_end. |
| data_age_days | number|null | yes | — |
| filer_cik | string | yes | — |
| filer_name | string | yes | — |
| period_end | string|null | yes | The 13F REPORTING period the positions belong to — NOT a point-in-time cutoff. |
| positions_count | integer | yes | — |
| prior_period_end | string|null | yes | — |
| rows | array | yes | — |
| staleness_warning | string|null | yes | — |
| total_market_value_usd | number | yes | — |
No examples provided.
get_morning_brief Get Morning Brief ~143
Read the caller's Morning Brief — a daily AI-generated market digest covering overnight moves across the customer's own watchlists and theses, produced by the Workspace. Omit `day` to get the most recent brief available (not necessarily today's); pass a specific `day` (YYYY-MM-DD) to fetch that day's brief. It is normal for no brief to exist yet if the customer hasn't set up or recently generated one — that returns `found: false`, not an error. Tier: sp500+ (sample rejected).
| Name | Type | Req | Description |
|---|---|---|---|
| day | string | — | Specific day to fetch (YYYY-MM-DD). Omit to get the most recent brief available for this customer. |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | object | yes | Provenance envelope — data lineage for every MCP response |
| body_markdown | string|null | — | — |
| created_at | number | — | — |
| day | string|null | yes | — |
| found | boolean | yes | — |
| model | string|null | — | — |
| provider | string|null | — | — |
| status | string | — | — |
No examples provided.