Deep Values
ai.deepvalues/deepvaluesVersion 1.1.1Value investing for US stocks: SEC filings, 13F guru holdings, intrinsic value, AI briefings.
Status
Responds551 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 13:28 UTC
- Latency
- 551 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 21:12 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://app.deepvalues.ai/api/mcpResponds551 msNo sign-in
Claude Code
claude mcp add --transport http deepvalues https://app.deepvalues.ai/api/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: deepvalues
Remote MCP server URL: https://app.deepvalues.ai/api/mcpCursor
{
"mcpServers": {
"deepvalues": {
"url": "https://app.deepvalues.ai/api/mcp"
}
}
}VS Code
code --add-mcp '{"name":"deepvalues","type":"http","url":"https://app.deepvalues.ai/api/mcp"}'Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
30 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
accountReturns the calling key, its scopes, environment, and today's usage across all 3 buckets. Self-billing: counts as 1 metadata call. (GET https://app.deepvalues.ai/api/v1/account — free; needs a connected account or a dv_sk_ key) | Not declared | Yes | Not declared | Yes |
ai_contextReturns a system prompt + structured context block, scoped to one ticker. Drop it into OpenAI/Anthropic/any LLM SDK to ground your chatbot in current Deep Values data without months of plumbing. Bills 3 metadata units. (GET https://app.deepvalues.ai/api/v1/ai-context/{ticker}, e.g. https://app.deepvalues.ai/api/v1/ai-context/AAPL — 0.02 credits per call; works with no credentials up to 1 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
as_filedCall this when the question is about what was known on a past date (a backtest, an audit, "what did the 10-K say at the time"), not about the current restated figures. Returns, for each fiscal period filed on or before `date`, the value as it stood on that date (the original filing, or a later filing for the same period if it came before `date`), the filing date, the XBRL tag, a sec.gov link, and `restated_after_date` when a later filing changed it. Values are as printed, not split-adjusted. Inputs: `ticker` (path), `date` (YYYY-MM-DD, required), `metrics` (comma-separated snake_case names, default revenues,net_income,eps_diluted,operating_cash_flow,free_cash_flow,stockholders_equity,total_debt,shares_outstanding), `period` (annual|quarterly), `limit` (periods, default 4). Example: GET /as-filed/AAPL?date=2020-02-01&metrics=revenues,net_income. If the company had filed none of it by `date`, the answer has no periods, the flag `nothing_filed_by_date` and `earliest_filed` (the first filing date on record). A 503 `as-filed-unavailable` means there is no as-filed history for the company to answer from; it is not charged, and GET /fundamentals has the current figures. 0.02 credits. (GET https://app.deepvalues.ai/api/v1/as-filed/{ticker}, e.g. https://app.deepvalues.ai/api/v1/as-filed/AAPL?date=2020-02-01 — 0.02 credits per call; works with no credentials up to 5 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
briefCall this first when asked whether a listed company looks cheap or expensive, what it is worth, or which well-known investors own it: one call returns the intrinsic value per share (with each valuation method as an input), the owner-earnings value, the margin of safety against the current price, a deterministic verdict sentence about where the price sits against our value range, the top tracked 13F holders and their last move, and the company profile. Every number carries its unit, period, as-of date and a sec.gov source link, and `checks` lists the sanity checks it passed. A value built from statements filed in another currency and converted to USD carries `fx` (original currency, rate, rate date) and passes `currency_consistent`; when the currency is not known the flag `currency_unverified` says the check did not run. If the valuation fails a check (for example an intrinsic value more than 20x the price, or statements left in a currency other than the USD price), the valuation figures are withheld, `withheld` is true, `checks.failed` names the check, and the call is not charged. Input: `ticker` (path), e.g. GET /brief/KO. The first brief each UTC day is free per key and per keyless address; after that 0.25 credits. Same price as /research, a different product: brief is computed at call time from current figures; /research returns the latest written multi-analyst briefing. Data and analysis, not investment advice. (GET https://app.deepvalues.ai/api/v1/brief/{ticker}, e.g. https://app.deepvalues.ai/api/v1/brief/AAPL — 0.25 credits per call; works with no credentials up to 1 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
companies_searchCompany search (GET https://app.deepvalues.ai/api/v1/companies — 0.001 credits per call ($0.005 when paid per call over x402); works with no credentials up to 25 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
company_overviewCompany overview (GET https://app.deepvalues.ai/api/v1/companies/{ticker}/overview, e.g. https://app.deepvalues.ai/api/v1/companies/AAPL/overview — 0.001 credits per call ($0.005 when paid per call over x402); works with no credentials up to 25 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
credits_checkoutCreates a one-time Stripe Checkout Session for a credit pack, bound to the calling live key’s account. When the payment completes the credits land on that balance; poll GET /keys/me. This is what a 402 `topUp.checkoutEndpoint` points at. Free, consumes no quota. (POST https://app.deepvalues.ai/api/v1/credits/checkout — free; needs a connected account or a dv_sk_ key) | No | No | No | Yes |
credits_packsLists the prepaid credit packs this key can buy (1 credit = $1.00). Free. (GET https://app.deepvalues.ai/api/v1/credits/checkout — free; needs a connected account or a dv_sk_ key) | Not declared | Yes | Not declared | Yes |
filingsSEC filings (10-K, 10-Q, 8-K, etc) (GET https://app.deepvalues.ai/api/v1/filings/{ticker}, e.g. https://app.deepvalues.ai/api/v1/filings/AAPL — 0.001 credits per call ($0.005 when paid per call over x402); works with no credentials up to 25 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
fundamentalsIncome + balance + cashflow (GET https://app.deepvalues.ai/api/v1/fundamentals/{ticker}, e.g. https://app.deepvalues.ai/api/v1/fundamentals/AAPL — 0.001 credits per call ($0.005 when paid per call over x402); works with no credentials up to 25 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
guruOne guru: bio + top holdings (GET https://app.deepvalues.ai/api/v1/gurus/{slug}, e.g. https://app.deepvalues.ai/api/v1/gurus/warren-buffett — 0.01 credits per call; works with no credentials up to 5 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
guru_movesThe Follow the Pros feed. Every material 13F move — new position, full exit, a share count that moved by 25%, or a position of $100M or more — ordered by the date the filing became public, with a deterministic verdict line on each row. The verdict is identical for every caller: it compares the price when the investor traded, the price now and Deep Values' intrinsic value band, and it never predicts a return or recommends an action. Every row carries the company's legal name beside the ticker (`name`, e.g. "Occidental Petroleum"), or null where we hold none — null rather than the ticker echoed back, so a caller can tell a real name from a placeholder. Rows whose EDGAR filing date we do not yet hold fall back to when the row reached us and say so with filed_at_known: false. (GET https://app.deepvalues.ai/api/v1/gurus/moves — 0.01 credits per call; works with no credentials up to 5 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
guru_portfolioOne guru's full portfolio at a quarter (GET https://app.deepvalues.ai/api/v1/gurus/{slug}/portfolio, e.g. https://app.deepvalues.ai/api/v1/gurus/warren-buffett/portfolio — 0.01 credits per call; works with no credentials up to 5 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
gurus60 hand-picked institutional investors — every name a serious value investor would recognize. Filter by style. (GET https://app.deepvalues.ai/api/v1/gurus — 0.01 credits per call; works with no credentials up to 5 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
indicators_buffettUS corporate equities ÷ GDP, with zones (significantly undervalued through significantly overvalued) and historical percentile. (GET https://app.deepvalues.ai/api/v1/indicators/buffett — 0.001 credits per call ($0.005 when paid per call over x402); works with no credentials up to 25 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
indicators_shiller_peShiller PE with historical percentile (GET https://app.deepvalues.ai/api/v1/indicators/shiller-pe — 0.001 credits per call ($0.005 when paid per call over x402); works with no credentials up to 25 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
intrinsic_valuePer-method intrinsic value per share (DCF on free cash flow, owner earnings, Damodaran two-stage), their equal-weight blend, Monte Carlo bounds and the implied gap to the current price, and the lead value the DeepValues apps headline (`lead_method`, `lead_intrinsic_value`, `lead_upside_pct`, `values.lead_intrinsic_value_per_share`): Owner Earnings, or the DCF and then Damodaran when Owner Earnings has no positive value. The blend is checked against the price before it is served: if it fails a check (not positive, more than 20x the price, a price older than five days, no price, or `currency_consistent`: statements left in a currency other than the USD price), the valuation fields are null, `withheld` is true, `checks.failed` names the check and the call is not charged. A value under 0.05x the price is served with the flag `iv_far_below_price`. A value built from statements converted to USD carries `fx` (`from` the filer's currency, `to` USD, `rate`, `rate_date`, `rate_type`) on `values.intrinsic_value_per_share` and each method input; `currency_unverified` in `checks.flags` means the statement currency is not known for this ticker, so the check did not run. A method with no value is null in `methods`, never 0, and `methods_unavailable` says why (`code`, `family`: negative_cash_flow, financial_company, withheld or missing_inputs, and the pipeline's `reason`). For a one-call answer with holders and a verdict, use /brief/{ticker}. (GET https://app.deepvalues.ai/api/v1/intrinsic-value/{ticker}, e.g. https://app.deepvalues.ai/api/v1/intrinsic-value/AAPL — 0.02 credits per call; works with no credentials up to 5 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
keys_createThe one endpoint that needs no key. Send {} for a dv_sk_test_ sandbox key (real data, small daily quota, never billed, no /research). Send {"email":"…"} for a dv_sk_live_ key on a new prepaid account; the first key for an email carries 1 starter credit ($1.00). Send it with an existing key as the bearer to mint a sibling key on the same account (rotation). The raw key is returned once. The email is a contact label, not a credential. Limited to 10 keys per address per day. The raw key is in the result once: keep it and send it as Authorization: Bearer on REST calls (or have the host re-add this server with that header). With a key already configured, mints a sibling on the same account. (POST https://app.deepvalues.ai/api/v1/keys — free; needs no credentials) | No | No | No | Yes |
keys_meReturns the calling key, the exact balance of the ledger behind it (balanceMicro: integer micro-credits, 1 credit = $1.00 = 1,000,000), what is left in each daily quota bucket, and the environment. Free, and consumes no quota. (GET https://app.deepvalues.ai/api/v1/keys/me — free; needs a connected account or a dv_sk_ key) | Not declared | Yes | Not declared | Yes |
mirror_briefThe same move as /verdict, flattened into a brief: what the investor did, when, at what price, against our value band, plus the verdict sentence. It carries NO quantity and NO instruction — `sizing` reads "not provided; the reader decides". It describes a public filing and a published value range; it is not advice and not a prediction. (GET https://app.deepvalues.ai/api/v1/mirror-brief/{ticker}, e.g. https://app.deepvalues.ai/api/v1/mirror-brief/AAPL?guru=warren-buffett — 0.01 credits per call; works with no credentials up to 5 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
newsSentiment-scored news (GET https://app.deepvalues.ai/api/v1/news/{ticker}, e.g. https://app.deepvalues.ai/api/v1/news/AAPL — 0.001 credits per call ($0.005 when paid per call over x402); works with no credentials up to 25 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
pricingEvery endpoint’s per-call price (credits, USD and atomic USDC), the free allowances, the daily quotas, and how an agent pays without a human: x402 in USDC — per call with no key, or as a prepaid top-up of a key — when it is switched on, or a Stripe Checkout link a human pays. Also served at /api/v1/pricing.json. Needs no key, costs nothing, consumes no quota. (GET https://app.deepvalues.ai/api/v1/pricing — free; needs no credentials) | Not declared | Yes | Not declared | Yes |
request_dataName the dataset, field, company or analysis you wanted and why. Free, needs no key, never metered, and read every week: the most-asked-for data is what gets added next. Do not send personal data (emails and phone numbers are removed). GET the same URL for the field list. At most 10 requests per address per day. (POST https://app.deepvalues.ai/api/v1/request-data — free; needs no credentials) | No | No | No | Yes |
researchFull briefing, bull case, bear case, valuation, investment plan and fair-value range as one structured JSON document. 0.25 credits ($0.25) per successful call, ai_research quota 50/day. Returns the latest completed briefing for the ticker — the same one its public company page shows; a fresh run cannot be started through the API yet (404 when none exists). Never keyless, not in the sandbox. Same price as /brief, a different product: /brief is a short valuation answer computed at call time; this is the full written briefing. (GET https://app.deepvalues.ai/api/v1/research/{ticker}, e.g. https://app.deepvalues.ai/api/v1/research/AAPL — 0.25 credits per call; needs a connected account or a dv_sk_ key) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
sentimentValue-investor sentiment rollup (not WSB noise) (GET https://app.deepvalues.ai/api/v1/sentiment/{ticker}, e.g. https://app.deepvalues.ai/api/v1/sentiment/AAPL — 0.001 credits per call ($0.005 when paid per call over x402); works with no credentials up to 25 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
smart_money_changesAll 13F position changes meeting the materiality threshold (new positions, full exits, ≥25% share-count shifts, OR ≥$100M position size) across our entire 60-guru roster, in the requested window. (GET https://app.deepvalues.ai/api/v1/smart-money/changes, e.g. https://app.deepvalues.ai/api/v1/smart-money/changes?since=2026-Q1 — 0.01 credits per call; works with no credentials up to 5 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
smart_money_holdingsReturns every guru from our 60-name roster who held the requested ticker as of the latest 13F-HR quarter (or a specific historical quarter). Each row includes shares, USD value, % of portfolio, and the auto-classified delta vs the prior quarter. (GET https://app.deepvalues.ai/api/v1/smart-money/holdings, e.g. https://app.deepvalues.ai/api/v1/smart-money/holdings?ticker=AAPL — 0.01 credits per call; works with no credentials up to 5 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
thesesPublic investment theses with structured metadata — sentiment, conviction, price target, anchored DVI run. Filter by ticker, conviction, or sentiment. (GET https://app.deepvalues.ai/api/v1/theses — 0.01 credits per call; works with no credentials up to 5 call(s)/day per address) Missing data? Call `request_data`. | Not declared | Yes | Not declared | Yes |
verdictOne guru's disclosed move in one ticker, with the sentence Deep Values publishes about it and every number behind it: the company's legal name beside the ticker (`name`, null where we hold none), the three dates (traded by, filed, seen), the quarter-end close, the current price, and the intrinsic value band. `value` is the callable band (the lead value ±25%: Owner Earnings, else the DCF, else Damodaran) and is null whenever the verdict is not a call; `estimates` always carries what the valuation methods actually said, their lowest and highest central estimate, so a reader told we cannot call it can see why. One of six deterministic states — below_value, inside_band, above_value, ran_ahead, too_uncertain, no_value — computed the same way for every caller. The band is Deep Values' lead intrinsic value (the one the apps headline: Owner Earnings first) plus or minus 25%, and `too_uncertain` ("Our estimates disagree too much to call this one.") replaces the three band states when the methods' own central estimates are more than 3x apart, or one of them is not positive: the lead value still exists, but `value` is null because it is not a range anyone should be told a price sits inside; `estimates` shows how far apart the methods are. It is distinct from `no_value`, which means no valuation was computed at all. Before the band is published its mid is checked against the current price (positive, at most 20x the price, a price under five days old; under 0.05x is served with the flag `iv_far_below_price`) and for currency (`currency_consistent`: the statements behind it are in USD, the price's currency, or were converted to USD; a converted band carries `fx` on `values.value_band_mid` naming the original currency and rate; when the currency is not known the answer carries the flag `currency_unverified` instead); on a failure `value` and `estimates` are null, the verdict reads `no_value`, `withheld` is true, `checks.failed` names the check, and the call is not charged. (GET ht | Not declared | Yes | Not declared | Yes |
webhooks_listList webhook subscriptions (GET https://app.deepvalues.ai/api/v1/webhooks — free; needs a connected account or a dv_sk_ key) | Not declared | Yes | Not declared | Yes |
Details
- Registry status
- Active
- Published
- Oct 4, 2026
- Updated
- Oct 4, 2026
- Repository
- Not given
- Categories (suggested)
- Finance and paymentsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared