Read Cresthaven with a machine.
Cresthaven Analytics runs an MCP server and a REST API. Point an AI assistant at either one and it can tell you which regulators we monitor and read any brief in the public archive. Subscribers on Professional and above can reach their own archive the same way.
Connect an AI assistant
The MCP server is open. Nothing to install, no key, no account. In Claude Code:
claude mcp add --transport http cresthaven https://cresthavenanalytics.com/mcpFor any other assistant that supports remote MCP servers, addhttps://cresthavenanalytics.com/mcp as a streamable HTTP server. Once connected, ask it things like is the FCA covered? or what has the SEC published on digital assets? and it will answer from the registry and the archive rather than guessing.
What the assistant can do
Five tools are open to anyone:
list_agenciesEvery agency we monitor. Filter by sector, jurisdiction, or search term.get_agencyOne agency, by code or slug.search_public_archiveSearch the public brief archive.get_briefOne published brief in full.get_coverage_summaryTotals: agencies monitored, sectors covered, briefs published.
Two more need a key, and work on Professional and above:
search_my_archiveSearch the briefs delivered for the agencies on your plan.get_my_coverageYour plan, your archive window, and the agencies you subscribe to.
All seven are listed to every caller. The two subscriber tools return an error explaining what is needed if they are called without a valid key.
What is open to everyone
No key, no account, no rate limit to work around. The registry covers 146 agencies across 7 sectors, and the public archive holds one published brief per agency, written to the same standard as the briefs subscribers receive.
The public archive is a fixed sample of already-published work, not a live feed. New developments go to subscribers on their cadence and do not appear here. Not every agency has a published brief — one appears once that agency has produced material clearing our quality gates.
REST API
Read-only JSON over HTTPS, GET only. The open endpoints allow any origin and are cached at the edge; the subscriber endpoints are private and uncached. Start at the discovery document, which lists everything below and the current coverage totals:
curl https://cresthavenanalytics.com/api/v1Open endpoints — no key
| Endpoint | Returns | Parameters |
|---|---|---|
/api/v1 | Discovery document. Lists every endpoint and the current coverage totals. | — |
/api/v1/agencies | The full agency registry. | sector, jurisdiction, q, has_brief |
/api/v1/agencies/{code} | One agency. Accepts the agency code or its slug. | — |
/api/v1/briefs | The public brief archive, newest first. No limit means the whole archive. | sector, agency, q, limit |
/api/v1/briefs/{slug} | One brief in full. | — |
There is no pagination. /api/v1/briefs acceptslimit as a whole number; leave it off and you get the whole archive. An unrecognised sector oragency returns an empty result, because nothing matching it is a true answer. A malformed has_brief orlimit returns 400 instead — a filter we cannot read would otherwise hand you the unfiltered set and no way to notice.has_brief accepts true, false, 1, 0, yes, or no.
Your own archive — Professional and above
Create a key in your portal under API access, then send it as a bearer token:
curl https://cresthavenanalytics.com/api/v1/me/briefs \
-H "Authorization: Bearer YOUR_KEY"| Endpoint | Returns | Parameters |
|---|---|---|
/api/v1/me | Your plan, your archive window, and your agencies. | — |
/api/v1/me/briefs | Your briefs, newest first. 20 per page. | page, q, agency |
/api/v1/me/export | Your whole archive as one file. Executive and Enterprise only. | format=json|csv |
A key reaches only what your plan covers — no parameter widens it. Keys are budgeted at roughly 600 requests an hour, and 20 an hour for archive exports; over that you get a429 with a Retry-After header. Machine access is part of Professional, Executive, and Enterprise. It is not part of Basic.
Fair use
The open surface is open because a regulator registry is more useful shared than fenced. Attribute Cresthaven Analytics when you republish what it returns, and do not use it to rebuild the archive as a competing product. Subscriber keys are issued per subscriber and must not be shared or resold — the full terms are insection 5 of the Terms.
Something broken, or need a higher limit? Support.
Changes
Anything that alters a response shape is listed here with the date it shipped. Whilev1 is settling we will correct a wrong shape rather than preserve it; once subscribers are building against it, a change of this kind gets a new version instead of a note.
17 August 2026
signalsis now an array of{ label, text }on the subscriber endpoints and the MCP subscriber tools, matching the public archive. It was a single string of HTML, so the same field name meant two different types depending on which endpoint you asked./api/v1/mereturns the coverage object directly. It was wrapped in acoveragekey, which no other single-object endpoint here uses and which the MCP tool never used.has_briefandlimitreturn400when the value cannot be read. Previously an unreadablehas_briefcounted as true and an unreadablelimitwas ignored, so a request that looked filtered came back unfiltered with a200.