# Valuein — SEC EDGAR Fundamentals MCP server

Point-in-time, survivorship-bias-free SEC EDGAR fundamentals for AI agents. 1994 to present.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-valuein-mcp-sec-edgar
- Repository: https://github.com/valuein/valuein
- Website: https://valuein.biz

## Install
- Endpoint: https://mcp.valuein.biz/mcp
- Auth: Not captured

## Setup notes
- Remote endpoint: https://mcp.valuein.biz/mcp

## Tools
- search_companies (Search Companies) - 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 this tool with no search parameters and filter results by `sp500_member=true`. This returns the live snapshot as of query time. Example: "List 5 current S&P 500 members" → call `search_companies` with no parameters, then filter by `sp500_member=true` and return the first 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. Endpoint: https://mcp.valuein.biz/mcp
- get_company_fundamentals (Company Fundamentals) - 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. Endpoint: https://mcp.valuein.biz/mcp
- get_valuation_metrics (Valuation Metrics) - Get comprehensive valuation and profitability metrics for a US public company. Returns per-period data combining computed ratios (gross_margin, operating_margin, net_margin, ROE, ROA, ROIC, debt_to_equity, FCF, FCF margin) with optional pre-computed DCF model inputs (WACC, fcf_base, stage1_growth_rate, terminal_growth_rate, dcf_value_per_share, ddm_value_per_share). Profitability + cash flow + leverage fields are sourced from fact.parquet (PIT-safe via accepted_at).  DCF/DDM fields are sourced from valuation.parquet (pipeline-computed; recomputed each pipeline run, so NOT strictly PIT-safe). DCF/DDM fields are commonly null — for newer tickers, transition periods, or before the valuation pipeline has run.  Each null carries a `null_reasons[field]` entry with one of: VALUATION_NOT_COMPUTED, INPUT_MISSING, INPUT_NEGATIVE, PIPELINE_PENDING.  ALWAYS check `null_reasons` before assuming a field is zero — null != 0.  For agents needing strict PIT DCF reasoning, use the SDK or compute DCF inputs from `get_company_fundamentals` directly. Use this *instead of* `get_financial_ratios` when DCF/intrinsic value matters; use `get_financial_ratios` when you only need the ratio table without DCF wiring. Available on all plans. Endpoint: https://mcp.valuein.biz/mcp
- get_financial_ratios (Financial Ratios) - Get pipeline-computed financial ratios from ratio.parquet. Covers 7 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), and valuation (EV/EBITDA, P/E, P/FCF). Includes TTM (trailing twelve months) rows alongside annual periods. Each row carries `is_calendar_aligned` (boolean) — TRUE when period_end is actually on the entity's fiscal year boundary (±7 days), FALSE when the pipeline emitted a calendar-quarter row tagged fiscal_period='FY' for a non-December fiscal-year filer.  Filter to `is_calendar_aligned=TRUE` if you're joining ratios with fact-table fundamentals on (entity, fiscal_year). Ratios are pipeline-derived — they're recomputed on each pipeline run with ON CONFLICT DO UPDATE.  There is NO accepted_at column; for historical cuts use `period_end_before` (filters by ratio.period_end), not as_of_date. _meta.pit_safe is structurally false for this tool — for true PIT analysis, use `get_company_fundamentals` (which carries fact.accepted_at). Use this *instead of* `get_valuation_metrics` when you only need ratios (no DCF wiring); use `get_valuation_metrics` when you also need DCF/DDM. Available on all plans. Endpoint: https://mcp.valuein.biz/mcp
- get_sec_filing_links (SEC Filing Links) - Get direct links to original SEC EDGAR filings for any US public company. Returns two per-filing deep links: `sec_url` (the EDGAR filing-index page listing every document) and `viewer_url` (the SEC iXBRL inline-viewer for the specific accession). Supported form_types (enum): 10-K, 10-Q, 8-K, 20-F, 40-F, 10-K/A, 10-Q/A, 20-F/A, 40-F/A. Other forms (6-K, DEF 14A, Form 4, 13F) are NOT yet exposed by this tool — use `describe_schema` to confirm the parquet has them, then read raw via the SDK. 8-K item codes are filterable via `event_types` (e.g. ['2.02'] for earnings, ['1.01'] for material agreements, ['5.02'] for officer changes). PIT-safe — filings are filtered by accepted_at, never by report_date alone. Use this *instead of* `verify_fact_lineage` when you want a list of filings; use `verify_fact_lineage` when you want one specific fact-to-filing trace. Available on all plans. Endpoint: https://mcp.valuein.biz/mcp
- get_capital_allocation_profile (Capital Allocation Profile) - 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. Also use for owner-earnings analysis (Buffett-style) and reinvestment-rate analysis (Damodaran-style). Data sourced from annual 10-K filings (SEC EDGAR) — income statement (R&D), investing section (capex, M&A), financing section (dividends, buybacks, debt). All figures are point-in-time safe via the as_of_date parameter — no look-ahead bias. R&D semantics: R&D is included as a deployment category despite being an income-statement expense, because for knowledge-economy businesses (tech, pharma, industrials with heavy engineering) it represents the primary growth reinvestment vehicle and often dwarfs capex. R&D is already deducted before reaching operating cash flow, so `rd_pct_ocf` is INFORMATIONAL — it does not reduce OCF a second time. The `total_deployment_pct_ocf` field excludes R&D from its sum to preserve the cash-flow identity (OCF = capex + M&A + dividends + buybacks + debt repayment + change in cash). Flags object: pre-computed booleans for common analytical questions. Use `buybacks_exceed_fcf` to identify years a company returned more to shareholders via repurchases than it generated in free cash flow. Use `total_returns_exceed_fcf` for the stricter test (buybacks + dividends > FCF). Use `debt_funded_distribution` to distinguish over-distribution funded by leverage (typical industrials) from over-distribution funded by cash hoard (Apple 2018-2019 post-tax-reform repatriation). NOT yet included (separate roadmap items): `buyback_yield_implied` requires a price × shares market-cap series; equity-method investments and intangibles are excluded from `acquisitions_net` to keep M&A semantics tight (request `other_investing_outflows` if needed). Available on all plans. Endpoint: https://mcp.valuein.biz/mcp
- get_peer_comparables (Peer Comparables) - 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. Use period_end_before to compare peers at a specific historical date. Available on every plan — sample returns the subset covered by the sample bucket. Endpoint: https://mcp.valuein.biz/mcp
- get_pit_universe (Point-in-Time Universe) - 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 asks whether a company was an index member at a point in the past. `search_companies` only returns current membership snapshots and cannot answer historical membership questions.

