{
  "name": "uk-planning-api",
  "description": "UK planning applications, enforcement notices and appeals \u2014 application search, officer and agent analytics, council statistics, appeal outcomes and a daily change feed. 1,642,073 applications, 613,776 appeals, 30,745 enforcement notices across 329 councils complete from January 2023. Generated 2026-10-08.",
  "version": "1.2.0",
  "support": {
    "issues_url": "https://github.com/JanHendrikVermeer/ukplanningapi/issues",
    "email": "help@ukplanningapi.co.uk",
    "note": "Report wrong, missing or stale planning data, and API or tool bugs, on the public tracker. Account, key and billing questions go to the email instead \u2014 those are not public."
  },
  "transport": "streamable-http",
  "endpoint": "https://ukplanningapi.co.uk/mcp",
  "auth": {
    "type": [
      "api_key",
      "oauth2"
    ],
    "api_key": {
      "header": "X-Api-Key",
      "signup_url": "https://ukplanningapi.co.uk/api-signup"
    },
    "oauth2": {
      "authorization_server_metadata": "https://ukplanningapi.co.uk/.well-known/oauth-authorization-server",
      "protected_resource_metadata": "https://ukplanningapi.co.uk/.well-known/oauth-protected-resource/mcp",
      "dynamic_client_registration": true
    },
    "note": "Anonymous requests to the MCP endpoint get 401, including tools/list \u2014 sign up for an API key or connect via OAuth to call tools. This document's own `tools` array below is the free way to browse the catalogue without either."
  },
  "tools": [
    {
      "name": "fetch",
      "description": "Fetch one planning application in full by the id returned from `search`."
    },
    {
      "name": "get_agent",
      "description": "Planning agent profile \u2014 application count, approval rate, councils worked."
    },
    {
      "name": "get_appeal",
      "description": "Full detail for one appeal by its case reference."
    },
    {
      "name": "get_appeal_stats",
      "description": "Appeal overturn rates for a council by case type (householder, full, enforcement, etc.) \u2014 allow vs dismiss rate,\u2026"
    },
    {
      "name": "get_application",
      "description": "Full detail for a single planning application by its id ('{council_id}-{reference}'), as returned by\u2026"
    },
    {
      "name": "get_application_appeals",
      "description": "Every appeal held for one planning application, by its id ('42-06/01234/HH')."
    },
    {
      "name": "get_changes",
      "description": "Daily change feed \u2014 new applications, status changes, decisions issued."
    },
    {
      "name": "get_council_fields",
      "description": "What data this council actually publishes \u2014 call this BEFORE building a query for a specific council, instead of\u2026"
    },
    {
      "name": "get_council_stats",
      "description": "Live council planning performance \u2014 approval rate, average decision time, volume."
    },
    {
      "name": "get_council_summary",
      "description": "Pre-computed council planning stats \u2014 approval rate, decision time, type breakdown."
    },
    {
      "name": "get_council_trends",
      "description": "Quarterly approval rate trend for a council over time."
    },
    {
      "name": "get_country_stats",
      "description": "National planning stats \u2014 approval rate, decision time, type breakdown."
    },
    {
      "name": "get_country_trends",
      "description": "Quarterly approval rate trend per country over time."
    },
    {
      "name": "get_county_stats",
      "description": "County-level planning stats \u2014 approval rate, decision time, type breakdown."
    },
    {
      "name": "get_county_trends",
      "description": "Quarterly approval rate trend for a county over time."
    },
    {
      "name": "get_district_stats",
      "description": "Planning stats, including appeal overturns, for a postcode district (e.g."
    },
    {
      "name": "get_enforcement",
      "description": "Full detail for one enforcement notice: the breach, status, decision, its timeline of events, and any linked appeals."
    },
    {
      "name": "get_location_constraints",
      "description": "Conservation areas and Article 4 directions at a FULL postcode ('NW3 6UP' \u2014 districts are rejected, their centroid\u2026"
    },
    {
      "name": "get_my_usage",
      "description": "How much of this month's API allowance has been used, and how much is left."
    },
    {
      "name": "get_officer",
      "description": "Planning officer track record \u2014 approval rate, refusal rate, breakdown by type."
    },
    {
      "name": "get_officer_history",
      "description": "Quarterly caseload history for a planning officer, including appeal overturns."
    },
    {
      "name": "get_postcode_stats",
      "description": "All-time planning stats, including appeal overturns, for a full postcode unit (e.g."
    },
    {
      "name": "get_site_history",
      "description": "Every application, appeal and enforcement notice held for the SITE of one application \u2014 the property's full planning\u2026"
    },
    {
      "name": "get_ward_stats",
      "description": "Ward-level planning stats, including appeal overturns, by quarter."
    },
    {
      "name": "list_addresses",
      "description": "List addresses (number, street, postcode, UPRN) from the register, scoped by postcode at any precision ('SE1', 'SE1\u2026"
    },
    {
      "name": "list_councils",
      "description": "UK councils in the database with coverage metadata."
    },
    {
      "name": "list_postcodes",
      "description": "List postcodes with their ward, council and coordinates \u2014 filter by postcode prefix ('NW3'), ward name, council name,\u2026"
    },
    {
      "name": "list_properties",
      "description": "List properties from the full-UK register with planning-relevant attributes: address, area hierarchy\u2026"
    },
    {
      "name": "list_wards",
      "description": "Ward names observed in one council's planning data \u2014 feeds get_ward_stats and the ward filters on\u2026"
    },
    {
      "name": "search",
      "description": "Search UK planning applications from one plain-English query."
    },
    {
      "name": "search_agents",
      "description": "Find planning agents/architects by personal name and/or company name (substring, case-insensitive)."
    },
    {
      "name": "search_appeals",
      "description": "Search appeals across three signals that are labelled, never merged."
    },
    {
      "name": "search_applications",
      "description": "Search UK planning applications by postcode, council, date range, decision, type, or description text."
    },
    {
      "name": "search_enforcement",
      "description": "Search planning enforcement notices (alleged breaches of planning control)."
    },
    {
      "name": "search_officers",
      "description": "Find planning officers by name (substring, case-insensitive), optionally within one council."
    }
  ],
  "docs": "https://ukplanningapi.co.uk/mcp-setup"
}