/mcp
Protocol Model Context Protocol revision 2026-07-28. Clients on the 2025 revisions are served too — the endpoint answers both from the same tool definitions.
Give an AI assistant direct access to UK company data. Point any MCP client at one endpoint and it gains 15 read-only tools covering the registry, filed accounts, ownership, property, funding and news. Calls are authenticated with the API key you already have and drawn from the same monthly credit allowance — there is no separate plan, quota or bill.
Endpoint
https://api.ukdatalayer.com/mcpAuthenticate with X-API-Key or Authorization: Bearer, exactly as you do
over REST. The endpoint accepts POST only.
Connect Claude Code
claude mcp add --transport http ukdatalayer https://api.ukdatalayer.com/mcp \
--header "X-API-Key: YOUR_API_KEY"Connect any other client
Cursor, VS Code and most desktop clients take the same JSON. Drop this into the client's MCP configuration file.
{
"mcpServers": {
"ukdatalayer": {
"type": "http",
"url": "https://api.ukdatalayer.com/mcp",
"headers": { "X-API-Key": "YOUR_API_KEY" }
}
}
}Tools
Every tool is read-only. Start with search_companies to turn a name or a description
into a company number, then pass that number to the rest.
| Tool | What it returns | Credits |
|---|---|---|
search_companies | Find companies by what they do, not just by name. The entry point: turns a name or a description into the company number every other tool takes. | 1 |
get_company | The registry profile: status, incorporation, address, SIC codes, size band. Optionally attaches other layers in the same call. | 1 + layers |
get_financials | Parsed figures from filed accounts, with a 17-ratio block and a link to the source filing. | 2 per period |
get_officers | Directors and other officers, with appointment and resignation dates. | 1 |
get_ownership | Persons with significant control, shareholders, and any PSC exemption on file. | 2 |
get_filings | Filing history in plain English, each with its Companies House document link. | 1 |
get_charges | Charges registered against the company — the secured lending picture. | 1 |
get_properties | Land Registry titles held in the company name, with price paid where published. | 1 |
get_grants | Public grant awards matched to the legal entity, with funder and programme. | 1 |
get_fundraisings | Equity raised, reconstructed from filed share allotments. | 2 |
get_group_structure | Parents above and subsidiaries below, flat or as a nested tree. | 2 |
get_person | One person and every directorship they hold or have held. | 1 |
get_intelligence | What the company sells and who it sells to, derived from its verified website. | 1 |
get_news | Recent coverage, matched to the company rather than to a similar name. | 3 (1 stale) |
get_credit_balance | Credits remaining, plan, and when the allowance resets. | Free |
Billing
- A tool call costs exactly what the equivalent REST call costs. The same key, the same monthly allowance, the same usage meter in your dashboard.
- Discovery is free: listing the tools never consumes a credit, and it keeps working after the allowance is spent so a client does not appear broken.
- Failed calls are never charged, and neither is a definite nothing on record answer. The one exception is a live news lookup, which is billed on the work rather than the outcome because it costs us money upstream.
- Each result reports what it cost and what is left, so an assistant can pace itself over a long
run of lookups.
get_credit_balanceis free and answers the same question directly.
Working with the data
- A
nullmeans not disclosed. It never means zero — most small companies do not publish turnover, and an absent figure is not a small one. - Long lists are trimmed to keep answers readable, and say so with a
_truncatedflag. The count fields always describe the full set, so a trimmed answer never reads as a complete one. - Ask for layers together rather than separately: one
get_companycall withincludecosts the same as the individual calls and takes one round trip.
Checking it by hand
The transport is plain JSON-RPC over HTTP POST, so you can exercise it with curl before wiring up a client.
curl -X POST https://api.ukdatalayer.com/mcp \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2026-07-28" \
-H "Mcp-Method: tools/list" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {}
}
}
}'