Developer platform

API changelog

The versioning promise: additive changes — new fields, new endpoints, new MCP tools — ship within v1 without notice, so parse tolerantly and ignore fields you do not use. Breaking changes get a new versioned path and at least 90 days' notice on this page before anything changes underneath you.

← Back to the developer docs

Operational freshness and key-copy improvements

  • The agency dashboard now provides a Copy ID action beside every stored key identifier. Full API secrets remain copyable only during their one-time create/rotate reveal; existing full secrets are never recoverable from storage.
  • /api/v1/data-freshness and the equivalent MCP resource now report durable ingestion status, validation, row count, run outcome and age for monitored dataset families instead of placeholder null timestamps. Unknown remains explicit until a governed importer records a successful run.
  • Scheduled freshness monitoring, read-only Stripe-to-agency reconciliation, partitioned usage rollups, bounded raw-ledger retention and direct AI COGS/token monitoring are live operational controls. No public response exposes internal supplier-cost headers.

/api/v1/rankings enabled

  • The open-data licensing review that kept /api/v1/rankings behind a 503 is resolved: the OSM-derived nightlife input to the young-professional persona is treated as an ODbL produced work — analysis in docs/legal/d6-odbl-rankings-analysis.md (decision D6). The endpoint is live.
  • What it serves: persona outcode rankings (persona=investor | family | young_professional, default investor), rank-ordered nationally, with an optional region outcode-prefix filter and limit up to 250 rows (default 50). 1 credit per call. Scores are recomputed twice monthly.
  • Rankings responses carry meta.attribution with the licence statements for that persona's score inputs — reproduce the OSM/ODbL statement if you republish young-professional rankings.
  • MCP surface unchanged: still 8 tools. Rankings is REST-only for now; a get_rankings tool would be announced here first.
  • Also from this week: rate-limit enforcement now matches the published contract — Growth and Scale keys actually get their 120/300 req/min (per-key overrides apply only where explicitly set) — metered MCP tool calls carry the same X-Credits-* and X-RateLimit-Limit headers as REST with compare_areas metered per postcode, and the MCP server is published to the official MCP registry.

Provenance on every metered response

  • Machine-readable provenance ({source, licence, asOf, methodology?, note?}) now ships on every metered response, not just area and property. /api/v1/comparables and /api/v1/epc carry a top-level provenance block naming HM Land Registry Price Paid and the MHCLG EPC register respectively; /api/v1/metrics/green-premium carries one naming its inputs and linking the published methodology page; POST /api/v1/summary carries a provenance map covering the sections the summary draws on. Additive — no existing field moved or changed shape.
  • Attribution statements (the licence text re-users must reproduce when republishing) now ride in meta on those responses too, matching area and property.
  • The mirroring MCP tools — get_comparables, get_epc, get_metric — return the same blocks.

v1 launch

  • Nine REST endpoints live: area, investment-score, property, comparables, epc, coverage, compare, summary, and metrics/{metric}. A tenth, /api/v1/rankings, is built but returns 503 behind a feature flag pending a licensing review — if it is enabled, that will be announced here.
  • Remote MCP server at /mcp (Streamable HTTP): eight read-only tools mirroring the REST endpoints on the same credit meter. Bearer API-key auth on every call, including the handshake; only tool calls are metered.
  • Weighted credit metering, with X-Credits-Limit, X-Credits-Used and X-Credits-Remaining reported on every metered response.
  • Per-section provenance — source, licence, vintage — on area and property responses; the other endpoints state their row caps and data notes in meta.
  • Free plan (250 credits/month, no card, self-serve) and ppa_test_ sandbox keys, returning canned fixtures on area and investment-score without touching quota. The other REST endpoints answer a test key with 400 test_fixture_unavailable; the MCP server rejects test keys with 401.