Deep Values
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Value investing for US stocks: SEC filings, 13F guru holdings, intrinsic value, AI briefings.
| Author | ai.deepvalues |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 289 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Deep Values": {
"url": "https://app.deepvalues.ai/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (27)
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)
Parameters:
email— string — Contact address for a dv_sk_live_ key (1 starter credit the first time). Omit for a never-billed dv_sk_test_ sandbox key.label— string — Optional name for the key.
Hints: read-only no · destructive no · idempotent no · open-world yes
keys_meread-onlyReturns 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)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
credits_packsread-onlyLists 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)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world 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)
Parameters:
pack(required) — string — Credit pack to buy, e.g. "1000". The `credits_packs` tool lists the packs on sale.
Hints: read-only no · destructive no · idempotent no · open-world yes
pricingread-onlyEvery 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)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
accountread-onlyReturns 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)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ai_contextread-onlyReturns 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} — 0.005 credits per call; works with no credentials up to 1 call(s)/day per address)
Parameters:
ticker(required) — stringtoken_budget— integer
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
researchread-onlyFull briefing, bull case, bear case, valuation, investment plan and fair-value range as one structured JSON document. 3 credits ($3.00) 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. (GET https://app.deepvalues.ai/api/v1/research/{ticker} — 3 credits per call; needs a connected account or a dv_sk_ key)
Parameters:
ticker(required) — stringlanguage— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
intrinsic_valueread-onlyDCF + Owner Earnings + Damodaran intrinsic value (GET https://app.deepvalues.ai/api/v1/intrinsic-value/{ticker} — 0.005 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
ticker(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
smart_money_holdingsread-onlyReturns 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 — 0.005 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
ticker(required) — stringquarter_end— string — ISO date; default = latest available
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
smart_money_changesread-onlyAll 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 — 0.005 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
since(required) — string — ISO date OR YYYY-QN format. Filters on the QUARTER a position belongs to (quarter_end), not on when it was filed.status— stringfiled_since— string — Only rows that reached us on or after this date (each row carries filed_at). Use it to poll for genuinely new 13F filings; `since` alone cannot tell a filing from this week from one made months ago in the same quarter.min_position_usd— number
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
guru_movesread-onlyThe 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.005 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
limit— integerslugs— string — Comma-separated guru slugs; default is every guru.filed_since— string — Only moves filed on or after this date. Poll with it.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
verdictread-onlyOne 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 blend ±25%) 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' blended intrinsic value 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 blend 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. (GET https://app.deepvalues.ai/api/v1/verdict/{ticker} — 0.005 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
ticker(required) — stringguru(required) — stringquarter— string — Quarter end; default = the most recent quarter we hold.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
mirror_briefread-onlyThe 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} — 0.005 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
ticker(required) — stringguru(required) — stringquarter— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
gurusread-only60 hand-picked institutional investors — every name a serious value investor would recognize. Filter by style. (GET https://app.deepvalues.ai/api/v1/gurus — 0.005 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
limit— integerstyle— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
gururead-onlyOne guru: bio + top holdings (GET https://app.deepvalues.ai/api/v1/gurus/{slug} — 0.005 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
slug(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
guru_portfolioread-onlyOne guru's full portfolio at a quarter (GET https://app.deepvalues.ai/api/v1/gurus/{slug}/portfolio — 0.005 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
slug(required) — stringas_of— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
thesesread-onlyPublic 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.005 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
limit— integerticker— stringsentiment— stringmin_conviction— integer
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
indicators_buffettread-onlyUS 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; works with no credentials up to 25 call(s)/day per address)
Parameters:
history_years— integer
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
indicators_shiller_peread-onlyShiller PE with historical percentile (GET https://app.deepvalues.ai/api/v1/indicators/shiller-pe — 0.001 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
history_years— integer
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
sentimentread-onlyValue-investor sentiment rollup (not WSB noise) (GET https://app.deepvalues.ai/api/v1/sentiment/{ticker} — 0.001 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
ticker(required) — stringsource— stringwindow— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
newsread-onlySentiment-scored news (GET https://app.deepvalues.ai/api/v1/news/{ticker} — 0.001 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
ticker(required) — stringsince— stringsentiment— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
companies_searchread-onlyCompany search (GET https://app.deepvalues.ai/api/v1/companies — 0.001 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
q— stringlimit— integer
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
company_overviewread-onlyCompany overview (GET https://app.deepvalues.ai/api/v1/companies/{ticker}/overview — 0.001 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
ticker(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
fundamentalsread-onlyIncome + balance + cashflow (GET https://app.deepvalues.ai/api/v1/fundamentals/{ticker} — 0.001 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
ticker(required) — stringlimit— integerperiod— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
filingsread-onlySEC filings (10-K, 10-Q, 8-K, etc) (GET https://app.deepvalues.ai/api/v1/filings/{ticker} — 0.001 credits per call; works with no credentials up to 25 call(s)/day per address)
Parameters:
ticker(required) — stringform— stringlimit— integer
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
webhooks_listread-onlyList webhook subscriptions (GET https://app.deepvalues.ai/api/v1/webhooks — free; needs a connected account or a dv_sk_ key)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.