REST + MCP · SEC-filed · cited

Financial data your agent can cite, back to the filing it came from.

SEC-filed statements back to 1985 for US listings, plus 40,000+ listings outside the US on 60+ exchanges (standardized by EvidInvest, end-of-day prices). Valuation models, cited filing search and supply-chain facts from 10-Ks — over REST or MCP. The same credits as the site, and they go further when you bring your own model.

EvidInvest is an independent research and information tool, not a financial-services provider. All content is general information for educational purposes — never investment advice or a personal recommendation. Figures are from public filings and are for research only; investing carries risk. Always do your own research and verify figures against primary sources.

Usage is metered against prepaid credits. See the terms.

Compare: financial data APIs, September 2026 · Guides: 30 years of statements in ChatGPT or Claude

REST · one call
curl -s https://mcp.evidinvest.com/v1/tools/get_income_statement \
  -H "Authorization: Bearer $EVIDINVEST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"arguments":{"symbol":"AAPL","period":"annual"}}'
Response · AAPL fiscal 2025 10-K · trimmed
{
  "result": {
    "symbol": "AAPL",
    "period": "annual",
    "periods_returned": 4,
    "latest": {
      "date": "2025-09-27",
      "revenue": 416161000000,
      "net_income": 112010000000,
      "eps": 7.49,
      "epsdiluted": 7.46,
      "gross_margin_pct": 47,
      "operating_margin_pct": 32,
      "net_margin_pct": 27
    },
    "periods": [
      {
        "date": "2025-09-27",
        "revenue": 416161000000,
        "operating_income": 133050000000,
        "net_income": 112010000000,
        "eps_diluted": 7.46,
        "filing_date": "2025-10-31",
        "accession": "0000320193-25-000079",
        "source_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/0000320193-25-000079-index.htm"
      }
    ],
    "attribution": { "fundamentals": "EvidInvest financial statements; SEC EDGAR-linked from fiscal 2009" }
  }
}

Figures as filed. Trimmed for space: yoy_growth, three_year_avg, the usage field and the three older fiscal years the same call returns. Every row from fiscal 2009 on carries its accession and the source_url on sec.gov, so you can open the statement and check it.

Connect with OAuth (no key needed)

mcp.evidinvest.com is a full OAuth 2.1 authorization server (MCP authorization spec 2025-06-18, with RFC 7591 dynamic client registration and PKCE). Add the URL, sign in with your browser, approve once — the client holds the token and you never handle a key. Credits, tools and limits are identical to key auth, and the first connection carries the same free allowance.

Claude.ai and Claude Desktop

  1. Open Settings → Connectors.
  2. Click Add custom connector.
  3. Paste https://mcp.evidinvest.com/mcp as the remote MCP server URL.
  4. Click Connect, sign in to EvidInvest, and press Allow.

The tools then appear in the chat's tool menu. Disconnect any time under Settings → API keys → Connected apps.

ChatGPT

  1. Open Settings → Connectors (ChatGPT Plus, Pro and Business).
  2. Choose Create / Add a custom connector.
  3. Enter https://mcp.evidinvest.com/mcp and pick OAuth as the authentication method.
  4. Sign in to EvidInvest and approve the connection.

Cursor, VS Code and MCP Inspector work the same way — point them at the same URL and they discover the login automatically.

Discovery · what a client reads first
curl -sI https://mcp.evidinvest.com/mcp -X POST
# HTTP/1.1 401 Unauthorized
# WWW-Authenticate: Bearer resource_metadata="https://mcp.evidinvest.com/.well-known/oauth-protected-resource"

curl -s https://mcp.evidinvest.com/.well-known/oauth-protected-resource
curl -s https://mcp.evidinvest.com/.well-known/oauth-authorization-server

What $20 buys

List prices, Sept 2026, from each vendor's pricing page. Check them before you buy. The full nine-provider table — history depth, filing citations, MCP, free tiers and non-US coverage, each cell sourced and dated — is on the September 2026 comparison.

ProviderPriceWhat you get for $20Contract
EvidInvestCredits from $10 — the same packs as the sitePrepaid credits, metered by usage — no per-seat feeA credit pack, kept until you use itNone. Credits never expire.
FMP Starter~$22 / monthflat monthlyNothing — the cheapest plan is $22/monthMonthly, auto-renews
Massive (formerly Polygon) Starter~$29 / month per asset classflat monthlyNothing — the cheapest plan is $29/month; 20+ years of history starts at $199/monthMonthly, auto-renews
Alpha Vantage Premium~$50 / monthflat monthlyNothing — the cheapest plan is $50/monthMonthly, auto-renews
sec-api.io~$49 / monthflat monthlyNothing — the cheapest plan is $49/monthBilled annually

Coverage

1985 →

Annual and quarterly statements; 30+ years on file for 5,000+ companies

2009 →

Every row links to its SEC filing, with first-disclosure dates

10-K 10-Q 20-F 40-F

Filing types behind the statements, incl. IFRS filers

6,500+ · 40,000+

