Documentation menu
Reference
MCP for developers
The API is also a remote Model Context Protocol server, so developer tools such as Claude Code can search planning applications as tools. It is the same product as the REST API: the same keys, fields, plan rules, record counting and 60 requests a minute (shared with your REST calls).
- Server URL:
https://planningsignal.co.uk/mcp - Transport: Streamable HTTP, stateless. Send JSON-RPC with
POST;GETandDELETEreturn 405. - Authentication: the header
Authorization: Bearer ps_live_...with your API key. Your client must be able to send a custom header.
Claude Code
claude mcp add --transport http planning-signal https://planningsignal.co.uk/mcp \
--header "Authorization: Bearer ps_live_your_key_here"Then ask, for example, "find planning applications within 500m of NW3 5NA decided this month".
Other MCP clients
Clients that connect to remote servers over Streamable HTTP and accept headers:
{
"url": "https://planningsignal.co.uk/mcp",
"headers": { "Authorization": "Bearer ps_live_your_key_here" }
}Clients that only run local (stdio) servers can use the mcp-remote bridge:
{
"mcpServers": {
"planning-signal": {
"command": "npx",
"args": ["mcp-remote", "https://planningsignal.co.uk/mcp", "--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer ps_live_your_key_here" }
}
}
}To test from a terminal:
curl -s https://planningsignal.co.uk/mcp \
-H "Authorization: Bearer ps_live_your_key_here" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_applications","arguments":{"postcode":"NW3 5NA","radius_m":1000,"limit":5}}}'Tools
search_applications
Search applications by postcode and radius, or by council. Up to 50 per call. Access: all plans, including the free demo. Each new record returned uses one record. Same data as /api/v1/applications.
| Input | Type | Description |
|---|---|---|
postcode | string | UK postcode at the centre of the search. Give this or authority. |
radius_m | integer 100-20000 | Radius around the postcode in metres (default 1000). |
authority | string | Exact council name as list_authorities returns it. |
keyword | string | Text matched against description and address (the REST q parameter). |
status | enum: Undecided, Permitted, Conditions, Rejected, Withdrawn, Appeal, Unresolved, Referred | Application status (the REST state parameter). |
since | date | Received on or after (YYYY-MM-DD). |
until | date | Received on or before (YYYY-MM-DD). |
decided_since | date | Decided on or after (YYYY-MM-DD). |
limit | integer 1-50 | Results to return (default 20). |
cursor | string | next_cursor from a previous result. |
get_application
One application by id. Includes agent contacts on plans that have them. Access: all plans, including the free demo. Each new record returned uses one record. Same data as /api/v1/applications/:id.
| Input | Type | Description |
|---|---|---|
idrequired | string | Application id (pa_...). |
get_conditions
The conditions on an application's decision notice. Access: api pro, leads and national. Each new record returned uses one record. Same data as /api/v1/applications/:id/conditions.
| Input | Type | Description |
|---|---|---|
idrequired | string | Application id (pa_...). |
list_authorities
Council names as search_applications expects them, with counts. Free. Access: all plans, including the free demo. Free. Same data as /api/v1/authorities.
| Input | Type | Description |
|---|---|---|
name_contains | string | Only councils whose name contains this text. |
get_usage
Your plan, allowance and records used. Free. Access: all plans, including the free demo. Free. Same data as /api/v1/usage.
No inputs.
search_applications needs a postcode or an authority and returns at most 50 applications per call.
Errors
- A missing or invalid key is an HTTP
401with a JSON-RPC error. - Problems inside a tool (plan does not include it, allowance used, rate limit, not found, bad input) come back as a tool result with
isError: trueand a sentence the assistant can relay, with an upgrade link where relevant. - Successful tool results include a
usageobject withrecords_charged,records_remainingandresets.
Questions? Contact us, or see the help centre.