Returns a survivorship-free universe of companies valid on a specific as_of_date: only companies that existed and were index members on that exact date — no hindsight contamination. Supports SP500, RUSSELL1000, RUSSELL2000, RUSSELL3000 via index_membership.parquet (accurate join/leave dates with [) interval semantics). To check a single company's membership, pass its ticker and the target date; if the company appears in the response it was a member, if absent it was not.

Returns per company: CIK, ticker, name, sector, industry, SIC code, plus per-row membership confidence (high/medium/low). Check `_meta.pit_safe`: true only when every matched row is high-confidence; medium/low rows downgrade it to false — treat low-confidence rows with caution for backtest use.

NOTE: `sector` is SIC-derived (GICS-aligned labels via sic_to_sector.csv), not licensed GICS — industrial conglomerates may map differently. Treat as a screening bucket, not an authoritative GICS label.

Use as the first step of a quantitative backtest before calling `get_compute_ready_stream` to pull Parquet data for the universe. Returns empty array (with error detail) if the date is out of range or the index_membership data has no coverage for that date. Available on every plan — sample tier returns the subset covered by the sample bucket. Endpoint: https://mcp.valuein.biz/mcp
- get_compute_ready_stream (Compute-Ready Stream) - STATUS: pending — direct R2 Parquet access is in private beta (ETA 2026-Q3).  Calls return 501 FEATURE_NOT_AVAILABLE today.  When live: returns a pre-signed Cloudflare R2 URL for bulk Parquet access that can be piped into Python/DuckDB/Polars for high-throughput computation that exceeds the MCP context window.  Datasets: fact (per-entity partition — requires ticker), ratio (all computed ratios), valuation (DCF inputs), filing (SEC filing metadata), references (company universe), index_membership (historical index composition).  URL would expire in 15 minutes.  TODAY use the Python SDK (`pip install valuein-sdk`) for the same data via DuckDB. Endpoint: https://mcp.valuein.biz/mcp
- describe_schema (Describe Data Schema) - 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. Endpoint: https://mcp.valuein.biz/mcp
- verify_fact_lineage (Verify Fact Lineage) - Use this tool when the user asks BOTH what a financial figure is AND which filing reported it — for example "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" or "Which filing form reported Amazon's Q3 operating cash flow?" This tool 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 company identifiers and returns no financial data. Use this INSTEAD OF `get_company_fundamentals` when the user explicitly wants to know which filing or form type reported a number, or needs the accession ID — `get_company_fundamentals` returns metrics across multiple periods but omits filing provenance.