US-listed symbols with Cboe daily price history back to 2004; plus companies on non-US exchanges — standardized by EvidInvest, end-of-day

15 min

Price delay (Cboe). Every price-bearing response says so

Prev. close

Options positioning: previous trading session only, OPRA historical data

04:00 UTC

Nightly refresh of statements, prices and models

60 / min

Requests per minute per API key

Options data policy. Options positioning is served for the previous trading session only. Under the OPRA plan, options data becomes historical — furnishable to any person and exempt from OPRA’s Redistribution Fee — at the opening of trading on the next trading session; data from the session in progress is delayed data whatever the delay, and redistributing it requires a Vendor Agreement we do not hold. So get_options_positioning returns an as_of date that is always a completed session, and no same-day options data is served on any surface. The guard is server-side, identical for the API, the MCP server and the site.

No analyst estimates. For US listings, rows from fiscal 2009 on link to their SEC filing; older rows are EvidInvest’s standardized historical statements without a filing link. The 40,000+ listings outside the US on 60+ exchanges — London, Tokyo, Zurich, Milan, Frankfurt, Paris, Stockholm and others — are standardized by EvidInvest, with end-of-day prices: no SEC filing behind them, no filing link, and less history than the US set.

Full inventory with per-dataset coverage and refresh times: what the financial data API actually has. How filing search returns cited passages from 10-K, 10-Q, 8-K and earnings calls: SEC EDGAR API and filing search.

Two ways to connect

Same key, same tools, same credits. Create the key at /settings/api-keys (sign in, “Create New Key”, copy it once).

REST — scripts, notebooks, pipelines

POST /v1/tools/<tool> with {"arguments":{...}}. JSON in, JSON out.

Python
import os, requests

r = requests.post(
    "https://mcp.evidinvest.com/v1/tools/get_income_statement",
    headers={"Authorization": f"Bearer {os.environ['EVIDINVEST_API_KEY']}"},
    json={"arguments": {"symbol": "NVDA", "period": "annual"}},
    timeout=30,
)
r.raise_for_status()
data = r.json()["result"]      # metered against your credit balance; HTTP 402 when it is 0

OpenAPI 3.1 spec: mcp.evidinvest.com/v1/openapi.json

MCP — Claude, Cursor, Windsurf, any MCP client

Streamable HTTP at mcp.evidinvest.com/mcp. One line for Claude Code, or paste the JSON into your client config.

