Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

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

+5 this week 70 Trust /100
Trust breakdown (6 categories)

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
Transport & Reachability100
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
Install

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

# add to Claude Code
claude mcp add --transport http valuein-mcp-sec-edgar https://mcp.valuein.biz/mcp
# ~/.codex/config.toml
[mcp_servers.valuein-mcp-sec-edgar]
url = "https://mcp.valuein.biz/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "valuein-mcp-sec-edgar": {
      "type": "remote",
      "url": "https://mcp.valuein.biz/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add valuein-mcp-sec-edgar --url https://mcp.valuein.biz/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  valuein-mcp-sec-edgar:
    url: "https://mcp.valuein.biz/mcp"
// mcp.json
{
  "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.

Changelog

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.

Diagnostics

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
MCP tools — 113 exposed · ~31,344 tokens

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.

Tool Tokens
reject_staged_action ~137

Reject a staged action by id. Terminal — the underlying tool is NEVER called, and a rejected (or otherwise already-decided) action can never be flipped back by a later approve/reject call; `transitioned` tells you whether THIS call is what moved it to 'rejected' or whether it was already decided. An id belonging to a different customer's token is indistinguishable from an unknown id (returns NOT_FOUND). Tier: sp500+ (sample rejected).

NameTypeReqDescription
reasonstringOptional free-text reason recorded on the staged action.
staged_action_idstringyesId of the staged action to reject.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
staged_actionobjectyes
transitionedbooleanyesTrue if this call moved the action proposed→rejected; false if it was already decided.

No examples provided.

render_report ~388

Return a 15-minute presigned download URL for a report in the requested binary format. `format=md` presigns the cached markdown — instant, no compute. `format=docx` returns a branded Word document with 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 the report body on page 2 (masthead repeating the analyst's name, abstract, sections, citations table with clickable SEC EDGAR links), with a running footer (ticker, page number, a single disclosure line) repeated on every page. The DOCX is cached in R2 alongside the markdown after first build so repeat downloads are instant; pass `force_regenerate: true` to bust the cache (e.g. right after `update_report`). Tier gate mirrors `get_report`: authors always see their own reports; non-authors below the report's required tier get an upgrade prompt.

NameTypeReqDescription
author_namestringDisplay name of the report's author, shown as a named byline ('By {name}') on the docx masthead — the way a real research note credits an analyst. Omit to show just the date. Only affects `format=doc…
force_regeneratebooleanIf true, ignore the cached DOCX and re-render. No effect on md (markdown is canonical).
formatstringyesmd = raw markdown (the same body the editor renders). docx = branded Word document — cover page crediting the named analyst, masthead repeated on page 2, running footer.
report_idstringyesId from create_report or list_my_reports.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
content_typestringyes
expires_atstringyes
expires_in_secondsintegeryes
filenamestringyes
formatstringyes
from_cachebooleanyes
size_bytesyes
urlstringyes

No examples provided.

restore_deleted ~253

Undo a soft-delete: restores a thesis, watchlist, alert, claim or report that `delete_*` archived. The record returns to the state it held before the delete — a closed thesis comes back closed, a paused alert comes back paused. When the item was deleted before the server began recording its prior state, `prior_status_known` is false and the response says which default was used. A restored report returns to its prior status AND visibility, so a report that was public comes back public and one that was private stays private; when that state predates the change that began recording it, the report returns private and `prior_status_known` is false rather than guessing at publication. Citation overrides are NOT restorable (that delete removes the row outright) — use the approval flow. Idempotent: restoring a live item succeeds and changes nothing. Tier: paid + free (sample rejected).

NameTypeReqDescription
idstringyesThe record's id. For a watchlist this is the `watchlist_id` returned by `delete_watchlist` — NOT its name, because deleting a watchlist frees its name for reuse.
kindstringyesWhich record type to restore. Citation overrides are not restorable.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
idstringyes
kindstringyes
prior_status_knownbooleanyes
statusstringyes

No examples provided.

run_backtest ~508

A SMALL, BOUNDED, in-Worker sanity-check backtest — NOT a full-universe backtesting engine. Answers a quick question like 'does this factor actually work on these 5 names over the last year' inline, mid-conversation, without leaving MCP. Composes two existing tools (`get_pit_universe` + `get_pit_valuation_ratios`) across up to 10 tickers x 12 rebalance dates (120 cells): for each rebalance date, checks which requested tickers were in the survivorship-free PIT universe on that date (dropping — never erroring on — a ticker not yet listed or already delisted), then pulls each surviving ticker's point-in-time valuation multiples and computes the forward return to the NEXT rebalance date from the raw (unadjusted) close. Returns a flat {rebalance_date, ticker, factor_values, forward_return_pct} grid plus a small factor<->forward-return correlation per requested factor — a quick cross-sectional signal check, NOT a transaction-cost-aware portfolio simulation or a statistically validated backtest result. If the requested grid exceeds 120 cells, this tool does NOT silently truncate — it returns a `stream_fallback` response (signed Parquet download URLs, same shape as `get_compute_ready_stream`) and tells you to use those URLs. For a REAL full-universe, multi-date, survivorship-free backtest, use the Python SDK's AlphaEngine (`pip install valuein-sdk`) looped over `as_of` dates client-side — this tool is explicitly the small complement to that, not a replacement for it. Available on every plan; coverage follows your plan tier same as the two tools it composes.

NameTypeReqDescription
factorsarrayWhich of get_pit_valuation_ratios's own output fields to include as factor_values. One or more of: pe_ratio, ps_ratio, pb_ratio, ev_ebitda, ev_revenue, fcf_yield_pct, gross_margin_pct, operating_marg…
rebalance_datesarrayyes1-12 historical dates (YYYY-MM-DD) to snapshot valuation multiples on. Order does not matter — the tool sorts them chronologically. Forward return is computed from each date to the NEXT one in the so…
tickersarrayyes1-10 stock ticker symbols, e.g. ["AAPL","MSFT"].
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
cappedbooleanyes
caveatsarrayyes
cellsarray
cells_computedintegeryes
droppedarrayyes
factorsarrayyes
grid_cellsintegeryes
methodstringyes
next_stepstring
notestringyes
pit_safeyes
rebalance_datesarrayyes
source_tools_usedarrayyes
streamsarray
summaryobject
tickersarrayyes

No examples provided.

run_workflow ~296

Resolve a saved workflow by id and return a structured execution plan for a single ticker. Each plan entry names a real MCP tool or SOP plus its ticker-substituted arguments; the calling agent invokes them in order, applying any `skip_if` predicate against the previous step's output. **This tool does NOT execute the steps server-side.** It plans; the agent runs. Iterate through `plan[]` in order, call the named tool/SOP with `args`, accumulate outputs, and apply each step's `skip_if` (skip the step when the previous output's `path` equals `equals`). Workflows are private state owned by the calling user. Sample-tier callers are rejected. Pair with `list_workflows` (frontend) to discover available workflow_ids.

NameTypeReqDescription
tickerstringUS-listed ticker the workflow should run against, e.g. 'AAPL'. Pass either `ticker` (single) or `tickers` (batch up to 50). Exactly one is required.
tickersarrayBatch mode — array of US-listed tickers, up to 50. When provided, the response has `plans[]` (one plan per ticker) instead of `plan`. Parity with the frontend batch-runner so agents can request 'plan…
workflow_idstringyesWorkflow id returned by the frontend workflow builder.
NameTypeReqDescription
instructionsstringyes
metaobjectyesProvenance envelope — data lineage for every MCP response
planyes
plansyes
tickerstring|nullyes
workflowobjectyes

No examples provided.

save_citation_override ~390

Persist a correction of a citation value. The correction is keyed on the canonical `fact_id` (a stable hash of CIK + accession + concept + period) so it applies to every report that references that same fact — including agent-regenerated reports. Re-saving the same fact_id replaces the prior correction in place (no duplicate row). The `fact_id` is VERIFIED against live SEC data (scoped to `ticker`) before the correction is stored — a fact_id that doesn't resolve to a real fact is rejected with FACT_NOT_FOUND and nothing is persisted. You therefore must supply the `ticker` the fact belongs to. Use this when the user notices an inaccuracy in an AI-generated report and wants the fix to persist. Provide `notes` for the rationale (≤500 chars) and `source_report_id` for provenance. Flat 10,000-override anti-abuse cap per account (deleting frees a slot; never a tier limit).

NameTypeReqDescription
corrected_valuestringyesUser-corrected value, stringified. The frontend interprets it based on the fact's known datatype (number, string, ISO date).
fact_idstringyesCanonical fact identifier — usually returned in a citation's `fact_ids` array by get_report or any compute tool. Stable across report regenerations. Verified against live SEC data (scoped to `ticker`…
notesstringOptional free-form rationale, ≤500 chars.
source_report_idstringOptional report id the user was viewing when they applied the correction (provenance).
tickerstringyesTicker the fact belongs to (REQUIRED) — scopes fact_id resolution against live SEC data and denormalises the row for fast filtering (the workspace UI's 'my corrections on AAPL' view).
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
capacityobjectyes
createdbooleanyes
overrideobjectyes

No examples provided.

save_claim ~569

Persist a single falsifiable, evidence-backed CLAIM — the atomic unit of the research graph. Use this for each discrete assertion an analysis produces (e.g. 'NVDA gross margin stays above 70% through FY2026'), then compose claims into a thesis with `link_claim_to_thesis`. Claims are scored independently of theses, so claim accuracy is tracked as its own track record. Pick `claim_type` by HOW it's judged, not what it's about: `assertion` = true now, checked against data; `prediction` = resolves at `horizon_days` via `verifiable_condition`; `judgment` = qualitative, not auto-scored. Use `tags` for the topic (financial, valuation, macro, …). Set `eval_mode: 'auto'` + a `verifiable_condition` for deterministic grading, else `'agent'`/`'manual'`. Tier: all paid + free tiers (sample rejected — guest has no customerId). Verifiable claims must cite evidence.

NameTypeReqDescription
antecedentScenario precondition — the claim only resolves when this holds. Null = unconditional.
claim_typestringyesEpistemic type — drives scoring. assertion=true now (verified vs data); prediction=future (resolves at horizon via verifiable_condition); judgment=qualitative (not auto-scored).
confidencenumberyesAuthor confidence in [0,1]. Used as the Brier/log-loss weight when scored.
directionstringyesDirectional polarity of the claim.
eval_modestringHow the outcome is resolved: auto (deterministic grade vs data via verifiable_condition), agent (an LLM judges at resolution), manual (a human marks it).
evidenceobjectEvidence grounding the claim.
horizon_daysResolution horizon in days (predictions). Null for assertions/judgments.
idempotency_keystringOptional client key for at-most-once semantics from a retrying agent.
source_report_idstringOptional id of a report that contains the supporting analysis.
statementstringyesThe atomic, falsifiable statement. One claim, not a paragraph.
tagsarrayTopical labels (controlled vocab). Multi-valued; drives filtering + learning segmentation, not scoring.
tickersarrayyesEntities referenced (uppercased). 1 for most claims; 2+ for a comparison claim.
verifiable_conditionMachine-evaluable condition for eval_mode='auto'. Null otherwise.
visibilitystring'private' (default) owner-only; 'unlisted' visible at a direct URL; 'public' surfaces on the author's profile and contributes to the claim-accuracy reputation.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
capacityobjectyes
claimobjectyes
deduplicatedbooleanyes

No examples provided.

save_figure_review ~430

Record (or update) the review state of ONE figure inside a report — the durable answer to 'has a human traced this number back to its filing?' Upsert keyed on (report_id, figure_key): re-reviewing a figure REPLACES its prior mark, it never appends, so this is always the figure's current state, never a history. `figure_key` is an opaque id you mint yourself for one figure (common shapes: `fact:{fact_id}` for a dataset-backed figure, `raw:{hash}` for free-text prose) — reuse the exact same key to update that figure's review later. `state`: verified (traced and correct) | corrected (wrong — supply `corrected_value`) | external (legitimately not from Valuein data) | rejected (unsupported, should be removed). `corrected_value` is REQUIRED when state='corrected' and must be omitted otherwise. Owner-scoped — your reviews never leak to or from another user. Tier: sp500+ (sample rejected).

NameTypeReqDescription
corrected_valuestringThe correct value. REQUIRED when state='corrected'; must be omitted for every other state (a corrected_value on a non-corrected review is rejected).
figure_keystringyesOpaque id you mint for one figure inside the report. Never parsed or validated beyond length — use the exact same key to update this figure's review later. Common shapes: 'fact:{fact_id}' for a datas…
notestringOptional free-text reviewer note (e.g. what was checked, or why it was rejected).
report_idstringyesIdentifier of the report the figure belongs to, as returned by create_report / list_my_reports / save_freeform_report.
statestringyesverified = traced to its filing and correct. corrected = wrong (supply corrected_value). external = legitimately not from Valuein data (analyst's own source). rejected = unsupported, should be remove…
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
okbooleanyes
reviewobjectyes

No examples provided.

save_freeform_report ~281

Save free-form markdown (e.g. a chat synthesis) as a DRAFT report you can refine in the editor and export to Word/PDF. Unlike `create_report` (which computes a structured reverse_dcf or thesis report), this accepts raw markdown and splits it into sections. PASS `citations` with the fact_ids behind the figures you wrote — without them every number in the report reads as unsourced and the report can never be signed off. Tier: sample rejected (reports are per-author state). Idempotency-key → stable report id.

NameTypeReqDescription
abstractstringOptional 1–2 sentence summary.
citationsarrayLineage you already hold for the figures in `markdown` — pass it rather than dropping it. Each claim should quote the figure exactly as the prose writes it, so figure review can link the two. Persist…
idempotency_keystringOptional key for at-most-once semantics. Same key from the same user always yields the same report id.
markdownstringyesFree-form markdown body (≤100k chars). Headings become sections.
tickerstringOptional ticker for context/catalog. Case-insensitive.
titlestringyesReport title.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
reportobjectyes
report_idstringyes
statusstringyes
versionintegeryes

No examples provided.

save_thesis ~482

Persist a directional investment thesis (bull / bear / neutral) on a ticker. The thesis becomes part of the caller's private research diary; pair with `list_theses` + `score_thesis_outcome` to track conviction-vs-outcome over time. Pass `idempotency_key` for at-most-once semantics from a retrying agent. **Use this AFTER** the agent has finished its analysis, not before — the thesis records the conclusion, not the question. Pair with `source_report_id` to link the thesis back to a published report so the buyer's thesis-tracking carries provenance. Tier: all paid + free tiers (sample tier rejected — sample is guest access with no customerId binding). Flat 10,000-thesis anti-abuse cap per account (archiving frees a slot; never a tier limit).

NameTypeReqDescription
convictionintegeryes1 = low conviction (gut feel) → 5 = high conviction (deep analysis).
horizon_daysintegeryesInvestment horizon in days. 1 day–5 years (1825d). The grader uses this to pick the as-of period.
idempotency_keystringOptional client-supplied key. If a previous `save_thesis` from the same user used this key, the existing thesis is returned instead of creating a duplicate.
notesstringFree-form rationale, ≤4000 chars. Stored verbatim; trim before submitting.
source_report_idstringOptional id of a report (from `create_report` / `publish_report`) that contains the supporting analysis.
thesis_at_price_centsintegerOptional snapshot of the ticker's market price (integer cents) at thesis creation. Used by future versions of the grader that mix in price returns; null for now is fine.
tickerstringyesUS-listed ticker. Case-insensitive — normalised to upper. E.g. 'AAPL'.
viewstringyesDirectional view: bull (expect outperformance), bear (under), neutral (mean-revert).
visibilitystringPhase 3: 'private' (default) is owner-only; 'unlisted' is visible at a known direct URL; 'public' surfaces on the author's /[handle] profile and contributes to their reputation score.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
capacityobjectyes
deduplicatedbooleanyes
thesisobjectyes

No examples provided.

save_watchlist ~115

Upsert a named watchlist with a list of tickers. Replace semantics — the full ticker list is the source of truth for that name. Use this for both creation AND modification (delete + recreate is not required for edits). 500-ticker cap per list. Names are case-insensitive uniqueness.

NameTypeReqDescription
criteriastringOptional free-form screening criteria description.
namestringyesUnique-per-user display name.
tickersarrayyesUS tickers. Normalised to uppercase, deduped.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
createdbooleanyes
watchlistobjectyes

No examples provided.

schedule_task ~314

Defer a follow-up task ("re-check AAPL margin compression in 30 days") for up to 90 days. This is an AGENT-facing primitive — call it mid-conversation/mid-run when you decide something is worth re-checking later; it is NOT a human-authorable "new task" form (use the Workspace's standing-agent scheduler for recurring, human-configured monitoring instead). On wake, an inbox item ALWAYS lands for the owner ("scheduled task due: …"). Optionally pass `context: {managed: true, team_id: "<standing_agent id>"}` to ALSO kick off a managed agent re-run at wake time — this is LIVE: it fires a real run of that standing-agent team, grounded in the saved context. It degrades to the inbox notice alone only if this deploy can't reach the run endpoint (report the actual outcome, never assume). Persisted durably in D1 — never lost on a Worker recycle. Tier: sp500+ (sample rejected).

NameTypeReqDescription
contextobjectSaved thesis/claim/report ids and any other state needed to reconstitute a fresh prompt at wake time. Set `managed: true` + `team_id: "<standing_agent id>"` to also kick off a live managed re-run of…
taskstringyesHuman-readable description of the deferred work.
wake_in_daysnumberyesHow many days from now this task becomes due (0 < n <= 90).
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
statusstringyes
task_idstringyes
wake_atstringyesISO 8601 timestamp when this task becomes due.

No examples provided.

score_claim ~202

Resolve a claim's outcome. By default auto-grades an `auto` claim by evaluating its verifiable_condition against SEC fundamentals (confirmed/refuted), or marks it `needs_review` when it can't be resolved deterministically (judgment, antecedent, or missing data). To record a human/agent judgment instead, pass `manual_status` (+ optional score/reason). Idempotent — re-scoring the same resolution is a no-op. Tier: sp500+ (sample rejected).

NameTypeReqDescription
as_ofstringSnapshot date for the fundamentals window (auto mode). Defaults to today UTC.
claim_idstringyesId of the claim to resolve.
manual_reasonstringExplanation for a manual resolution.
manual_scoreOutcome score in [-1,1] for a manual resolution. Null for non-scored statuses.
manual_statusstringProvide to record a human/agent outcome instead of auto-grading.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
basisstringyes
claimobjectyes
deduplicatedbooleanyes
modestringyes
reasonstringyes
resolved_statusstringyes
scorenumber|nullyes

No examples provided.

score_due_claims ~193

Find every auto-gradable claim that is due (assertions in open/needs_review/stale; predictions whose horizon has passed) and resolve each against fundamentals. Operates on the caller's OWN claims — omit `customer_id`. Targeting another user's `customer_id` is reserved for Valuein's internal scoring service and is rejected for every plan, including Institutional. Returns a summary + per-claim results. Idempotent — re-calling only re-resolves what changed.

NameTypeReqDescription
as_ofstringSnapshot date for the fundamentals window. Defaults to today UTC.
customer_idstringTarget user's Stripe customer_id. Defaults to the caller's own — leave it unset. Supplying a DIFFERENT customer_id is restricted to Valuein's internal scoring service and is rejected on every plan, I…
maxintegerSoft cap on claims scored per call (default 100).
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
dueintegeryes
errorsintegeryes
needs_reviewintegeryesCould not be auto-resolved; flagged for review.
resultsarrayyes
scannedintegeryes
scoredintegeryesResolved to confirmed/refuted.
skippedintegeryes
target_customer_idstringyes

No examples provided.

score_due_theses ~210

Find every thesis past its horizon with no outcome yet, and grade each via `score_thesis_outcome`. Operates on the caller's OWN theses — omit `customer_id`. Targeting another user's `customer_id` is reserved for Valuein's internal scoring service and is rejected for every plan, including Institutional. Returns a summary + per-thesis results. Idempotent — a re-call only re-grades anything not already graded.

NameTypeReqDescription
as_ofstringSnapshot date for the 'current' fundamentals window. Defaults to today UTC.
customer_idstringStripe customer_id of the target user. Defaults to the caller's own — leave it unset. Supplying a DIFFERENT customer_id is restricted to Valuein's internal scoring service and is rejected on every pl…
maxintegerSoft cap on theses scored per call. Defaults to 100. The frontend cron walks users serially so a low cap per user keeps each MCP request bounded.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
dueintegeryesSubset that were past their horizon AND ungraded.
errorsintegeryesPer-thesis errors caught + logged.
resultsarrayyes
scannedintegeryesTotal active theses inspected.
scoredintegeryesSuccessfully scored + persisted.
skippedintegeryesSkipped because already graded or not yet due.
target_customer_idstringyes

No examples provided.

score_thesis_outcome ~179

Grade a saved thesis against fundamental momentum since its creation. Pulls revenue / operating-margin / EPS / OCF deltas and aggregates into a score in [-1, +1]. Bull theses are graded by directional alignment, bear by inverse, neutral by closeness-to-flat. The grade is persisted back to the thesis row; re-call to refresh once new fundamentals land. **Note (PR 2)**: scoring is fundamental-only — does NOT yet include market-price returns. Phase 2 will mix in price data via a partner feed; the response shape is stable.

NameTypeReqDescription
as_ofstringSnapshot date for the 'current' fundamentals window. Defaults to today UTC. The scorer picks the fiscal period closest to this date.
thesis_idstringyesId returned by `save_thesis` or `list_theses`.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
outcomeobjectyes
thesisobjectyes

No examples provided.

screen_universe ~602

Rank companies by cross-sectional factor scores from factor_scores.parquet. Returns the underlying factors (roe, gross_margin, operating_margin, net_profit_margin, revenue_growth_yoy, fcf_to_assets, debt_to_equity, asset_turnover, current_ratio, piotroski_f_score) plus their percentile ranks (1.0 = best in universe, 0.0 = worst). `composite_rank` (the default sort) is a one-number multi-factor shortcut; sort by a specific *_rank column for a single factor. Two modes: full-universe (omit ticker) or single-entity (ticker set — spot-check ONE company's factor profile). Sector filter is SIC-derived (GICS-aligned, not licensed GICS — see `get_pit_universe`). Use this *instead of* `get_financial_ratios` when you want CROSS-SECTIONAL comparison (rank vs peers); use `get_financial_ratios` when you want one company's ratios over time. Supports survivorship-free POINT-IN-TIME screening via `as_of_date` (see the param). Full-universe screens omit rows that don't join to a company (null symbol); pass `exclude_outliers=true` to also drop shell-company rows with implausible factors. Available on every plan — sample returns the subset covered by the sample bucket.

NameTypeReqDescription
as_of_datestringPoint-in-time cutoff (YYYY-MM-DD). When set, the screen is reconstructed as of this date via factor_scores.accepted_at — each entity ranked at its latest-knowable period, zero look-ahead, survivorshi…
exclude_outliersbooleanOptional data-quality guard (default false). When true, additionally drops rows with implausible raw factor values (non-finite, or e.g. asset_turnover > 50x, |FCF/assets| > 10) from shell companies w…
limitintegerNumber of results to return (1-100). Defaults to 25.
offsetintegerZero-based row offset for paging within the requested `limit` window. At most 250 rows are inlined per call; if the response carries a `truncation` envelope, pass its `next_offset` here. Defaults to…
sectorstringFilter to a specific sector (case-insensitive partial match). E.g. 'Technology', 'Healthcare'.
sort_bystringWhich factor rank to sort by (see the enum). Defaults to composite_rank. An unrecognized column is rejected with INVALID_ARGUMENT (no silent fallback).
tickerstringIf provided, show only this ticker's factor scores (single-entity mode). Omit to screen the full universe.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
as_of_datestringPresent only when a point-in-time as_of_date was supplied
dataarrayyesRanked factor-score rows for the screened universe
lineageobjectProvenance 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…
notestring
pit_safebooleanPresent (and true) only when as_of_date was supplied — the screen was filtered by factor_scores.accepted_at with zero look-ahead
planstringyesCaller's data plan used to scope the screen
results_returnedintegeryes
sector_filterstringPresent only when a sector filter was applied
sort_bystringyes
tickerstringPresent only when a single-ticker lookup was requested
truncationobjectPresent only when the inline-row cap withheld rows. Page with `next_offset` (keep the same `limit`) or pull the full set via get_compute_ready_stream.

No examples provided.

search_companies ~536

Search for US public companies by name, ticker symbol, CIK (SEC identifier), or SIC industry code. Returns ticker, company name, sector, industry, exchange, and current S&P 500 membership status. Use this tool to resolve a company name to ticker/CIK before calling `get_company_fundamentals`, `get_valuation_metrics`, or other tools that require a ticker — they do not fuzzy-match company names. **Use this tool — NOT `get_pit_universe` — when the user asks about CURRENT S&P 500 members.** To list current S&P 500 members, call `search_companies({ is_sp500: true })` (the `is_sp500` filter is itself a valid search parameter, so no other input is required). This returns the live snapshot as of query time. Example: "List 5 current S&P 500 members" → call `search_companies({ is_sp500: true, limit: 5 })`. **Use `get_pit_universe` ONLY when the user explicitly needs a survivorship-free historical universe as of a specific past date** (e.g. "S&P 500 members as of March 2018"). If the user says "current," "today," "now," or gives no date, use `search_companies` instead. **Data details:** `sic_code` is the 4-digit SIC; `industry` is the human-readable label. `sector` is SIC-derived with GICS-style labels — NOT licensed GICS, so industrial conglomerates may map differently from official GICS (e.g. 3M → 'Health Care' by SIC vs Industrials by GICS). S&P 500 membership is sourced from index_membership.parquet (current SP500 = `index_name='SP500' AND removal_date IS NULL`). Available on all plans.

NameTypeReqDescription
cikstringSEC CIK identifier (exact match). E.g. '0000320193' for Apple.
is_activebooleanFilter to active (currently trading) companies only.
is_sp500booleanFilter to current S&P 500 members only.
limitintegerMaximum number of results to return (1–50). Defaults to 25.
querystringFree-text search over company name and ticker. Case-insensitive. E.g. 'Apple', 'AAPL', 'Microsoft', 'semiconductor'.
sic_codestring4-digit SIC industry code. E.g. '7372' for Prepackaged Software.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
companiesarrayyes
querystring|nullyes
results_returnedintegeryes

No examples provided.

search_reports ~153

Search the catalog of published research reports. All listings are free to read. Filters: free-text (matches title + abstract), ticker, report_type. Sort: `newest` (default) or `oldest`. Tier-gated: callers only see reports their plan tier can read.

NameTypeReqDescription
cursorstring
limitinteger
price_max_centsintegerReserved for future paid listings; currently ignored (all reports are free).
querystringFree-text query over title + abstract (case-insensitive).
report_typestringFilter by report type.
sortstring
tickerstringFilter to a single subject ticker.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
next_cursorstring|nullyes
reportsarrayyes

No examples provided.

set_agent_memory ~163

Store or update ONE durable memory entry (key → value) for this user so context survives across sessions — preferences, prior conclusions, working context. Replace semantics per key (reusing a key overwrites it). Do NOT store a number you would later cite as a fact: financial figures come from data tools and carry fact_ids; memory values are never treated as verified figures. Caps: 200 entries / 8000 chars per value. Tier: sp500+ (sample rejected).

NameTypeReqDescription
keystringyesMemory key (1–128 chars). Reusing an existing key overwrites its value.
valuestringyesThe note to remember (≤8000 chars). Never store a figure you would cite as a fact — those come from data tools.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
createdbooleanyes
memoryobjectyes

No examples provided.

sign_off_report ~346

Request a Valuein compliance certificate for one of the caller's OWN reports — a signed, publicly verifiable attestation at valuein.biz/verify/{id} that every fact the report cited was knowable at the time it was used (absence of lookahead bias). It attests provenance ONLY: it says nothing about whether the report's conclusions are correct or profitable, and must never be presented as though it did. ⚠️ IRREVERSIBLE AND OUTWARD-FACING. A certificate can be revoked (loudly — the URL keeps resolving and says so) but its signature stays cryptographically valid forever; there is no undo. It is classified RED, so a governed client will stage this for a named human to authorize rather than executing it autonomously. Propose it; do not claim to have certified anything yourself. PRECONDITION: every figure in the report must already be reviewed via `save_figure_review` — check with `list_figure_reviews` first. Refusals are PERMANENT outcomes, not transport errors, and name what to fix: `unreviewed_figures` (review them, then retry), `rejected_figures` (fix the report), `no_figures` (a report with nothing to verify is refused, never trivially passed), `unverifiable_citation`, `not_certifiable`. Do not retry a refusal unchanged. Only the report's author may sign it off. Tier: sp500+ (sample rejected).

NameTypeReqDescription
report_idstringyesIdentifier of the report to certify, as returned by create_report / list_my_reports / save_freeform_report. Must be authored by the calling customer.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
certificateobject
codestring
coverageobject
messagestring
okbooleanyes
reasonstring|null
verdictstring

No examples provided.

stage_action ~338

Propose an MCP tool call for human approval BEFORE running it. Call this — instead of calling the tool directly — whenever an autonomous or unattended caller (a scheduled standing agent, an unattended agent-runner run, or any MCP client operating without a human watching) is about to perform a write it knows or suspects is risky. The target tool's OWN registered risk hints (readOnlyHint/destructiveHint) decide the tier: GREEN (read-only) tools are never staged — this call is then a no-op passthrough (`result: 'not_required'`) and the caller should just invoke the tool directly. AMBER (reversible write to the caller's own state) and RED (destructive or outward-facing) tools ARE staged: this call does NOT execute anything — it only records the proposal and returns a `staged_action_id`. A human (or any client acting on the human's behalf) later calls `approve_staged_action` or `reject_staged_action` to decide it. Tier: sp500+ (sample rejected — guest has no saved state).

NameTypeReqDescription
originstringyesFree-form label identifying who/what is proposing this action — e.g. 'agent-runner:managed', 'claude-connector', 'cursor', or any caller-supplied identifier. Lets a human distinguish which session/ag…
tool_argsobjectThe exact arguments to replay through that tool if/when a human approves.
tool_namestringyesThe MCP tool this action would call once approved (e.g. 'save_thesis', 'create_alert', 'publish_report').
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
resultstringyes
risk_tierstringyes
staged_actionyes
staged_action_idstring|nullyes

No examples provided.

submit_artifact_feedback ~570

File EXPLICIT, structured feedback about a specific artifact you (or the model) produced — a chat message, a report, a thesis, a claim, a tool call, or the schema. Use this (not `submit_feedback`) when you can name WHAT was judged and HOW: pass `target_type` + `target_id` + a `sentiment` (positive/negative/correction), and optionally a structured `reason` (e.g. wrong_number, bad_citation, hallucinated_fact), the `request_id` of the turn, the disputed `fact_id`, and an `expected_value` (the value it SHOULD have been, in your words). Available on EVERY tier including guest/sample. This is a one-way intake channel — it records your assertion, it NEVER computes or validates a number, and `expected_value` is stored verbatim, never trusted as data. Retried submissions of the same judgement on the same `request_id` file exactly once. Returns the recorded feedback id.

NameTypeReqDescription
expected_valuestringOptional: what the value SHOULD have been, in your own words. Stored verbatim for triage — NEVER computed, restated, or trusted as data by Valuein.
fact_idstringOptional disputed `fact_id` (most useful for wrong_number / bad_citation).
idempotency_keystringOptional explicit dedupe key (1–64 chars). Used to dedupe when no `request_id` is supplied; safe to retry on a network error.
messagestringOptional free-text detail (≤4000 chars). What you expected and what happened.
reasonstringOptional structured error-mode: 'wrong_number', 'bad_citation', 'missing_data', 'wrong_company', 'formatting', 'hallucinated_fact', 'tool_error', 'coverage_gap', or 'other'.
request_idstringOptional `_meta` request id of the turn that produced the artifact. Folded into the idempotency key so a retried submission of the same judgement files once.
sentimentstringyesREQUIRED. How you judge the artifact: 'positive' (it was right/useful), 'negative' (it was wrong/unhelpful), or 'correction' (you are supplying the right value via `expected_value`).
target_idstringyesREQUIRED. The id of the artifact this feedback targets (a report id, thesis id, claim id, message id, tool-call id, or table/schema name).
target_typestringyesREQUIRED. The kind of artifact this feedback is about: 'chat_message', 'report', 'thesis', 'claim', 'tool_call', 'schema', or 'other'.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
feedback_idstringyes
statusstringyes

No examples provided.

submit_feedback ~666

File product feedback to the Valuein team — a bug, feature request, experience note, or data-quality issue — directly from the agent surface. Available on EVERY tier including guest/sample (no token required), so an agent can report a rough edge in-band without the human leaving the conversation. Provide a `category` and a `message` (other fields optional — see params). Authenticated callers can pass an `idempotency_key` so a retried submission files exactly once (the same key from the same account); guest/sample callers are never deduplicated. Returns a friendly acknowledgment you can relay to the user. Do NOT use this to query data; it is a one-way report channel.

NameTypeReqDescription
categorystringyesWhat kind of feedback this is: 'bug' (something broke), 'feature_request' (something missing), 'experience' (UX / clarity / docs), 'data_quality' (a wrong/missing/stale figure), or 'other'.
contextobjectOptional free-form context object (stored as JSON), e.g. { tool: 'get_company_fundamentals', ticker: 'AAPL', request_id: 'abc123' }. Avoid secrets.
expected_valuestringOptional caller-asserted correct value, in your own words. Stored verbatim for triage — NEVER computed or trusted as data.
fact_idstringOptional disputed `fact_id` (for wrong_number / bad_citation feedback).
idempotency_keystringOptional client-supplied key (1–64 chars). For authenticated callers, reusing the same key files the feedback exactly once — safe to retry on a network error. Ignored for guest/sample callers (no acc…
messagestringyesThe feedback body (1–4000 chars). Be specific: what you expected, what happened, and any reproduction steps. May contain the user's own words — it is stored for triage and never used for arithmetic.
reasonstringOptional structured error-mode reason: 'wrong_number', 'bad_citation', 'missing_data', 'wrong_company', 'formatting', 'hallucinated_fact', 'tool_error', 'coverage_gap', or 'other'.
request_idstringOptional `_meta` request id of the turn that produced the artifact, for correlation.
sentimentstringOptional sentiment of this feedback: 'positive' (worked well), 'negative' (something was wrong), or 'correction' (you are supplying the right value).
severitystringOptional impact classification: 'low', 'medium', or 'high'.
subjectstringOptional short title (≤140 chars) summarizing the feedback.
surfacestringOptional product surface the feedback concerns: 'mcp', 'workspace', 'sdk', 'dashboard', or 'api'.
target_idstringOptional id of the artifact this feedback targets (e.g. a report or thesis id).
target_typestringOptional kind of artifact the feedback targets: 'chat_message', 'report', 'thesis', 'claim', 'tool_call', 'schema', or 'other'.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
acknowledgmentstringyes
feedbackobjectyes

No examples provided.

test_alert ~108

Fire a synthetic notification through the alert's configured channel. Use this immediately after `create_alert` to verify the channel (email address valid / webhook URL reachable + HMAC verification on the receiver). The synthetic fire is logged as `attempt=1 channel='test'` so it doesn't affect the real fire counter — the next genuine match still fires normally.

NameTypeReqDescription
alert_idstringyesIdentifier of the alert to fire a synthetic test notification through, as returned by create_alert or list_alerts.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
alert_idstringyes
channel_typestringyes
error_messagestring|nullyes
outcomestringyes
status_codeyes

No examples provided.

test_rule ~150

Dry-run a rule's condition_expr against a SYNTHETIC trigger payload — reports whether it WOULD have fired, but NEVER dispatches the action (no report generated, no team run, no message sent, no inbox write). Use this immediately after create_rule to sanity-check the condition before it starts evaluating against real events. Pass `sample_payload_override` to test against specific field values (e.g. `{price_change_pct: 12}`).

NameTypeReqDescription
rule_idstringyesIdentifier of the rule to dry-run, from create_rule or list_rules.
sample_payload_overrideobjectMerged over the built-in synthetic payload for this rule's trigger_type — lets you test a specific value.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
action_typestringyes
notestringyes
reasonstringyes
rule_idstringyes
synthetic_payloadobjectyes
would_firebooleanyes

No examples provided.

unlink_claim_from_thesis ~102

Remove the link between a claim and a thesis. Idempotent — succeeds whether or not the link existed. The claim and thesis themselves are untouched. Tier: paid + free (sample rejected).

NameTypeReqDescription
claim_idstringyesIdentifier of the claim to unlink, as returned by save_claim or list_claims.
thesis_idstringyesIdentifier of the thesis to unlink the claim from, as returned by save_thesis or list_theses.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
unlinkedbooleanyes

No examples provided.

unpublish_claim ~89

Revert a published claim (public or unlisted) back to `private` — removes it from the author's /[handle] profile and excludes it from the public claim-accuracy aggregate. The inverse of publish_claim. Owner-only, idempotent. Tier: sp500+ (sample rejected).

NameTypeReqDescription
claim_idstringyesId returned by `save_claim` or `list_claims`.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
claimobjectyes

No examples provided.

unpublish_report ~49

Revert a published report (listed or unlisted) back to `private` visibility, removing it from the public catalog. Author-only. Idempotent.

NameTypeReqDescription
report_idstringyes
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
reportobjectyes

No examples provided.

unpublish_thesis ~90

Revert a published thesis (public or unlisted) back to `private` — removes it from the author's /[handle] profile and excludes it from the public reputation aggregate. The inverse of publish_thesis. Owner-only, idempotent. Tier: sp500+ (sample rejected).

NameTypeReqDescription
thesis_idstringyesId returned by `save_thesis` or `list_theses`.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
thesisobjectyes

No examples provided.

update_report ~393

Replace one or more sections of an existing report owned by the caller. Useful for authoring workflows where the agent's first draft (`create_report`) is refined by additional analysis before publishing. Pass `citations` for figures in the edited prose — they are MERGED into the report's existing set, never replacing it, so omitting them preserves the lineage already recorded. Bumps `version`. Does NOT change price / tier / visibility — use publish_report for those.

NameTypeReqDescription
abstractstringOptional new abstract.
citationsarrayLineage for figures in the edited sections. MERGED into the report's existing citations (first claim wins), never replacing them — so an editor autosave that sends none preserves every citation the r…
expected_versionintegerOptimistic concurrency check. If supplied and the current HEAD version is different, the call returns a `version_conflict` error WITHOUT writing. Pass the version you loaded so a concurrent agent edi…
remove_section_idsarraySection ids to DELETE outright. Without this, a merge-only update cannot express a deletion: an editor that drops a section simply omits it, the omitted section is preserved, and the caller sees a bu…
report_idstringyesIdentifier of the report to update, as returned by create_report or list_my_reports.
sectionsarrayyesSections to replace. Sections not listed are preserved — to DELETE one, name it in `remove_section_ids`. Section ids must match the existing payload.
titlestringOptional new title.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
archivedbooleanyes
previous_versionyes
reportobjectyes
versionintegeryes

No examples provided.

verify_fact_lineage ~631

Use this tool when the user asks BOTH what a financial figure is AND which filing reported it — e.g. "What was Apple's most recently reported revenue, and which 10-Q filed it?" or "Show me the accession ID for Tesla's latest net income." Returns a single fact plus its complete filing provenance: entity, concept, period, value, accession ID, filing URL, and form type (10-K, 10-Q, etc.). Use this INSTEAD OF `search_companies` when the user already names a company and wants a financial figure with its source filing — `search_companies` only resolves identifiers and returns no financial data. Use this INSTEAD OF `get_company_fundamentals` when the user explicitly wants the filing/form type or the accession ID — `get_company_fundamentals` returns metrics across periods but omits filing provenance. Two lookup modes: (1) by fact_id (deterministic SHA-256 identity) or (2) by concept name plus a ticker (most recently reported fact). Optionally pin a point-in-time cutoff via as_of_date (YYYY-MM-DD) — returns the latest filing accepted by SEC on or before that date (no look-ahead); check `_meta.pit_safe`. DURATION: a single 10-K tags BOTH a 12-month figure and a 3-month Q4 stub at the same period_end; on a tie this returns the longer (headline) window, and every result carries `period_type` and `period_span_days` so a 3-month stub is never mistaken for the annual figure. Provide either fact_id or concept (required). Returns FACT_NOT_FOUND if no matching fact exists. Available on all plans.

NameTypeReqDescription
as_of_datestringPoint-in-time cutoff (YYYY-MM-DD) used with `concept` — returns the latest fact whose 10-K/10-Q was accepted by SEC on or before this date (true PIT, no lookahead; any calendar date works). Canonical…
conceptstringStandard concept to look up the most recently known fact for (see the enum for the full fundamentals + capital-allocation set). Use this when you don't have a fact_id. Provide either concept OR fact_…
fact_idstringDeterministic fact identity hash: SHA-256(entity_id|accession_id|concept|period_end|unit). 64-char lowercase hex. Use this when you already have the hash from a previous query. Provide either fact_id…
period_endstring[DEPRECATED — pass `as_of_date` instead.] Filing-acceptance cutoff (YYYY-MM-DD) used with `concept`; despite the name it filters on filing accepted_at, not the returned fact's period_end. Kept one re…
tickerstringyesStock ticker symbol, e.g. AAPL, MSFT, BRK.B
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
lineageobjectFull provenance: fact_id, concept, value, unit, period_end, source accession, SEC EDGAR URL, form_type, accepted_at, plus duration context — period_start, period_span_days, and period_type (instant |…
lookup_bystringyesHow the fact was located: 'fact_id' or 'concept'
verifiedbooleanyesTrue when the fact was located and its provenance resolved

No examples provided.

watchlist_diff ~130

Return new SEC filings across the caller's watchlist tickers since a given date. Reads filing.parquet — does not call insider/ratio surfaces (use those tools separately if you need them). Concurrency-bounded; max 50 tickers per call.

NameTypeReqDescription
form_typesarrayFiling forms to include. Defaults to 10-K + 10-Q + 8-K.
namestringyesWatchlist name.
sincestringyesCutoff date (YYYY-MM-DD); the diff returns SEC filings accepted on or after this date across the watchlist's tickers.
NameTypeReqDescription
_metaobjectyesProvenance envelope — data lineage for every MCP response
filingsarrayyes
sincestringyes
tickers_scannedintegeryes
watchlist_namestringyes

No examples provided.