DNH20

DNH20 public API

Read-only JSON. No keys. Thirty requests per minute per IP. Market information only — not investment advice.

30 requests / minute / IP. Over the cap returns HTTP 429 with retry_after.

Market information only. Not investment advice.

Examples

GET /api/v1/snapshot
GET /api/v1/note
GET /api/v1/history?from=2026-06-01&to=2026-09-05

Connect via MCP

MCP (Model Context Protocol) lets AI assistants call structured tools instead of scraping this page. DNH20 exposes a read-only Streamable HTTP server — same data and 30 req/min/IP cap as the REST API. No API key. No trade or write tools.

Endpoint: https://dnh20.app/mcp. Compatible clients include Claude, ChatGPT (MCP-enabled), and other assistants that speak Streamable HTTP MCP.

Tools: get_snapshot, get_index_family, get_intelligence, get_history, explain_market_move, get_research_history, get_onchain_context, get_constituent, list_constituents, get_methodology. All read-only; payloads include a disclaimer field. No buy or trade tools.

curl -sS -X POST https://dnh20.app/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'

Live snapshot

GET /api/v1/snapshot — live print, timestamp, source, and the locked 20.

FieldTypeMeaning
printnumberOfficial DNH20 level
tsISO-8601UTC timestamp of the print
sourcestringQuote vendor for this snapshot
stalebooleanTrue when serving the last good cache
membership.effective_datedateWhen this locked 20 became the book
membership.reviewed_datedateLast 00:00 UTC membership review
membership.members_hashstringSorted symbols, joined
membership.membersstring[]Locked symbols, in lock order
constituentsarrayRank, symbol, name, price, market_cap, weight_percent

Desk note

GET /api/v1/note — latest bilingual Market note (≤ 800 chars) with disclaimer. Written once per UTC day from the snapshot.

FieldTypeMeaning
printnumberOfficial DNH20 level
tsISO-8601UTC timestamp of the print
sourcestringQuote vendor for this snapshot
stalebooleanTrue when serving the last good cache
membership.effective_datedateWhen this locked 20 became the book
membership.reviewed_datedateLast 00:00 UTC membership review
membership.members_hashstringSorted symbols, joined
membership.membersstring[]Locked symbols, in lock order
constituentsarrayRank, symbol, name, price, market_cap, weight_percent

Daily history

GET /api/v1/history — same body as /api/history.json. Query from and to as YYYY-MM-DD.

FieldTypeMeaning
genesisdate2025-01-01
divisornumberFixed $2.4T base market cap
fromdateInclusive UTC start (default last 90 days)
todateInclusive UTC end
series[].datedateUTC calendar day
series[].printnumberStored daily print — not interpolated
series[].members_hashstringMembership that day

Research

  • GET /api/research/view — what moved DNH20: contributions by name and sector (pp), BTC leadership vs breadth, today vs 30 days ago, recorded regimes, on-chain context. Every value has source and asOf.
  • GET /api/research/daily?from=&to= — daily research records (schema dnh20.research.v1) since R5; at most 400 days; no back-fill.
  • GET /api/snapshot — includes market_intelligence (v2.0), classification (DNHCS), onchain_context, index_family and data_provenance.

Also published

  • GET /api/history.json — kept. Same series as v1/history.
  • GET /api/history.csv
  • GET /api/snapshot — fuller dashboard dump (quotes, briefing).

MethodologyPerformanceBack to the index