Claude Code
claude mcp add --transport http evidinvest https://mcp.evidinvest.com/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"
claude_desktop_config.json · .cursor/mcp.json
{
  "mcpServers": {
    "evidinvest": {
      "type": "streamable-http",
      "url": "https://mcp.evidinvest.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

One-click install

Every route below points at the same endpoint and bills the same credits. The deeplinks carry a YOUR_API_KEY placeholder — the editor opens its MCP settings pre-filled and you paste your real key there, so the secret never travels in a URL.

Claude Desktop & Claude.ai

Settings → Connectors → Add custom connector. Paste the URL https://mcp.evidinvest.com/mcp, then add the header Authorization: Bearer YOUR_API_KEY. Claude lists the 59 tools once the connector saves.

Claude Code

One command, no config file.

Terminal
claude mcp add --transport http evidinvest https://mcp.evidinvest.com/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Perplexity Agent API

Pass the endpoint as a remote MCP server. Keep defer_loading: true — with 59 tools it is Perplexity’s own advice, and it keeps the schemas out of context until a tool is actually called.

POST /chat/completions
{
  "model": "sonar-pro",
  "messages": [{ "role": "user", "content": "What does NVDA's latest 10-K say about supply concentration? Cite the filing." }],
  "mcp_servers": [
    {
      "name": "evidinvest",
      "server_url": "https://mcp.evidinvest.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" },
      "defer_loading": true
    }
  ]
}

59 tools

Each is one REST endpoint and one MCP tool. Full schemas in the OpenAPI spec.

Financial statements (9)

  • get_company_profileSector, market cap, description
  • get_income_statementRevenue, net income, EPS, margins
  • get_balance_sheetAssets, liabilities, equity, debt
  • get_cash_flowOperating, investing, financing
  • get_growth_ratesRevenue, EPS, FCF growth, 1–10 yr
  • get_pe_ratiosPE history with statistical bands
  • get_segment_revenueProduct and segment revenue, 10-K/10-Q
  • get_geographic_revenueRevenue by geography, 10-K/10-Q
  • get_major_customersCustomers over 10% of revenue, 10-K

Filing search (2)

  • search_sec_filingsFilings, 8-K press exhibits and call transcripts in one auto-routed search, with accession-numbered citations and sec.gov URLs
  • search_earnings_transcriptsVerbatim call and 8-K EX-99 press-exhibit quotes with speaker and date

Market data (7)

  • get_current_priceLatest price, Cboe 15-min delayed
  • get_historical_pricesDaily OHLCV
  • get_enterprise_valueEV and capital structure
  • get_company_peersComparable companies
  • get_trading_multiplesPE, PB, PS, EV/EBITDA
  • get_peer_multiplesMultiples for the peer set
  • get_industry_multiplesSector and industry medians

Valuation (15)

  • get_fair_value_rangeBear / base / bull from DCF, sector PE, PEG
  • get_dcf_valuationFull DCF with assumptions
  • get_reverse_dcfGrowth implied by the current price
  • get_company_snapshotKey metrics in one call
  • get_valuation_metricOne metric with context
  • compare_stocksSide-by-side comparison
  • get_cagr_matrixMulti-period CAGR matrix
  • get_growth_trajectoryEPS trajectory and two-stage DCF range
  • run_valuationSeven methods on your assumptions, with a bear/base/bull range
  • get_implied_assumptionsThe growth and margin inputs that reconcile each method to today’s price
  • get_valuation_parametersEvery method’s parameters, ranges and filed defaults
  • save_valuationSave a named scenario to your history
  • list_saved_valuationsYour saved scenarios, by symbol, method or date
  • get_saved_valuationOne saved scenario with its full assumptions
  • delete_saved_valuationRemove one saved scenario — yours only, and it says what it removed

Calculations (5)

  • calculate_waccWeighted average cost of capital
  • calculate_dcfDiscounted cash flow
  • calculate_margin_of_safetyDifference between a computed value and the current price, on your own assumptions
  • calculate_comparablesRelative valuation from peers
  • calculate_ddmDividend discount model

SEC supply chain and risk (6)

  • sec_get_profileProducts, customers, suppliers, moat from the 10-K
  • sec_get_supply_chainSupplier / customer edges with the filing quote that proves each
  • sec_get_risksItem 1A risk excerpts, verbatim
  • sec_find_chokepointsSingle points of failure in a supply chain
  • sec_searchSearch the supply-chain graph
  • sec_compareTwo companies side by side

Thesis monitoring and options (5)

  • create_thesisWrite a thesis in your own words
  • check_thesisCheck it against each new filing
  • list_thesesYour saved theses
  • set_thesis_alertsAlert when a filing moves one
  • get_options_positioningOpen interest and flow, delayed

Portfolio (2)

  • optimize_portfolioMax Sharpe / min variance
  • portfolio_risk_decompositionVaR, CVaR, per-position risk

Your lists (8)

  • list_user_stock_listsYour watchlists and lists
  • create_user_stock_listCreate a list
  • add_symbols_to_user_listAdd symbols
  • remove_symbols_from_user_listRemove symbols
  • set_user_list_watchedToggle watchlist alerts
  • get_list_itemsSymbols in a list
  • get_watchlist_statusWatch status for symbols
  • delete_user_stock_listDelete a list

Credits

The same credit packs as the website — prepaid credits, metered by usage. AI analyses draw credits by the tokens they use, so connecting your own LLM through MCP or the REST API draws far less from a pack than an AI analysis on the site does.

Starter

$10

360 credits

Get credits

Plus

$20

720 credits

Get credits

Pro

$59

2,000 credits

Get credits

One balance per account, shared by all your API keys. Free to start: your first API key carries a free allowance, once per account, no card. No subscription. Credits never expire.

Questions developers ask

What is free, and what costs credits?
The website is free. Your first API key starts with a free allowance, once per account, no card. After that, usage is metered against the same credit balance as the site — prepaid credits, from $10, metered by usage over both REST and MCP. Connecting your own model draws far less than an AI analysis on the site, which spends credits by the tokens it uses. Credits never expire and there is nothing to cancel.
Rate limits?
60 requests per minute per API key. When your balance hits 0 the API returns HTTP 402 with a top-up link; nothing is charged for the refused call.
REST or MCP — does billing differ?
No. Same key, same 59 tools, same credit balance over either transport. Use REST from scripts and pipelines, MCP from Claude, Cursor or any MCP client.
Where does the data come from, and can I show it to users?
For US listings, fundamentals are extracted from SEC EDGAR filings (10-K, 10-Q, 20-F, 40-F), which are public records, and prices are Cboe, delayed 15 minutes. The 40,000+ listings outside the US on 60+ exchanges have no SEC filing behind them: those fundamentals are EvidInvest-standardized and their prices are end-of-day. Every price-bearing response carries an attribution field naming the source and the delay — keep both if you display prices.
How would I know a number is right?
search_sec_filings, search_earnings_transcripts and the sec_* tools return the filing text with accession numbers and sec.gov URLs, so you can check the passage yourself. Valuation tools return every method, the assumptions it ran on and the filing behind them, not a single number.

Claude, Cursor and ChatGPT are trademarks of their respective owners. EvidInvest is an independent product and is not affiliated with, sponsored by or endorsed by Anthropic, OpenAI or Anysphere.

EvidInvest is an independent research and information tool. Figures are calculated from public SEC filings and third-party market data and are provided for informational and educational purposes only. EvidInvest does not provide investment advice, brokerage, or financial services, and is not affiliated with any company it covers. Verify all figures against primary sources before making any decision.