API-first · JSON is the product, the page is just a renderer

Developer API

One dataset, three ways to consume it: people read the page, programs read the JSON, agents call MCP. The free tier publishes T+1 aggregate levels permanently — no credit card, no approval.

REST

Endpoints

Base URL https://spreadbench.com/api · all responses are UTF-8 JSON · time fields are ISO 8601 (US Eastern calendar days). The .json suffix is optional — /api/v1/latest and /api/v1/latest.json are equivalent.

GET/api/v1/latest.jsonLatest levels for all three tiers, with changes · free
GET/api/v1/constituents.jsonConstituent list with per-bond spreads · free
GET/api/v1/levels/{composite|hy|ig}.jsonFull 90-day series for one tier (static; filter client-side)
GET/api/v1/bonds/{cusip}.jsonAll fields for one bond + 30-day spread path (per-bond agent lookups)
GET/api/v1/history.json90-day series for three tiers + broad-market background layer
GET/api/v1/trades.jsonSampled trade prints (seed phase; full set once licensed)
GET/api/v1/attribution.jsonChange attribution (1D / 5D / 30D × three tiers)
GET/api/v1/methodology.jsonMethodology metadata, version, DOI · free
GET/api/v1/composition.jsonConstituent structure distribution
GET/api/v1/weekly.jsonStructured weekly snapshot (also feed.xml / feed.json)
POST /v1/webhooks is not open yet — earlier docs listed it as available, which was wrong and has been retracted; threshold alerts ship with the Pro+ tier. Every response also carries a data_status field, currently seed (seed series — see methodology §7).
Request
curl -s https://spreadbench.com/api/v1/latest.json | jq '.levels.composite' # served statically today — no auth header, no key needed (free tier)
Response 200 OK
Live console

Try it here

These are not simulated responses — clicking fires a real request at this site's JSON endpoints and echoes the result. No key needed on the free tier.

API console

api/v1/latest.json
Press “Send request”…
Downloads

Data downloads

Everything is generated in your browser; nothing passes through a server. CSVs carry a UTF-8 BOM so Excel opens them without mojibake.

Constituents and spreads

CSV
20 bonds · 20 fields · ratings, tiers, daily changes
  • Same source as /api/v1/constituents.json
  • Includes the trace_verified flag

Index history

CSV
90 trading days · three tiers · broad-market background layer
  • Same source as /api/v1/history.json
  • Ready for time-series analysis

Change attribution

CSV
20 bonds × weight × Δspread × contribution bp
  • Composite / HY / IG
  • 1D / 5D / 30D switchable downloads
Agents

MCP Server

Spreads are a natural input for agent credit judgements — “how much more expensive did CoreWeave credit get” is one question. Terminal vendors have no MCP interface; that is a structural gap SpreadBench occupies.

Dedicated tools

Live · spreadbench.com/mcp · free tier
ToolWhat it returns
ncsx_latestLatest levels, changes, percentile, DOI
ncsx_levels90-trading-day series for a given tier
ncsx_bondPer-bond spread and 30-day path by CUSIP
ncsx_constituentsAll constituents with verification status
ncsx_attributionIndex change attribution (who moved it)
ncsx_methodologyMethodology version / DOI / conventions
ncsx_weeklyLatest weekly snapshot and citation string
# official remote MCP (streamable-http, zero install) { "mcpServers": { "ncsx": { "type": "streamable-http", "url": "https://spreadbench.com/mcp" } } } # or test with curl: POST https://spreadbench.com/mcp # {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}} # fallback: any MCP client + the official mcp-server-fetch reading /api/v1/*.json
Status (2026-11-04): the official remote MCP server is live at https://spreadbench.com/mcp (free tier, seven tools, every response carrying data_status). Submitted to the official registry (com.spreadbench/ncsx; public listing awaits their review). Per-call billing ($0.05) is planned on the Feegate settlement rail.
# stdio package @ncsx/mcp v0.1.0 — install straight from this site (no npm registry needed) npm install -g https://spreadbench.com/download/ncsx-mcp-0.1.0.tgz # this gives you the ncsx-mcp command (stdio, seven ncsx_* tools) # MCP client config: { "mcpServers": { "ncsx": { "command": "ncsx-mcp" } } }

The package passes 12 self-tests. While the npm account is under review, use the direct URL above; once it is on the registry the same command becomes npm i -g @ncsx/mcp.

llms.txt

The site description written for models

Following the llms.txt convention: what this site is, how to fetch the data, what the conventions are — as plain text a model can parse, so anyone citing us (model, press, research) gets the conventions right without scraping pages.

Open llms.txt
Tiers

Access comparison

Capability FreeProEnterprise
T+1 levels, three tiers✓✓✓
Constituents and per-bond spreads✓✓✓
Full history90 days (/api/v1/history.json)FullFull
Per-bond series30-day path (/api/v1/bonds/)✓✓
Attribution detailSame-day aggregate✓ all periods✓ all periods
Webhook threshold alerts—Planned✓
Dedicated MCP tools✓ free tier (7 tools)✓ as free✓
Rate limitsServed statically today — no auth, no throttling. Quotas quoted elsewhere are the target design once billing ships and are not yet binding.
SLA / redistribution licence——✓
See pricing Request a key (manual) The free tier needs no key today — call it directly. Keys will identify quotas in the paid tiers.
Embed · no code needed

Use a static badge — one <img> tag

320×86 compact badge / 480×200 badge with a trend card · zero JS · no external calls · the as-of date is baked into the image. Works in Markdown, Notion, newsletters and email signatures.

Embed instructions See a badge