Skip to content
Agentmart
Submit a tool

Valuein — SEC EDGAR Fundamentals & Smart-Money Data

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

Connector by valuein · GitHub account verified by the MCP Registry

IndexedApache-2.0Remote (HTTP)★ 4
Write a review

Install

Works with Claude Code, VS Code, Cursor, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install connector/valuein-mcp-sec-edgar

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Remote endpoint

  • https://mcp.valuein.biz/mcp Remote (HTTP)

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

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

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
73 read · 34 write · 20 delete
Secrets
None asked for
Install scripts
Nothing to install (hosted)
Runs as
Hosted (remote endpoint)

Tools by what they do 127

From the running server's own tool list (tools/list) on Oct 25, 2026.

Read 73 · Look things up without changing anything.

  • compare_periods
  • compute_accretion_dilution
  • compute_dcf
  • compute_lbo
  • describe_schema
  • find_in_filing
  • forensic_audit
  • get_agent
  • get_agent_memory
  • get_agent_run
  • get_blockholders
  • get_capital_allocation_profile
Show 61 more tools
  • get_claim
  • get_company_fundamentals
  • get_compute_ready_stream
  • get_earnings_signals
  • get_financial_ratios
  • get_insider_sentiment
  • get_insider_transactions
  • get_institutional_holdings
  • get_manager_portfolio
  • get_morning_brief
  • get_peer_comparables
  • get_pit_universe
  • get_pit_valuation_ratios
  • get_price_history
  • get_report
  • get_report_version
  • get_research_file
  • get_sec_filing_links
  • get_smart_money_flow
  • get_sop
  • get_stock_price
  • get_thesis
  • get_top_holders
  • get_uploaded_document
  • get_valuation_metrics
  • get_watchlist
  • list_agent_runs
  • list_agents
  • list_citation_overrides
  • list_claims
  • list_claims_for_thesis
  • list_figure_reviews
  • list_filing_forms
  • list_filing_sections
  • list_my_reports
  • list_pending_approvals
  • list_public_claims_by_user
  • list_public_theses_by_user
  • list_report_versions
  • list_restatements
  • list_rules
  • list_scheduled_tasks
  • list_signal_inbox
  • list_signals
  • list_sops
  • list_theses
  • list_uploaded_documents
  • list_watchlists
  • match_derived
  • project_three_statement
  • read_filing_section
  • run_backtest
  • run_workflow
  • screen_universe
  • search_companies
  • search_reports
  • test_rule
  • verify_fact_lineage
  • verify_facts
  • verify_report_figures
  • watchlist_diff

Write 34 · Create, change, send or run things.

  • create_report
  • create_rule
  • create_signal
  • generate_comps_xlsx
  • generate_dcf_xlsx
  • generate_lbo_xlsx
  • generate_research_brief_docx
  • link_claim_to_thesis
  • mark_inbox_read
  • publish_claim
  • publish_report
  • publish_thesis
Show 22 more tools
  • reject_staged_action
  • render_report
  • run_agent
  • save_agent
  • save_citation_override
  • save_claim
  • save_figure_review
  • save_freeform_report
  • save_thesis
  • save_watchlist
  • schedule_task
  • score_claim
  • score_due_claims
  • score_due_theses
  • score_thesis_outcome
  • set_agent_memory
  • stage_action
  • submit_artifact_feedback
  • submit_feedback
  • test_signal
  • update_report
  • update_signal

Delete 20 · Delete, drop, revoke or wipe things.

  • approve_staged_action
  • cancel_scheduled_task
  • delete_agent
  • delete_agent_memory
  • delete_citation_override
  • delete_claim
  • delete_figure_review
  • delete_report
  • delete_rule
  • delete_signal
  • delete_thesis
  • delete_uploaded_document
Show 8 more tools
  • delete_watchlist
  • dismiss_inbox_item
  • restore_deleted
  • sign_off_report
  • unlink_claim_from_thesis
  • unpublish_claim
  • unpublish_report
  • unpublish_thesis

Network hosts it talks to 9

  • api.valuein.biz · found in code
  • data.valuein.biz · found in code
  • github.com · found in code
  • mcp.valuein.biz · found in remote endpoint, install command, code
  • sec.gov · found in code
  • valuein.biz · found in code
  • xbrl.fasb.org · found in code
  • xbrl.org · found in code
  • xbrl.sec.gov · found in code

Tools (127)