Two lookup modes: (1) by fact_id (SHA-256 hash of entity_id|accession_id|concept|period_end|unit) for deterministic identity; or (2) by concept name (e.g., TotalRevenue, NetIncome, EPSDiluted, TotalAssets, OperatingCashFlow) plus a ticker to retrieve the most recently reported fact. Optionally pin a point-in-time cutoff via period_end (YYYY-MM-DD) — returns the latest filing accepted by SEC on or before that date, eliminating look-ahead bias. Check `_meta.pit_safe` in the response to confirm PIT correctness.

Provide either fact_id or concept (required). Returns empty result with error_code FACT_NOT_FOUND if no matching fact exists for the given concept and ticker. Available on all plans. Endpoint: https://mcp.valuein.biz/mcp
- compare_periods (Compare Financial Periods) - Compare a company's core financial metrics across two fiscal periods side-by-side. Shows absolute and percentage changes with significance classification (minor < 5%, notable 5–15%, significant > 15%). The response includes a `material_changes` count: this is the number of metrics whose `significance` ∈ {notable, significant} (i.e. absolute percentage change > 5%).  Use it as a quick scalar to triage filings — anything > ~3 typically signals a material event worth deeper review. Use period format: 'FY2024' for annual, 'Q1-2024' for quarterly. Pass `period_a` as the EARLIER period and `period_b` as the LATER one — if you invert them the server auto-swaps and sets `swapped: true` in the response so deltas always carry the correct sign (rather than silently flipping). Point-in-time safe via as_of_date. Available on all plans. Endpoint: https://mcp.valuein.biz/mcp
- screen_universe (Screen Universe by Factor Scores) - Rank companies by cross-sectional factor scores from factor_scores.parquet. Returns the 10 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` is the equal-weight average of all 10 non-null ranks — a one-number screening shortcut.  For single-factor sorts, use the specific rank column (e.g. `sort_by=roe_rank`); for a balanced multi-factor view, use `sort_by=composite_rank` (default). Two modes: full-universe (omit ticker) or single-entity (ticker set — useful for spot-checking ONE company's factor profile without scrolling the whole leaderboard). Sector filter is SIC-derived (GICS-aligned labels, not licensed GICS — see `get_pit_universe` description for the caveat). 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. Available on every plan — sample returns the subset covered by the sample bucket. Endpoint: https://mcp.valuein.biz/mcp
- get_earnings_signals (Earnings Signals) - Trend-based earnings expectations and surprise metrics. EPS trend is the trailing 4-quarter average; surprise_pct shows how actual EPS deviated from trend. PIT-safe: use as_of_date to filter by accepted_at for backtesting. Available on all plans. Endpoint: https://mcp.valuein.biz/mcp
- search_filing_text (Search Filing Text) - Semantic search over SEC 10-K / 10-Q narrative sections — Risk Factors, MD&A, Business, Legal Proceedings, Controls & Procedures, Footnotes. Phrase the query as a statement rather than a question for best recall (e.g. "companies with rising supply chain concentration risk" not "what companies have supply chain risk?"). Returns passages ranked by semantic similarity with the source filing accession id + URL for citation. Cached at the per-plan tier for 10 min. Endpoint: https://mcp.valuein.biz/mcp
- get_insider_transactions (Insider Transactions) - 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. Enterprise tier only — sample / sp500 / pro return ENTITLEMENT_DENIED with an upgrade link. Endpoint: https://mcp.valuein.biz/mcp
- get_institutional_holdings (Institutional Holdings (by issuer)) - 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.  Enterprise tier only.  13F filings carry a ~45-day reporting lag — staleness_warning fires when latest data is older than 90 days. Endpoint: https://mcp.valuein.biz/mcp
- get_manager_portfolio (Manager Portfolio (13F by filer)) - 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).  Enterprise tier only. Endpoint: https://mcp.valuein.biz/mcp
- get_blockholders (Blockholders (SC 13D / 13G)) - 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. Enterprise tier only. Endpoint: https://mcp.valuein.biz/mcp
- get_insider_sentiment (Insider Sentiment (composite)) - 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. Enterprise tier only. Endpoint: https://mcp.valuein.biz/mcp
- get_top_holders (Top Holders (composite, classified)) - 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. Endpoint: https://mcp.valuein.biz/mcp
- get_smart_money_flow (Smart Money Flow (composite)) - 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. Enterprise tier only. Endpoint: https://mcp.valuein.biz/mcp
- save_thesis (Save 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 rejected — sample is guest access with no customerId binding). Per-tier cap on # of stored theses: sp500=100, pro=500, full=10,000. Endpoint: https://mcp.valuein.biz/mcp
- list_theses (List Saved Theses) - 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). Endpoint: https://mcp.valuein.biz/mcp
- get_thesis (Get Saved Thesis) - 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. Endpoint: https://mcp.valuein.biz/mcp
- delete_thesis (Archive Saved Thesis) - 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. Endpoint: https://mcp.valuein.biz/mcp
- score_thesis_outcome (Score 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. Endpoint: https://mcp.valuein.biz/mcp
- score_due_theses (Score 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 by default; can target any user when called with `customer_id` from a `full`-tier (admin) token. Returns a summary + per-thesis results. Idempotent — a re-call only re-grades anything not already graded. Endpoint: https://mcp.valuein.biz/mcp
- run_workflow (Run Saved Workflow) - 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. Endpoint: https://mcp.valuein.biz/mcp
- list_public_theses_by_user (List Public Theses by User) - 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. Endpoint: https://mcp.valuein.biz/mcp
- save_citation_override (Save 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).

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. Tier caps: sp500=500, pro=5000, full=50000. Endpoint: https://mcp.valuein.biz/mcp
- list_citation_overrides (List Citation Overrides) - 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. Endpoint: https://mcp.valuein.biz/mcp
- delete_citation_override (Delete Citation Override) - Remove a user-authored citation correction by fact_id. Idempotent — deleting a missing override returns deleted=false without error. Once deleted, reports that previously rendered the corrected value revert to the canonical fact value on next regeneration. Endpoint: https://mcp.valuein.biz/mcp
- save_watchlist (Save 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. Endpoint: https://mcp.valuein.biz/mcp
- list_watchlists (List Watchlists) - Paginated newest-first listing of the caller's watchlists. Filter by status. Sample tier rejected. Endpoint: https://mcp.valuein.biz/mcp
- get_watchlist (Get Watchlist) - Fetch a single watchlist by name. NOT_FOUND if the name is unknown to this user. Endpoint: https://mcp.valuein.biz/mcp
- delete_watchlist (Archive Watchlist) - Soft-delete: status flips to `archived`. The name is freed (a new save_watchlist can reuse it). Idempotent. Endpoint: https://mcp.valuein.biz/mcp
- watchlist_diff (Watchlist Diff) - 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. Endpoint: https://mcp.valuein.biz/mcp
- create_alert (Create Alert) - Persist an alert and register it with the firing pipeline. Three condition shapes:
  * `filing_event` — fire when a ticker files a chosen form type (8-K, 10-K, etc.).
  * `ratio_threshold` — fire when a ticker's financial ratio crosses a threshold (e.g. interest_coverage < 1.5).
  * `watchlist_change` — fire on any filing on any ticker in a named watchlist.

Delivery channels: `email` (transactional via Resend) or `webhook` (HMAC-SHA256-signed POST). The cron evaluator runs every 5 minutes. Use `test_alert` to verify your channel is wired correctly before relying on the cron. Endpoint: https://mcp.valuein.biz/mcp
- list_alerts (List Alerts) - Paginated newest-first listing of the caller's alerts. Sample tier rejected. Endpoint: https://mcp.valuein.biz/mcp
- delete_alert (Delete Alert) - Soft-delete: status flips to `deleted`. ALSO removes the alert from the cron evaluator index so it stops firing. Idempotent. Endpoint: https://mcp.valuein.biz/mcp
- test_alert (Test Alert (synthetic fire)) - 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. Endpoint: https://mcp.valuein.biz/mcp
- list_alert_inbox (List Alert Inbox) - Newest-first listing of the caller's in-app alert inbox. Each item is a single fire of an alert with a `dashboard` channel — written by the cron evaluator (or `test_alert`). By default dismissed items are hidden and read items are included. Cursor-paginated by `fired_at`. Sample tier rejected — alerts are a paid-tier feature. Endpoint: https://mcp.valuein.biz/mcp
- mark_inbox_read (Mark Inbox Item Read) - Set `read_at` on a single inbox item. Idempotent — re-marking does NOT reset the first-read timestamp. Returns the new unread_count so the agent/UI can update its badge without a follow-up call. Endpoint: https://mcp.valuein.biz/mcp
- dismiss_inbox_item (Dismiss Inbox Item) - Soft-delete an inbox item — sets `dismissed_at`. The row stays queryable via `list_alert_inbox(include_dismissed=true)` for audit. Idempotent. Endpoint: https://mcp.valuein.biz/mcp
- create_report (Create 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 do NOT propagate — generate a new report to capture new state.

Tier: sample tier rejected — reports are per-author state. Endpoint: https://mcp.valuein.biz/mcp
- get_report (Get Research Report) - Fetch 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. Sample tier is downgraded to preview regardless of input. Endpoint: https://mcp.valuein.biz/mcp
- list_my_reports (List My Research Reports) - Cursor-paginated newest-first listing of the caller's own reports. Filters compose with AND. Use `cursor` from the previous response's `next_cursor` to fetch the next page. Sample tier rejected (no per-author state). Endpoint: https://mcp.valuein.biz/mcp
- delete_report (Delete (Soft) Research Report) - Soft-delete a report owned by the caller: status flips to `delisted`, visibility to `private`. Idempotent. R2 artifact preserved (90-day audit window). Sample tier rejected. Endpoint: https://mcp.valuein.biz/mcp
- compute_dcf (Compute Forward DCF) - Forward discounted-cash-flow valuation: caller provides growth + WACC + terminal assumptions, returns per-share intrinsic value + 5×5 sensitivity grid. Pulls FCF base + net debt + shares from R2; caller can override any field. Does NOT persist a report — use `create_report` for that. Tier: sp500+. Endpoint: https://mcp.valuein.biz/mcp
- forensic_audit (Forensic Audit (Beneish + Sloan + Solvency)) - 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+. Endpoint: https://mcp.valuein.biz/mcp
- update_report (Update 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. Bumps `version`. Re-embeds for Vectorize if the report is currently listed. Does NOT change price / tier / visibility — use publish_report for those. Endpoint: https://mcp.valuein.biz/mcp
- list_report_versions (List Report Versions) - 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. Endpoint: https://mcp.valuein.biz/mcp
- get_report_version (Get Report Version) - Author-only fetch of a specific archived version of one of your reports. 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. Endpoint: https://mcp.valuein.biz/mcp
- render_report (Render 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` returns a branded Word document with a cover page (logo, title, ticker, tier badge), the report body (abstract, sections, citations table with clickable SEC EDGAR links), and a back page (methodology, sources, disclaimer). 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. Endpoint: https://mcp.valuein.biz/mcp
- generate_dcf_xlsx (Generate 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.

Pair with `compute_dcf` for a typical analyst flow: agent calls `compute_dcf({ticker, ...})`, then passes the structured result straight to `generate_dcf_xlsx({ticker, dcf_result, ...})` to materialise a shareable file.

Tier: pro+. Endpoint: https://mcp.valuein.biz/mcp
- generate_research_brief_docx (Generate Research Brief (docx)) - Render a structured research brief into a professionally-styled Word document — cover, abstract, optional snapshot table, body sections, and a citations table with clickable SEC EDGAR links. No embedded charts in v1; pair with `generate_dcf_xlsx` / `generate_comps_xlsx` for visuals the analyst pastes in.

Consumes the same `sections` + `citations` shape `create_report` emits, so the typical flow is two tool calls: `create_report` → `generate_research_brief_docx`.

Tier: pro+. Endpoint: https://mcp.valuein.biz/mcp
- generate_comps_xlsx (Generate 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.

Pair with `get_peer_comparables` for a typical flow.

Tier: pro+. Endpoint: https://mcp.valuein.biz/mcp

## Resources
- reference://sp500 - S&P 500 universe Current S&P 500 members as a single JSON roster — ticker, CIK, company name, sector, industry, and primary exchange for every active constituent. Reads as the latest membership snapshot from the references table; for survivorship-free historical universes use the get_pit_universe tool with an as_of_date instead. MIME type: application/json
- pricing://current - Pricing & plan tiers Full tier ladder (Sample → Free → Pro → Enterprise) with prices, Stripe SKUs, breadth/depth coverage, filing types, and feature flags. Plus the per-tool pay-per-call rate card. Read this first when an agent hits a LIMIT_EXCEEDED response and needs to pick between upgrade vs pay-per-request. The same data backs every remediation menu in tool errors. MIME type: application/json
- valuein://alerts/feed - Alert inbox feed Recent in-app alert fires for the calling customer. Read this resource to drain the same notification stream the frontend dashboard bell shows. Returns up to 50 newest-first items; mirror of `list_alert_inbox` output. Use the tool when you need pagination, the resource for a quick snapshot. MIME type: application/json
- schema://beneficial_ownership - beneficial_ownership table schema SC 13D / SC 13G beneficial-ownership disclosures (5%+ stakes).  One row per (filing, reporting person).  Group filings carry multiple reporting persons — each lands as a separate row.  Joins to ``filing`` via accession_id; subject_entity_id is the issuer CIK (the company being held).  FULL bucket only — enterprise tier (full plan). MIME type: application/json
- schema://earnings_signals - earnings_signals table schema Trend-based earnings expectations and surprise metrics per entity. eps_trend_est is the trailing 4-quarter average of EPSDiluted. eps_surprise_pct = (actual - trend_est) / |trend_est|. NULL when fewer than 4 prior quarters exist or trend_est is zero. revenue_yoy_pct compares latest quarter to 4 quarters prior. Derived at export time — not stored in Postgres. MIME type: application/json
- schema://entity - entity table schema Legal structure and profile of reporting companies. MIME type: application/json
- schema://fact - fact table schema Standardized financial data points (US-GAAP XBRL mapped to canonical standard_concept labels). MIME type: application/json
- schema://factor_scores - factor_scores table schema Cross-sectional factor scores and percentile ranks per entity. Computed from the latest two 10-K filings. 10 factors matching the SDK AlphaEngine built-in set. _rank columns are PERCENT_RANK (0.0–1.0, where 1.0 = best). composite_rank is an equal-weight average of non-null factor ranks. Derived at export time — not stored in Postgres. MIME type: application/json
- schema://filing - filing table schema Metadata for all SEC filings processed. MIME type: application/json
- schema://index_membership - index_membership table schema Historical index constituents (SP500, RUSSELL1000, RUSSELL2000, RUSSELL3000).  Source of truth for ALL membership questions — current OR historical.  Always JOIN ``references.cik = index_membership.cik`` to attach company metadata (name, sector, ticker).  Filter by ``index_name`` for the index, by ``effective_date`` / ``removal_date`` for the as-of window.  Note: ``cik`` is named ``cik`` here (NOT ``entity_id`` like security/filing/fact) so the JOIN with ``references`` uses the same column name on both sides — see migration 0015 for the rationale. MIME type: application/json
- schema://insider_party - insider_party table schema Directory of every insider / reporting person referenced by Form 3/4/5/144.  Keyed on CIK when SEC-registered, otherwise on a normalized name.  Joined to insider_transaction via insider_party_id.  FULL bucket only — enterprise tier (full plan). MIME type: application/json
- schema://insider_transaction - insider_transaction table schema Form 3 / 4 / 5 / 144 line items — each row is one transaction, initial holding, or proposed sale by an insider.  transaction_type is 'transaction' (Form 4/5), 'initial_holding' (Form 3), or 'proposed_sale' (Form 144).  Joins to ``filing`` via accession_id, to ``entity`` (issuer) via entity_id, and to ``insider_party`` via insider_party_id.  FULL bucket only — enterprise tier (full plan). MIME type: application/json
- schema://institutional_filing - institutional_filing table schema Form 13F-HR / 13F-NT (and amendments) — the manager-rooted filing record.  Distinct from ``filing`` (issuer-rooted) because 13F filings have no single subject issuer (the manager reports a portfolio across many issuers).  FK to ``insider_party`` for the manager.  FULL bucket only — enterprise tier. MIME type: application/json
- schema://institutional_holding - institutional_holding table schema Form 13F-HR holdings — institutional managers' quarterly position disclosures.  One row per (filing, CUSIP, share-class, put/call).  Joins to ``institutional_filing`` via accession_id (the 13F filing record); ``filer_cik`` is the manager CIK (denormalised — same value as institutional_filing.filer_cik). ``subject_entity_id`` is the issuer CIK (NULL until the CUSIP→CIK lookup resolves).  FULL bucket only — enterprise tier. MIME type: application/json
- schema://ratio - ratio table schema Pipeline-computed financial ratios per entity per fiscal period. Derived from fact data — recomputed on each pipeline run (ON CONFLICT DO UPDATE). No accession_id or accepted_at: use computed_at for freshness. MIME type: application/json
- schema://references - references table schema Denormalized flat join of entity + security.  One row per security — covers the company universe (CIK + primary identifiers + sector + ticker).  For ANY membership question (current or historical, SP500 or Russell), JOIN with index_membership on cik = cik.  The join column has the same name on both sides — this view does NOT carry index-membership flags because they're inherently snapshot-only and single-index, both of which are footguns the index_membership table avoids by design. MIME type: application/json
- schema://security - security table schema Ticker symbols and tradeable instrument metadata (SCD Type 2 with date ranges). MIME type: application/json
- schema://taxonomy_guide - taxonomy_guide table schema Human-readable definitions for all standard_concept values used in the fact table. MIME type: application/json
- schema://valuation - valuation table schema Pre-computed intrinsic value estimates per entity. One row per (entity_id, valuation_date, model_type) — multiple model types (DCF, DDM, GrahamNumber, etc.) coexist for the same valuation_date. Recomputed each pipeline run; not point-in-time. MIME type: application/json

## Prompts
- margin_and_moat_teardown - Margin & Moat Teardown Systematic 5-year analysis of a company's operational efficiency and competitive moat. Chains fundamentals → valuation metrics → peer comparables to produce a structured teardown covering revenue quality, margin trends, ROIC vs WACC spread, and relative positioning vs sector peers. Arguments: ticker
- peer_benchmarking_memo - Peer Benchmarking Memo Produces a structured relative-value memo comparing a company to its closest peers. Chains search_companies → peer_comparables → valuation_metrics → financial_ratios to output an investment committee-ready comparison table with ROIC, valuation multiples, and capital efficiency. Arguments: ticker
- survivorship_free_backtest - Survivorship-Free Backtest Sets up a bias-free quantitative backtest by defining the historical universe and providing Parquet URLs for bulk data access. Chains get_pit_universe → get_compute_ready_stream to produce ready-to-run Python/DuckDB code. Arguments: start_date, end_date, index, sector
- pit_factor_constructor - Point-in-Time Factor Constructor Guides construction of a quantitative factor (Quality, Value, Momentum) across a sector universe using ratio.parquet data. Chains get_pit_universe → get_financial_ratios → get_compute_ready_stream to produce normalized factor scores. Arguments: factor_type, sector, as_of_date
- quality_and_risk_audit - Quality & Risk Audit Evaluates capital structure safety and dividend sustainability for portfolio risk-adjusted sizing. Chains fundamentals → capital_allocation → valuation_metrics → financial_ratios (leverage/liquidity) to produce a structured risk scorecard. Arguments: ticker
- capital_allocation_review - Capital Allocation Review Evaluates management's capital allocation decisions over a multi-year period. Chains capital_allocation_profile → valuation_metrics → financial_ratios to produce a management quality scorecard: does management create value with retained earnings? Arguments: ticker, lookback_years
- ratio_deep_dive - Ratio Deep Dive Comprehensive ratio profile for a single company spanning all 7 ratio categories (profitability, liquidity, leverage, efficiency, per_share, owner_earnings, valuation). Includes TTM and 5-year annual history with trend analysis. Arguments: ticker
- sector_ratio_screen - Sector Ratio Screen Cross-sectional ratio ranking across a sector to surface the highest-quality or best-value companies. Chains get_pit_universe → get_compute_ready_stream to screen the full sector using pipeline-computed ratios. Arguments: sector, screen_type, as_of_date
- earnings_reviewer_flow - Equity Research Brief Single-ticker end-to-end research brief in markdown — fundamentals, valuation, ratios, capital allocation, peer comparison, recent catalysts, and SEC lineage. Three depth modes: 'quick' (3 tools, snapshot), 'full' (8 tools, default — institutional brief), 'forensic' (adds restatement audit + fact-level SEC verification). Renders as an artifact users can export to Word/PDF. PIT-safe via as_of_date for backtests. Arguments: ticker, depth, as_of_date, peers
- market_researcher_flow - Screen and Shortlist PM idea-generation workflow: build a PIT universe, factor-rank it, QC the leaders with a period-over-period change check, and hand off the top picks to earnings_reviewer_flow for full write-ups. Survivorship-free via get_pit_universe; renders as a markdown shortlist artifact users can export. Arguments: sector, index, objective, as_of_date, top_n
- smart_money_brief - Smart Money Brief Single-ticker smart-money brief: composite flow score, top holders (classified), 13F deltas, blockholder alerts, and insider sentiment overlay. Three depth modes: 'quick' (3 composites only), 'standard' (default, + 13F + blockholders), 'deep' (+ insider transactions + company fundamentals for fundamental context). Renders as an exportable markdown artifact. Enterprise tier only. Arguments: ticker, depth, period_end
- activist_surveillance - Activist Surveillance Event-driven surveillance for activist target / takeover candidates. Surfaces filers flipping 13G → 13D within the lookback window (the strongest activist signal in the dataset), then cross-references defensive insider activity and 8-K item 1.01 filings to check whether a corporate response is already in motion. Banker / event-driven desk workflow. Enterprise tier only. Arguments: ticker, lookback_days
- forensic_earnings_brief - Forensic Earnings-Quality Brief Hedge-fund-grade earnings-quality red-flag brief for a single ticker. Chains forensic_audit (deterministic Beneish M + Altman Z' + Sloan accruals) → restatement diff → Risk-Factor delta to surface fraud / quality concerns. Output: structured red-flag list with citation to specific XBRL tags + 10-K accessions. Arguments: ticker
- smart_money_pulse - Smart-Money Pulse PM digest: 13F + insider activity across the caller's watchlist. Surfaces top fund accumulators, recent insider clusters, and 13D/13G activist filings worth investigating. Institutional tier (full plan) only. Arguments: watchlist_name, lookback_days
- morning_briefing - Morning Briefing Daily overnight digest: material SEC filings across the caller's watchlist since the last close. Ranks by likely impact (M-score change candidates, 8-K item types, amendment flags). Arguments: watchlist_name, since
- earnings_pulse - Earnings Pulse Pre-earnings pulse for a single ticker. Pulls last 8 quarters of fundamentals + the existing get_earnings_signals trend + management-credibility cross-check (promise-vs-delivery on key segments). Output: 1-page pre-read for an analyst attending the call. Arguments: ticker
- restatement_radar - Restatement Radar Daily/weekly sweep for 10-K/A and 10-Q/A amendments across a watchlist (or the caller's full ticker set). Surfaces amendments that materially changed reported revenue, cash flow, or earnings — the highest-signal restatement events for a forensic analyst. Arguments: watchlist_name, since
- activist_radar - Activist Radar Detect new SC 13D / 13G filings across the watchlist and pull the activist's historical playbook stats. Surfaces 13G→13D conversions (the strongest 'going active' signal). Institutional tier. Arguments: watchlist_name, lookback_days
- screen_to_thesis - Screen → Thesis Pipeline End-to-end idea-generation pipeline: screen → forensic audit → save thesis for the top N candidates. Produces both the screening result + a saved thesis on each conviction name. Wraps existing screen_universe + forensic_audit + save_thesis. Arguments: criteria_name, max_results
- portfolio_health_check - Portfolio Health Check End-of-week diagnostic on the caller's saved theses: which are still on track (positive directional momentum) vs. broken (signals diverging from view). Runs score_thesis_outcome over the active set and produces a top-3-issues list.
- sector_overview_flow - Sector Overview Comprehensive sector / industry landscape brief — market dynamics, top 5-10 players, competitive structure, valuation context, and investment debate. Distinct from `sector_ratio_screen` (which is just a screen) and `market_researcher_flow` (single-theme idea generation) — this is full sector context. Adapted from anthropics/financial-services equity-research/sector-overview. Arguments: sector, as_of_date, top_n
- dcf_build_flow - DCF Build (Disciplined) Disciplined forward-DCF construction for a single ticker — pulls fundamentals, justifies each assumption against history + peers, calls `compute_dcf`, and renders the full per-share value + 5×5 sensitivity grid. Wraps Valuein's existing `compute_dcf` math tool with verify-at-each-step discipline. Adapted from anthropics/financial-services financial-analysis/dcf-model. Arguments: ticker, stage1_years, confirm_each_step

## Metadata
- Owner: io.github.valuein
- Version: 2.9.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: May 20, 2026
- Source: https://registry.modelcontextprotocol.io