As the server listed them on Oct 25, 2026. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • approve_staged_actionApprove Staged Actioncan change or delete data

    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 tra…

  • cancel_scheduled_taskCancel Scheduled Taskcan change or delete data

    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. Undoable: `restore_deleted` with kind `scheduled_task` and this task_id re-queues it while its wake time is still in the future and the tier cap has room. Tier: sp500+ (sample rejected).

  • compare_periodsCompare Financial Periodsread-only

    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…

  • compute_accretion_dilutionCompute M&A Accretion/Dilutionread-only

    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-fo…

  • compute_dcfCompute Forward DCFread-only

    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), long-term marketable securities not netted; `result.net_debt_basis` says whether it was reported or an …

  • compute_lboCompute LBO Returns (IRR + MOIC)read-only

    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 equ…

  • create_reportCreate Research Report

    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 …

  • create_ruleCreate Rule

    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…

  • create_signalCreate Signal

    Persist a signal 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 when any ticker in a named watchlist files; takes the same optional `forms` filter as `filing_event`. * `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 s…

  • delete_agentDelete Agentcan change or delete data

    Delete one of the caller's own standing agents by id. Undoable: `restore_deleted` with kind `agent` and this agent_id brings it back as it was (enabled or paused). System agents (is_system:true on get_agent/list_agents — built-in agents the platform provisions) cannot be deleted and are rejected with a clear message. Idempotent in effect: deleting an already-deleted or unknown id returns NOT_FOUND. Tier: sp500+ (sample rejected).

  • delete_agent_memoryDelete Agent Memorycan change or delete data

    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. Undoable: `restore_deleted` with kind `agent_memory` and this key brings the note back (unless you have written that key again since). This removes only Y…

  • delete_citation_overrideDelete Citation Overridecan change or delete data

    Remove a user-authored citation correction by fact_id. Idempotent — deleting a missing override returns deleted=false without error. UNDOABLE: restore_deleted with kind 'citation_override' brings it back (unless a new save for the same fact_id replaced it). Once deleted, reports that previously rendered the corrected value revert to the canonical fact value on next regeneration. Tier: paid + free (sample rejected).

  • delete_claimDelete Claimcan change or delete data

    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).

  • delete_figure_reviewDelete Figure Reviewcan change or delete data

    Remove your own review mark for ONE figure in a report (Undo for save_figure_review), so the figure needs review again. Keyed on (report_id, figure_key). Idempotent: `deleted` is false when no mark existed. Owner-scoped — only your own marks are reachable; a report you do not own simply has no mark and answers `deleted: false`. Tier: sp500+ (sample rejected).

  • delete_reportDelete (Soft) Research Reportcan change or delete data

    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.

Show 112 more tools
  • delete_ruleDelete Rulecan change or delete data

    Delete a rule by id (from create_rule/list_rules) — hides it from the catalog and removes it from the evaluator's scan index, so it stops firing immediately. UNDOABLE: restore_deleted with kind 'rule' brings it back and resumes evaluation (subject to the signal cap). Rules are immutable — to change one, delete then create_rule. Idempotent. Tier: sp500+ (sample rejected).

  • delete_signalDelete Signalcan change or delete data

    Soft-delete a signal by its id (from create_signal/list_signals): status flips to `deleted` and it is removed from the cron evaluator index so it stops firing. Signals are immutable — to change one, delete then create_signal. Idempotent. Tier: sp500+ (sample rejected).

  • delete_thesisArchive Saved Thesiscan change or delete data

    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).

  • delete_uploaded_documentDelete an Uploaded Documentcan change or delete data

    Delete an uploaded document before its 24h TTL. UNDOABLE: restore_deleted with kind 'uploaded_document' brings it back while it is still within its 24h TTL and its file exists. Deleting a missing/already-expired/foreign id returns deleted:false rather than an error.

  • delete_watchlistArchive Watchlistcan change or delete data

    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).

  • describe_schemaDescribe Data Schemaread-only

    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.

  • dismiss_inbox_itemDismiss Inbox Itemcan change or delete data

    Soft-delete a single inbox item by its id (from list_signal_inbox) — not a signal id; sets `dismissed_at`. The row stays queryable via `list_signal_inbox(include_dismissed=true)` for audit. Undoable: `restore_deleted` with kind `inbox_item` and this inbox_id un-dismisses it. Idempotent. Tier: sp500+ (sample rejected).

  • find_in_filingFind in Filingread-only

    Find a statement, note, heading or phrase inside a 10-K / 10-Q (or amendment) and get where to read it, like grep over the filing: 'Consolidated Balance Sheets', 'goodwill impairment', 'Note 7', 'Risk Factors'. Searches the same text read_filing_section serves, so each hit's `key` and `offset` are the arguments to read it there. MATCHING: case-insensitive; words may be split by line breaks, table pipes or punctuation ('Note 7 – Debt' = 'NOTE 7. DEBT'); '&' = 'and'; a word also finds longer forms ('sheet' finds 'Sheets'); a number is whole ('Note 1' never finds 'Note 12', 'Item 7' never 'Item 7…

  • forensic_auditForensic Audit (Beneish + Sloan + Solvency)read-only

    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+.

  • generate_comps_xlsxGenerate Peer Comparables Workbook (xlsx)

    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` = 'unver…

  • generate_dcf_xlsxGenerate DCF Workbook (xlsx)

    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 …

  • generate_lbo_xlsxGenerate LBO Workbook (xlsx)

    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 `…

  • generate_research_brief_docxGenerate Research Brief (docx)

    Render a structured research brief into a professionally-styled Word document — a branded masthead-first page (Valuein letterhead: brand rule, wordmark, 'EQUITY RESEARCH' kicker + date, then the ticker eyebrow, the title as hero, and the named analyst's byline), the body (abstract, optional snapshot table with figures in mono, markdown sections incl. GFM tables, and a citations table with clickable SEC EDGAR links), with a running footer (ticker, 'Built on Valuein · valuein.biz', page number, a single disclosure line) repeated on every page. No embedded charts in v1; pair with `generate_dcf_xl…

  • get_agentGet Agentread-only

    Fetch full detail for one of the caller's own standing agents by id (from save_agent/list_agents). Returns `found: false` (not an error) for an unknown id OR an id belonging to another customer — there is no distinguishing signal, by design, matching get_agent_run's posture. Tier: sp500+ (sample rejected).

  • get_agent_memoryGet Agent Memoryread-only

    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).

  • get_agent_runGet Agent Runread-only

    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).

  • get_blockholdersBlockholders (SC 13D / 13G)read-only

    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.

  • get_capital_allocation_profileCapital Allocation Profileread-only

    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…

  • get_claimGet Claimread-only

    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).

  • get_company_fundamentalsCompany Fundamentalsread-only

    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 the…

  • get_compute_ready_streamCompute-Ready Streamread-only

    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, including the 'valuation' ratio category — price multiples, graham_number, ncav_per_share), filing (SEC filing metadata), references …

  • get_earnings_signalsEarnings Signalsread-only

    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 whethe…

  • get_financial_ratiosFinancial Ratiosread-only

    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…

  • get_insider_sentimentInsider Sentiment (composite)read-only

    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.

  • get_insider_transactionsInsider Transactionsread-only

    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.

  • get_institutional_holdingsInstitutional Holdings (by issuer)read-only

    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.

  • get_manager_portfolioManager Portfolio (13F by filer)read-only

    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.

  • get_morning_briefGet Morning Briefread-only

    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).

  • get_peer_comparablesPeer Comparablesread-only

    Get ratio-based peer comparison for a company and its closest competitors. Peers are selected by matching 2-digit SIC industry code. Returns pipeline-computed ratios from up to 10 peers alongside the subject company for direct benchmarking. Ratio categories: profitability, liquidity, leverage, efficiency, per_share, owner_earnings, valuation. TTM (trailing twelve months) ratios are used when available for the most current view. The exact 4-digit code is matched first, then the 3- and 2-digit groupings, with S&P 500 members first within each. Each company appears once, under its main listed sha…

  • get_pit_universePoint-in-Time Universeread-only

    Use this tool to answer questions about historical index membership — e.g. "Was Company X in the S&P 500 on date Y?" or "Which companies were in the Russell 2000 on 2010-01-01?" Use this INSTEAD OF `search_companies` when the question involves a specific historical date or whether a company was an index member in the past — `search_companies` only returns current membership and cannot answer historical questions. Returns a survivorship-free universe valid on a given as_of_date (only companies that existed and were members on that exact date — no hindsight; [) interval semantics). To check one…

  • get_pit_valuation_ratiosPoint-in-Time Valuation Ratiosread-only

    Current and historical valuation multiples for a company. Omit `as_of_date` and it returns today's P/E, P/S, P/B, EV/EBITDA, EV/Revenue and FCF yield, computed from the latest EOD close and the latest TTM financials. Use it for any "what is X's P/E " / "how is X valued right now" question — never derive a multiple yourself by dividing a price by an earnings figure; that is exactly the arithmetic the provenance contract forbids. Pass `as_of_date` to get the same snapshot on a specific historical date — zero look-ahead bias (the 'Compustat + CRSP merge' pattern). The EOD close is sourced from st…

  • get_price_historyPrice History (date range)read-only

    Daily EOD bar series (OHLCV) for a company over a date range. Returns up to 252 trading-day bars oldest-first — one bar per trading day. Each bar carries: open / high / low / close (raw, unadjusted), total_return_index (dividends reinvested and splits neutralized, forward-compounded from an arbitrary base so only RATIOS of it are meaningful — TOTAL RETURN BETWEEN TWO DATES IS tri_b / tri_a - 1; it is PIT-immutable, so a later dividend appends rather than restating), adjusted_close (a back-adjusted series — SPARSELY POPULATED, usually null, and retroactively restated on each corporate action so…

  • get_reportGet Research Reportread-only

    Fetch the current HEAD of a report by id. `format=markdown` returns the rendered body, `format=json` returns the full structured payload (sections + citations + report-type-specific data), `format=preview` returns abstract-only. Authors see any of their own reports; non-authors only get `preview` of listed reports and need the report's required tier for full bodies. Sample-tier non-authors are downgraded to preview regardless of input. For an archived prior version use `get_report_version`, not this tool.

  • get_report_versionGet Report Versionread-only

    Author-only fetch of a specific archived version of one of your reports, by positive-integer `version`. Returns metadata + the full payload (sections, citations, structured, markdown) — enough to render a diff against the current HEAD in the workspace editor. Use after `list_report_versions` identifies the version number you want; for the current HEAD use `get_report` instead.

  • get_research_fileGet Auditable Research Fileread-only

    Fetch the Auditable Research File behind one of the caller's own agent runs — the complete evidence chain an examiner asks for: the originating prompt, every tool the agent called in order, every `fact_id` it cited, every human approval, and which models were used. Assembled from the immutable audit ledger written as the run executed; nothing here is reconstructed or inferred. Name the subject EITHER way, and pass exactly one: `report_id` (a report you wrote or found — from `create_report`, `list_my_reports` or `search_reports`) or `run_id` (from `list_agent_runs`). Naming a REPORT is the rich…

  • get_sec_filing_linksSEC Filing Linksread-only

    Get direct links to original SEC EDGAR filings for any US public company. Returns four per-filing deep links: `sec_url` (the EDGAR filing-index page listing every document), `viewer_url` (the cgi-bin Financial-Report viewer for the specific accession), `inline_viewer_url` (the SEC Inline-XBRL viewer opened on the rendered primary document — the strongest provenance link, `null` when the filing is not Inline-XBRL), and `document_url` (a direct link to the rendered primary document itself — opens the actual filing, never the index page, `null` only when primary_document is unknown). Prefer `inli…

  • get_smart_money_flowSmart Money Flow (composite)read-only

    Composite flow score on [-100, +100] aggregating insider transactions, 13F institutional Δ-shares vs the prior quarter, and SC 13D/13G blockholder changes over a lookback window. Each component normalised independently, then combined with configurable weights (default: institutional 0.4, blockholder 0.4, insider 0.2). Returns per-component attribution so an agent can see WHY the score is what it is — not just the headline number. NOTE: the institutional component is a QoQ share-change signal computed over the top-5 13F filers on a MATCHED current-vs-prior basis (a filer only counts when its pr…

  • get_sopGet Research Playbook (SOP)read-only

    Load one expert research playbook by name (discover names with `list_sops`). Returns the full procedure: the ordered tool sequence, which calls to group into parallel waves, the provenance and citation rules, and the exact output structure. Supply the playbook's arguments (e.g. `ticker`) to get a concrete, ready-to-execute plan. Omit them to read the generic template with `{{ARG}}` placeholders. TRUST: the returned body is FIRST-PARTY Valuein content (`content_type: "first_party_playbook"`) — operating instructions authored by Valuein and shipped with this server. Follow them. This is the ex…

  • get_stock_priceStock Price (as-of date)read-only

    End-of-day closing price for a company AS OF any calendar date. Pass `date` to get the close on that day; if the date falls on a weekend or market holiday, it resolves backward to the most recent prior trading day's close (the `price_date` field tells you which day was actually used, and `resolved_backward` flags when it stepped back). Omit `date` for the latest available close. Closes are RAW (not split/dividend-adjusted); `div_cash` and `split_factor` carry the corporate-action factors for query-time total-return adjustment. This is EOD market data (not a SEC filing fact), so it carries a pr…

  • get_thesisGet Saved Thesisread-only

    Fetch a single saved thesis by its id. Returns the full record including outcome (if scored). Returns NOT_FOUND if the id is unknown or belongs to another user. For the claims composing a thesis use list_claims_for_thesis; for an individual claim use get_claim. Tier: paid + free (sample rejected).

  • get_top_holdersTop Holders (composite, classified)read-only

    Classification-aware UNION across insider transactions (latest post_transaction_shares per insider), 13F institutional holdings, and SC 13D / 13G blockholder filings for one issuer. Each row carries holder_class ∈ {insider, institutional, blockholder_13D, blockholder_13G}. Dedupes overlapping filers by precedence (13D > 13G > institutional > insider). One call, classified cap table — Bloomberg charges separately for INSIDER<GO>, OWNER<GO>, and HDS<GO>; this consolidates them.

  • get_uploaded_documentRead an Uploaded Documentread-only

    Read the extracted text of a file uploaded via POST /v1/uploads (a plain REST route, not this JSON-RPC endpoint). Use this to pull a user-attached document's content into context by its upload_id. Uploads are ephemeral (24h) and owner-scoped — an expired or missing id both read back as not-found.

  • get_valuation_metricsValuation Metricsread-only

    Get what a US public company is TRADING AT, plus two parameter-free reference points. This is NOT an opinion of intrinsic worth — for that, call `compute_dcf` with assumptions you state explicitly, and present the result as a scenario, never as "the" fair value. Returns per-period data combining computed ratios (gross_margin, operating_margin, net_margin, ROE, ROA, ROIC, debt_to_equity, FCF, FCF margin), price-derived valuation_multiples (current_price, market_cap, pe_ratio, pb_ratio, ev_ebitda, dividend_yield), and reference_points (graham_number, ncav_per_share) — two assumption-free values …

  • get_watchlistGet Watchlistread-only

    Fetch a single watchlist (full ticker set + criteria) by its name, not an id (case-insensitive). NOT_FOUND if the name is unknown to this user. Tier: sp500+ (sample rejected).

  • link_claim_to_thesisLink Claim to Thesis

    Attach a claim to a thesis with a role: 'supports' (the claim, if true, strengthens the thesis), 'refutes' (if true, weakens it — track disconfirming evidence first-class), or 'context' (relevant but not directional). Idempotent — re-linking updates the role. A claim can support one thesis and refute another. This composes theses from claims; it does NOT make the thesis score a function of claim scores (they're scored independently). Tier: paid + free (sample rejected).

  • list_agent_runsList Agent Runsread-only

    List the caller's own standing-agent runs, newest first — status, goal, cost, and timing for each. A run may have been kicked off by this same agent (e.g. via create_rule's run_team action, a schedule_task wake, or run_agent) OR by the customer's own Workspace UI; this tool lets any MCP client check on ANY run belonging to the authenticated customer regardless of what triggered it. Filter by an exact `status` match (e.g. "completed", "failed", "running"), and/or by `agent_id` (from save_agent/list_agents) to see only that agent's run history. Tier: sp500+ (sample rejected).

  • list_agentsList Agentsread-only

    List the caller's own standing agents (id, name, goal, tickers, agent_type, trigger config, schedule, enabled state, last/next run). Optionally filter by `agent_type` ("workflow" or "autonomous"). Use get_agent for one agent's full detail, list_agent_runs for run history, or run_agent to fire one now. Tier: sp500+ (sample rejected).

  • list_citation_overridesList Citation Overridesread-only

    Author-only newest-first listing of the caller's citation corrections. Filterable by ticker (e.g. all AAPL corrections) or by a single fact_id (returns 0 or 1 row). Pair with `save_citation_override` and `delete_citation_override`. Sample tier rejected. Agent use: call with `ticker` to introspect what corrections the user has previously applied on that ticker — useful for system prompts that respect prior corrections during regeneration.

  • list_claimsList Claimsread-only

    List the caller's saved claims, most-recent-first, with AND-composed filters and cursor pagination. Filter by ticker, claim_type (assertion/prediction/judgment), tag, or lifecycle status (open/confirmed/refuted/expired/stale/needs_review). Archived claims are excluded unless include_archived is set. Tier: all paid + free tiers (sample rejected).

  • list_claims_for_thesisList Claims for Thesisread-only

    List the claims composing a thesis, each with its role (supports/refutes/context). This is how you read a thesis as the structured argument it is — its supporting and disconfirming claims with their current statuses. Archived claims are omitted. Tier: paid + free (sample rejected).

  • list_figure_reviewsList Figure Reviewsread-only

    List every figure review recorded for one report, plus a state-count summary — the coverage view for 'which figures in this report still need a human?' A report with no reviews yet returns an empty list and an all-zero summary; that is a legitimate answer, not an error. Owner-scoped — only returns your own review marks. Tier: sp500+ (sample rejected).

  • list_filing_formsFiled Form Typesread-only

    Which SEC form types each of up to 200 companies filed in the last N months (default 24), as a count per form, in ONE call. Use it to offer only forms a company set actually files (10-K, 10-Q, 20-F, 40-F, 6-K, 8-K, DEF 14A, ...). Amendments count toward their base form (10-K/A is a 10-K). A company that cannot be read (unknown to your plan, or a failed read) comes back `readable: false` with no forms: that means 'could not look', never 'files nothing'. Available on all plans.

  • list_filing_sectionsList Filing Sectionsread-only

    Table of contents of a 10-K / 10-Q (or 10-K/A, 10-Q/A) so an agent can read the filing's WORDS: returns the form, filing/period/acceptance dates, the primary-document URL, and every section found with its `key`, `title`, `char_count` and a short `first_line`. 10-K keys are the Item numbers (1, 1A, 1B, 1C, 2-6, 7, 7A, 8, 9, 9A, 9B, 9C, 10-16 when present); 10-Q keys are I-1..I-4 and II-1, II-1A, II-2, II-5, II-6; financial-statement notes are `note-N` (listed separately under `notes`; a filer that puts its statements under Item 15 has them there); an amendment opens with `explanatory-note`. `do…

  • list_my_reportsList My Research Reportsread-only

    Cursor-paginated newest-first listing of the caller's own reports (owner-scoped). Filters compose with AND; `status` defaults to 'ready' so pass status='draft' or 'all' to see drafts. Use `cursor` from the previous response's `next_cursor` to fetch the next page (limit max 100). Sample tier rejected (no per-author state).

  • list_pending_approvalsList Pending Approvalsread-only

    List the caller's own staged actions still awaiting a human decision (status='proposed'), newest-first. Use this to check what an autonomous run has queued up before you approve or reject it with `approve_staged_action` / `reject_staged_action`. Tier: sp500+ (sample rejected).

  • list_public_claims_by_userList Public Claims by Userread-only

    Return the PUBLIC claims + claim-accuracy reputation for a user identified by Stripe customer_id. Used by the /[handle] profile to render an analyst's claim-level track record — a separate signal from thesis-outcome accuracy. Only visibility='public' claims surface; private state never leaks. Accuracy is confirmed/(confirmed+refuted) over resolved claims; null when n < 5. Sample tier rejected; sp500+ only.

  • list_public_theses_by_userList Public Theses by Userread-only

    Return the PUBLIC theses + reputation aggregate for a user identified by Stripe customer_id. Used by the /[handle] profile page to render an analyst's track record. Only entries with visibility='public' are surfaced — private theses never leak. Reputation is correct/(correct+wrong) over graded theses; null when n < 5 (sample too small). Sample tier rejected; sp500+ only.

  • list_report_versionsList Report Versionsread-only

    Author-only newest-first listing of a report's archived version history. Each entry summarises what changed (sections edited, etc.) so the workspace UI can render a clickable history without loading every artifact. Pair with `get_report_version` to fetch a specific version's content for diffing against HEAD.

  • list_restatementsRestatement Radar Feedread-only

    List financial-statement restatements — facts a later SEC filing materially changed (>0.5% swing) from what was originally reported. Each event carries the as-reported value, the restated value, the signed delta, a severity bucket, the RAW XBRL tag both filings used (the diff is same-tag, so it is apples-to-apples and checkable), both filings' accession numbers for one-click lineage, an analyst-importance tier (1 headline / 2 statement line / 3 footnote), the fact's rank within the company's restatement history, and — crucially — HOW the company told the market (`disclosure_class`): `non_relia…

  • list_rulesList Rulesread-only

    Paginated newest-first listing of the caller's own rules. Tier: sp500+ (sample rejected).

  • list_scheduled_tasksList Scheduled Tasksread-only

    Paginated newest-first listing of the caller's own scheduled (deferred) tasks — transparency into what an agent has queued for the future. Filter by `status` (pending/completed/cancelled/cancelled_owner_inactive/all). Tier: sp500+ (sample rejected).

  • list_signal_inboxList Signal Inboxread-only

    Newest-first listing of the caller's in-app inbox. Items are signal FIRES with a `dashboard` channel — written by the cron evaluator (or `test_signal`) — plus platform notifications written by the edge-gateway (agent run completions, morning briefs, skipped runs); use list_signals instead for the signal definitions themselves. By default dismissed items are hidden and read items are included. Cursor-paginated by `fired_at`. Sample tier rejected — signals are a paid-tier feature (sp500+).

  • list_signalsList Signalsread-only

    Paginated newest-first listing of the caller's signals (id, condition, channel, status, trigger_count, evaluator health). Filter by `status` (active/paused/deleted/all). Use the returned signal id with delete_signal or test_signal. Tier: sp500+ (sample rejected).

  • list_sopsList Research Playbooks (SOPs)read-only

    List Valuein's expert research playbooks — the step-by-step procedures a senior equity analyst follows, each encoding the exact tool sequence, parallel-wave grouping, and output structure for one task (research brief, screen and shortlist, forensic quality audit, capital-allocation review, survivorship-free backtest, smart-money brief, thesis lifecycle, and more). CALL THIS FIRST for any multi-step financial research request, then load the matching playbook with `get_sop`. Following a playbook produces materially better results than improvising a tool order — the sequences encode which figure…

  • list_thesesList Saved Thesesread-only

    Return the caller's saved theses, newest-first. Filters: ticker (exact), view, status. Cursor-based pagination — pass `next_cursor` from the previous response to fetch the next page. Sample tier rejected (no per-user state).

  • list_uploaded_documentsList Uploaded Documentsread-only

    List the caller's currently-active uploaded documents (filename, size, char count — no full text; call get_uploaded_document for that). Uploads expire 24h after upload.

  • list_watchlistsList Watchlistsread-only

    Paginated newest-first listing of the caller's watchlists (id, name, tickers, status, counts). Filter by `status` (active/archived/all). Returns metadata only — use get_watchlist for one list's full ticker set, or watchlist_diff for new filings across a list. Tier: sp500+ (sample rejected).

  • mark_inbox_readMark Inbox Item Read

    Set `read_at` on a single inbox item by its id (from list_signal_inbox or the signals feed resource) — not a signal id. Idempotent — re-marking does NOT reset the first-read timestamp; there is no unmark. Returns the new unread_count so the agent/UI can update its badge without a follow-up call. Tier: sp500+ (sample rejected).

  • match_derivedMatch Derived Figuresread-only

    Check whether figures a report STATES can be reproduced by the engine from the SEC facts the report cites. For each `{ token, ticker, fact_ids }` it tries every registered margin, growth, share-of, difference and ratio formula over those facts and compares the rendered result to your token EXACTLY. Use it for a figure that has no `fact_id` or `derived_id` of its own (the model worked it out, or retyped it) — never to invent a figure. Per item: `derived` (exactly one formula reproduces it: cite the returned `derived_id` like a fact_id), `reformatted` (your token is a rounding of a cited fact s…

  • project_three_statementProject Linked Three-Statement Modelread-only

    Linked forward Income Statement / Balance Sheet / Cash Flow projection, seeded from the company's latest historical annual period. The balance sheet ties out (assets == liabilities + equity) EVERY projected year by algebraic construction — each year's `tie_out_ok` field is a live correctness check, not decoration. Interest is computed on beginning-of-period debt balances (no circular cash-sweep/revolver solve — deterministic by design). Gross margin, operating margin, and the combined D&A + working-capital adjustment are held at the seed period's ratio-of-revenue unless overridden; interest_ra…

  • publish_claimPublish Claim

    Make a saved claim discoverable by flipping its visibility: `public` (default) surfaces it on the author's /[handle] profile and counts toward their claim-accuracy reputation; `unlisted` makes it reachable at a known direct link but keeps it off the profile. Use AFTER save_claim to promote an existing claim. Idempotent. Pair with unpublish_claim to revert to private. Tier: sp500+ (sample rejected).

  • publish_reportPublish Report (free)

    Publish a report for FREE at `listed` or `unlisted` visibility to build your public author profile. `listed` makes it discoverable via `search_reports` (keyword catalog search); `unlisted` keeps it out of the catalog but accessible by direct id (shareable link). Author can set a `tier_required` no higher than their own plan. All listings are free today (omit `price_cents` or set it to 0); paid listings are a future capability. ⚠️ VERIFIED BEFORE IT GOES OUT: every figure is checked against the filing it cites, and the publish is REFUSED (`FIGURES_UNVERIFIED`) if any number the filing contradic…

  • publish_thesisPublish Thesis

    Make a saved thesis discoverable by flipping its visibility: `public` (default) surfaces it on the author's /[handle] profile and counts toward their reputation aggregate; `unlisted` makes it reachable at a known direct link but keeps it off the profile. Use AFTER save_thesis to promote an existing thesis (save_thesis sets visibility only at creation). Idempotent. Pair with unpublish_thesis to revert to private. Tier: sp500+ (sample rejected).

  • read_filing_sectionRead Filing Sectionread-only

    Read one section of a 10-K / 10-Q (or amendment) as plain text: MD&A (10-K `7`, 10-Q `I-2`), Risk Factors (`1A`, `II-1A`), Legal Proceedings, Controls, a financial-statement note (`note-3`), or the whole filing (`document`) when an Item is only a page pointer. To jump to a phrase, call find_in_filing and read its hit's `key` and `offset` here. Get valid keys and sizes from list_filing_sections. Tables come back as plain pipe rows (`label | value | value`); no HTML is ever returned. Long sections are PAGED, never silently cut: each call returns `offset`, `returned_chars`, `next_offset` (null on…

  • reject_staged_actionReject Staged Action

    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).

  • render_reportRender Report Download URL

    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` and `format=pdf` return the SAME branded research-note design in the two media: a masthead-first page 1 (Valuein letterhead — brand rule, wordmark, 'EQUITY RESEARCH' kicker + date), the ticker eyebrow and title, the named analyst's byline, then the body (abstract, sections with full markdown incl. GFM tables, citations table with clickable SEC EDGAR links) and a running footer (ticker, 'Built on Valuein · valuein.biz', page N of M…

  • restore_deletedRestore a Deleted Item

    Undo a delete: restores a thesis, watchlist, signal, claim or report that `delete_*` archived, a rule, citation override or uploaded document that `delete_*` removed, a memory entry removed by `delete_agent_memory` (id = its key), an inbox item hidden by `dismiss_inbox_item` (id = inbox_id), a task cancelled by `cancel_scheduled_task` (id = task_id), or a standing agent removed by `delete_agent` (id = agent_id). The record returns to the state it held before the delete — a closed thesis comes back closed, a paused signal comes back paused. When the item was deleted before the server began reco…

  • run_agentRun Agent

    Fire one of the caller's own standing agents now, out of band from its schedule. For agent_type="autonomous" this costs money — it settles against the owner's own BYO LLM key first, falling back to the managed wallet only if funded; agent_type="workflow" runs are free/deterministic. This call can be a legitimate NO-OP: it may report a run was SKIPPED for a real business reason (no usable compute lane / frozen or inactive account / a missing recipe or team / no tickers configured) rather than firing one — that is reported as an error with a specific, actionable message, not silently swallowed. …

  • run_backtestRun Bounded Factor Backtestread-only

    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 p…

  • run_workflowRun Saved Workflowread-only

    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 c…

  • save_agentSave Agent

    Create or update a standing agent — a saved {goal + tickers + schedule} that fires either a fixed step recipe (agent_type="workflow", free/deterministic) or an AI-directed team (agent_type="autonomous", charged — settles against the owner's BYO key first, falling back to the managed wallet only if funded). Upsert semantics: omit `agent_id` to CREATE a new agent; pass an existing `agent_id` to UPDATE it. There is no separate update_agent — this does both, matching save_watchlist/save_thesis's house style. `agent_type` is STRUCTURAL and immutable: always required, and on an update it is verified…

  • save_citation_overrideSave Citation Override

    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 INVALID_ARGUMENT (its `resolution_error_code` says why the lookup failed) and nothing is persisted. …

  • save_claimSave Claim

    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` …

  • save_figure_reviewSave Figure Review

    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 — for a dataset-backed figure use `fact:{fact_id}#{figure}`, where {figure} is the number as the report writes it, lowercased and whitespace-collapsed (e.g. `fact:f_rev#$402.83b`). The value matters: one fact can back two numb…

  • save_freeform_reportSave Markdown as a Draft Report

    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.

  • save_thesisSave Investment Thesis

    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 reje…

  • save_watchlistSave Watchlist

    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. Optional `weights` (ticker → relative number) marks a list the user HOLDS rather than merely follows; omit it entirely for an ordinary watchlist, and omit it on an edit to leave existing weights untouched.

  • schedule_taskSchedule Task

    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…

  • score_claimScore Claim

    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).

  • score_due_claimsScore Due Claims (bulk auto-grader)

    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.

  • score_due_thesesScore Due Theses (bulk auto-grader)

    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.

  • score_thesis_outcomeScore Thesis Outcome

    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.

  • screen_universeScreen Universe by Factor Scoresread-only

    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-derive…

  • search_companiesSearch Companiesread-only

    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 itsel…

  • search_reportsSearch Published Reportsread-only

    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.

  • set_agent_memorySet Agent Memory

    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).

  • sign_off_reportSign Off Reportcan change or delete data

    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 clas…

  • stage_actionStage Action

    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 (reversib…

  • submit_artifact_feedbackSubmit Artifact Feedback

    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` WITH its `ticker`, and an `expected_value` (the value it SHOULD have been, in your words). Available on EVERY tier including guest/samp…

  • submit_feedbackSubmit Feedback

    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 t…

  • test_ruleTest Rule (dry run)read-only

    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}`).

  • test_signalTest Signal (synthetic fire)

    Fire a synthetic notification through EVERY channel the signal is configured with. Use this immediately after `create_signal` to verify the channels (email address valid / webhook URL reachable + HMAC verification on the receiver). The synthetic fire is logged with a `[TEST]` summary so it affects neither the real fire counter nor the one-email-per-day cap — the next genuine match still fires normally. `channel_type`/`outcome` describe the FIRST channel; `channel_results` lists every channel's own outcome.

  • unlink_claim_from_thesisUnlink Claim from Thesiscan change or delete data

    Remove the link between a claim and a thesis. Idempotent — succeeds whether or not the link existed. The claim and thesis themselves are untouched. Undoable: the response carries `prior_role` (supports/refutes/context, null when there was no link), so calling `link_claim_to_thesis` with the same thesis_id, claim_id and role re-creates the link exactly. Tier: paid + free (sample rejected).

  • unpublish_claimUnpublish Claim (back to private)can change or delete data

    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).

  • unpublish_reportUnpublish Report (back to private)can change or delete data

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

  • unpublish_thesisUnpublish Thesis (back to private)can change or delete data

    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).

  • update_reportUpdate Report Sections

    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.

  • update_signalUpdate Signal

    Edit an existing signal IN PLACE — rename it, change what it watches, or change where it delivers — keeping its id, its fire history (`trigger_count`, `last_triggered_at`) and every inbox item and delivery already tied to it. Pass only the fields to change; omitted fields keep their stored value. `channels` REPLACES the whole delivery list (1–4, distinct type+target); a webhook entry that keeps its URL and omits `hmac_secret` keeps the stored secret. A soft-deleted signal is refused — `restore_deleted` first. Same tier rules as `create_signal`: `price_move` / `fundamental_change` / `watchlist_…

  • verify_fact_lineageVerify Fact Lineageread-only

    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…

  • verify_factsVerify Facts (batch)read-only

    Resolve MANY cited facts to their SEC filings in ONE call — the batch form of `verify_fact_lineage`. Use this whenever you are checking a LIST of figures rather than a single number: reviewing a report's citations, auditing a thesis's evidence, or confirming every figure in a draft before you sign it. A 30-figure report is one call here and 30 calls with `verify_fact_lineage`. Use `verify_fact_lineage` INSTEAD when you have one figure, or when you do not have a fact_id and need the concept-name lookup (`concept` + `as_of_date`) — this tool resolves by fact_id only. A MISS IS DATA, NOT A FAIL…

  • verify_report_figuresVerify Report Figuresread-only

    Check EVERY number in one of your own reports against the filing it cites, in one call. Returns a verdict per figure: `matches` (the prose quotes the filing's own rendered string), `differs` (positive evidence the filing says something else — the report is wrong), or `not_checkable` (no comparison was possible). CALL THIS BEFORE `publish_report` OR `sign_off_report`. `publish_report` REFUSES a report carrying an unreviewed `differs`, so running this first is how you find out what to fix instead of being refused. TO FIX A `differs`: rewrite the figure by quoting `verdict.display` character-for-…

  • watchlist_diffWatchlist Diffread-only

    Return new SEC filings across a set of companies since a given date. Name the companies EITHER with `name` (a watchlist you have already saved) OR with `tickers` (a list you are holding right now) — pass exactly one. Use `tickers` for an ad-hoc question: there is no need to create a watchlist just to ask, and you should not, because a saved watchlist is a durable record in the user's account. Reads filing.parquet — does not call insider/ratio surfaces (use those tools separately if you need them). Scans at most 50 companies per call and reports `truncated` when you asked about more; batch a la…

Compare and alternatives

    Featured in

    Signals

    Stars
    4
    Forks
    0
    Open issues
    0
    Last commit
    Oct 23, 2026 (5 days ago)
    Last release
    Oct 23, 2026 (5 days ago)

    From GitHub (fetched Oct 24, 2026).

    Details

    Registry name
    io.github.valuein/mcp-sec-edgar
    Version
    3.10.0
    Auth
    Auth not stated
    License
    Apache-2.0
    First seen
    Oct 24, 2026
    Last checked
    Oct 24, 2026
    Cite this page

    Valuein — SEC EDGAR Fundamentals & Smart-Money Data MCP server. Agent Mart. https://agentmart.dev/connectors/valuein-mcp-sec-edgar (last updated 2026-10-24)