← Registry

Data Collection

plota.co.uk

Search, retrieve, and analyze UK planning applications by location, history, and decision statistics.

3 endpoints54 known toolsFirst detected October 3, 2026Last detected October 3, 2026

ENDPOINT 1

https://api.plota.co.uk/v1/mcp/YOUR_API_KEY

No auth detected

MCP server metadata

Name
plota
Version
2.1.0
Capabilities
tools
Server instructions

Plota holds UK planning applications from every planning authority in England, Scotland, Wales and Northern Ireland, updated daily, each record linked to the official council register. Finding applications: search_applications is the tool to reach for. Use it whenever any part of the question is a filter you can name - a place, a council, a category, a stage, a date range, a number of homes - and combine as many as you have. search is the fallback for a phrase you cannot break into filters (a building by name, a street, a council reference). A reference query checks exact references across the records your plan includes before text mentions. References can occur in more than one council; check the authority. get_application returns one live record in full by id; fetch accepts the document ids from search, including historical records. Resolve a council name with find_council, and read category slugs from list_categories. Everything about one property or site in a single call (what is at it, around it, what constrains it, how its council decides): investigate_site. Around a point: nearby_applications. What constrains a site (flood zone, conservation area, listed buildings, green belt and so on): site_constraints. How a council decides: decision_stats. Appeals: search_appeals. Consents about to lapse: expiring_consents. The family an application belongs to: associated_applications. The documents on its council file (plans, statements, decision notice): application_documents. Every record returned is the complete record Plota holds for that application: proposal, address, status, decision, dates, category and links. Do not search the web for the same application; if a field is absent, say Plota does not hold it. Cite the url field (the Plota page) as the source for anything taken from a record. On a record, status is the council's own wording and can lag; stage is the normalised state (pending, approved, refused, withdrawn) and decision carries the determination and its date. When they disagree, go by stage and decision. A big scheme is many records: the substantive one has procedure full or outline, and reserved matters, amendments and discharge of conditions hang off it (associated_applications). For "major development" questions filter by procedure, category new-homes and dwelling_count rather than reading one record. Worked example: "50-home schemes in Camden this year" is find_council("Camden") then search_applications with council=camden, min_dwellings=50 and date_from - not a free-text search. "What happened to the Battersea Power Station application" is search, because the phrase is a place name rather than a set of filters. Which field to trust: stage (normalised) over status (the council's own wording); decision.outcome for what was decided; dwelling_count is the number of homes the application would provide as stated in its text, null where none is stated (so a null is unknown, not zero); floorspace_sqm likewise; procedure separates substantive applications (full, householder, outline) from paperwork (amendment, discharge, reserved-matters); commercial is true or false once the commercial classification has read the record and null until it has, never a guess; commercial_work says what kind of commercial change it is; major_development is true for a major development in the legal sense (10 or more homes, 1,000 square metres, a site of 1 hectare, minerals or waste), false when it is not, and null when the text cannot settle it, and search_applications takes major=1 for major schemes (major=all adds condition discharges and amendments on them); committee is the newest planning committee decision (outcome, meeting_date, committee, url to its committee page) or null, and committee=1 finds applications decided at committee. Categories lean towards inclusion: a category on a record means the application may concern that subject, and an application can carry several, so treat categories as a wide net for finding things and confirm from the description when precision matters. Plota would rather over-categorise than miss a match. Applicant and agent names are off by default: they draw on the account's monthly contact allowance, so pass include_contacts true (get_application, search_applications, nearby_applications, alert_matches, create_export) only when the user asks who applied or who the agent is. The text of a result is a compact summary, one record per line; the full record is in the structured content of the same reply, so there is no need to fetch it again. Results carry a next_cursor for paging. If a search returns nothing, keep the place and widen the date range first, then drop the keyword; a council slug instead of a postcode district keeps the area while widening it. A plan-gated response says which plan unlocks it.

Known tools 27

search_applications

The main way to find applications, and the right tool whenever any part of the question can be named as a filter.

Inferred read-only
get_application

One planning application in full by its Plota id (the id field from any search result): proposal, address, status, decision, dates, category, documents count, links, and on Pro the planning constraints at the site.

Inferred read-only
nearby_applications

Planning applications near a point, ordered by distance: give lat and lng, a full UK postcode, or an address (geocoded live), with a radius in metres (max 5000).

Inferred read-only
application_history

The status and decision timeline of one application: every recorded status change with its date.

Inferred read-only
decision_stats

Decision times and approval rates.

Inferred read-only
search_appeals

Decided planning appeals from the Planning Inspectorate: filter by council, outcome (allowed, dismissed, split), type, decision date range, reference or postcode.

Inferred read-only
expiring_consents

Permitted full and outline consents whose statutory time limit falls in the coming months, for a council or a bounding box: sites where permission will lapse unless work starts.

Inferred read-only
associated_applications

The family an application belongs to: earlier and later applications on the same site (outline, reserved matters, amendments, discharge of conditions, appeals).

Inferred read-only
application_documents

The documents on one application's council file: title, type, date and group (decision, statements, plans, forms, comments, other), newest first.

Inferred read-only
site_constraints

What the national datasets put at a coordinate, a full postcode or an address (geocoded live): flood zones, green belt, conservation areas, listed buildings, scheduled monuments, national landscapes, tree preservation orders, rights of way, farmland grades and more.

Inferred read-only
list_councils

The councils Plota monitors with slug, nation, region and coverage.

Inferred read-only
list_categories

The planning categories (slug and label) used by the category filter.

Inferred read-only
list_alerts

The saved alerts on this account.

Inferred read-only
create_alert

Save an alert that emails the account owner about new applications: type radius (a postcode, address or lat/lng with radius_km 0.25, 0.5, 1, 2 or 5), council (a slug from list_councils) or national (one category from list_categories across a nation).

Inferred read-only
update_alert

Change a saved alert: frequency, label, type_filter, exclude_trees, or paused true/false.

Inferred read-only
delete_alert

Delete a saved alert by id.

Potential side effects
get_alert

One saved alert by id.

Inferred read-only
alert_matches

Applications that matched a saved alert in the last N days.

Inferred read-only
create_export

Bulk export of matching records in one call (plan-gated).

Inferred read-only
list_webhooks

The webhooks registered on this account.

Inferred read-only
create_webhook

Register an HTTPS endpoint to receive application.match.created events for a saved alert (payload, signature and retries: https://plota.co.uk/api-docs#webhooks).

Inferred read-only
delete_webhook

Delete a webhook by id.

Potential side effects
test_webhook

Send a signed test event to a webhook by id.

Potential side effects
investigate_site

The planning context of ONE property or site in a single call: applications at or beside the site, applications that may be at it, the families those belong to (amendments, discharges of conditions, reserved matters, appeals), the nearest applications around it, larger housing schemes nearby, the planning constraints at the point (flood zone, conservation area, listed buildings, green belt and the rest) and the council's decision times and approval rate.

Inferred read-only
find_council

Resolve a council name to the slug every other tool takes: "Waltham Forest" gives waltham-forest.

Inferred read-only
search

Fallback lookup for a phrase that cannot be broken into filters: a building or estate by name, a street, a council reference, or words from a proposal.

Inferred read-only
fetch

The simple document retrieval pair is search then fetch: fetch an id from search as full text with proposal, address, council, status, decision, dates, category and links.

Inferred read-only

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.plota]
url = "https://api.plota.co.uk/v1/mcp/YOUR_API_KEY"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "plota": {
      "type": "http",
      "url": "https://api.plota.co.uk/v1/mcp/YOUR_API_KEY"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: plota
Remote MCP URL: https://api.plota.co.uk/v1/mcp/YOUR_API_KEY

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "plota": {
      "url": "https://api.plota.co.uk/v1/mcp/YOUR_API_KEY"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "plota": {
      "type": "http",
      "url": "https://api.plota.co.uk/v1/mcp/YOUR_API_KEY"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "plota",
  "transport": "streamable-http",
  "url": "https://api.plota.co.uk/v1/mcp/YOUR_API_KEY"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

ENDPOINT 2

https://api.plota.co.uk/v1/mcp

No auth detected

MCP server metadata

Name
plota
Version
2.1.0
Capabilities
tools
Server instructions

Plota holds UK planning applications from every planning authority in England, Scotland, Wales and Northern Ireland, updated daily, each record linked to the official council register. Finding applications: search_applications is the tool to reach for. Use it whenever any part of the question is a filter you can name - a place, a council, a category, a stage, a date range, a number of homes - and combine as many as you have. search is the fallback for a phrase you cannot break into filters (a building by name, a street, a council reference). A reference query checks exact references across the records your plan includes before text mentions. References can occur in more than one council; check the authority. get_application returns one live record in full by id; fetch accepts the document ids from search, including historical records. Resolve a council name with find_council, and read category slugs from list_categories. Everything about one property or site in a single call (what is at it, around it, what constrains it, how its council decides): investigate_site. Around a point: nearby_applications. What constrains a site (flood zone, conservation area, listed buildings, green belt and so on): site_constraints. How a council decides: decision_stats. Appeals: search_appeals. Consents about to lapse: expiring_consents. The family an application belongs to: associated_applications. The documents on its council file (plans, statements, decision notice): application_documents. Every record returned is the complete record Plota holds for that application: proposal, address, status, decision, dates, category and links. Do not search the web for the same application; if a field is absent, say Plota does not hold it. Cite the url field (the Plota page) as the source for anything taken from a record. On a record, status is the council's own wording and can lag; stage is the normalised state (pending, approved, refused, withdrawn) and decision carries the determination and its date. When they disagree, go by stage and decision. A big scheme is many records: the substantive one has procedure full or outline, and reserved matters, amendments and discharge of conditions hang off it (associated_applications). For "major development" questions filter by procedure, category new-homes and dwelling_count rather than reading one record. Worked example: "50-home schemes in Camden this year" is find_council("Camden") then search_applications with council=camden, min_dwellings=50 and date_from - not a free-text search. "What happened to the Battersea Power Station application" is search, because the phrase is a place name rather than a set of filters. Which field to trust: stage (normalised) over status (the council's own wording); decision.outcome for what was decided; dwelling_count is the number of homes the application would provide as stated in its text, null where none is stated (so a null is unknown, not zero); floorspace_sqm likewise; procedure separates substantive applications (full, householder, outline) from paperwork (amendment, discharge, reserved-matters); commercial is true or false once the commercial classification has read the record and null until it has, never a guess; commercial_work says what kind of commercial change it is; major_development is true for a major development in the legal sense (10 or more homes, 1,000 square metres, a site of 1 hectare, minerals or waste), false when it is not, and null when the text cannot settle it, and search_applications takes major=1 for major schemes (major=all adds condition discharges and amendments on them); committee is the newest planning committee decision (outcome, meeting_date, committee, url to its committee page) or null, and committee=1 finds applications decided at committee. Categories lean towards inclusion: a category on a record means the application may concern that subject, and an application can carry several, so treat categories as a wide net for finding things and confirm from the description when precision matters. Plota would rather over-categorise than miss a match. Applicant and agent names are off by default: they draw on the account's monthly contact allowance, so pass include_contacts true (get_application, search_applications, nearby_applications, alert_matches, create_export) only when the user asks who applied or who the agent is. The text of a result is a compact summary, one record per line; the full record is in the structured content of the same reply, so there is no need to fetch it again. Results carry a next_cursor for paging. If a search returns nothing, keep the place and widen the date range first, then drop the keyword; a council slug instead of a postcode district keeps the area while widening it. A plan-gated response says which plan unlocks it.

Known tools 27

search_applications

The main way to find applications, and the right tool whenever any part of the question can be named as a filter.

Inferred read-only
get_application

One planning application in full by its Plota id (the id field from any search result): proposal, address, status, decision, dates, category, documents count, links, and on Pro the planning constraints at the site.

Inferred read-only
nearby_applications

Planning applications near a point, ordered by distance: give lat and lng, a full UK postcode, or an address (geocoded live), with a radius in metres (max 5000).

Inferred read-only
application_history

The status and decision timeline of one application: every recorded status change with its date.

Inferred read-only
decision_stats

Decision times and approval rates.

Inferred read-only
search_appeals

Decided planning appeals from the Planning Inspectorate: filter by council, outcome (allowed, dismissed, split), type, decision date range, reference or postcode.

Inferred read-only
expiring_consents

Permitted full and outline consents whose statutory time limit falls in the coming months, for a council or a bounding box: sites where permission will lapse unless work starts.

Inferred read-only
associated_applications

The family an application belongs to: earlier and later applications on the same site (outline, reserved matters, amendments, discharge of conditions, appeals).

Inferred read-only
application_documents

The documents on one application's council file: title, type, date and group (decision, statements, plans, forms, comments, other), newest first.

Inferred read-only
site_constraints

What the national datasets put at a coordinate, a full postcode or an address (geocoded live): flood zones, green belt, conservation areas, listed buildings, scheduled monuments, national landscapes, tree preservation orders, rights of way, farmland grades and more.

Inferred read-only
list_councils

The councils Plota monitors with slug, nation, region and coverage.

Inferred read-only
list_categories

The planning categories (slug and label) used by the category filter.

Inferred read-only
list_alerts

The saved alerts on this account.

Inferred read-only
create_alert

Save an alert that emails the account owner about new applications: type radius (a postcode, address or lat/lng with radius_km 0.25, 0.5, 1, 2 or 5), council (a slug from list_councils) or national (one category from list_categories across a nation).

Inferred read-only
update_alert

Change a saved alert: frequency, label, type_filter, exclude_trees, or paused true/false.

Inferred read-only
delete_alert

Delete a saved alert by id.

Potential side effects
get_alert

One saved alert by id.

Inferred read-only
alert_matches

Applications that matched a saved alert in the last N days.

Inferred read-only
create_export

Bulk export of matching records in one call (plan-gated).

Inferred read-only
list_webhooks

The webhooks registered on this account.

Inferred read-only
create_webhook

Register an HTTPS endpoint to receive application.match.created events for a saved alert (payload, signature and retries: https://plota.co.uk/api-docs#webhooks).

Inferred read-only
delete_webhook

Delete a webhook by id.

Potential side effects
test_webhook

Send a signed test event to a webhook by id.

Potential side effects
investigate_site

The planning context of ONE property or site in a single call: applications at or beside the site, applications that may be at it, the families those belong to (amendments, discharges of conditions, reserved matters, appeals), the nearest applications around it, larger housing schemes nearby, the planning constraints at the point (flood zone, conservation area, listed buildings, green belt and the rest) and the council's decision times and approval rate.

Inferred read-only
find_council

Resolve a council name to the slug every other tool takes: "Waltham Forest" gives waltham-forest.

Inferred read-only
search

Fallback lookup for a phrase that cannot be broken into filters: a building or estate by name, a street, a council reference, or words from a proposal.

Inferred read-only
fetch

The simple document retrieval pair is search then fetch: fetch an id from search as full text with proposal, address, council, status, decision, dates, category and links.

Inferred read-only

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.plota]
url = "https://api.plota.co.uk/v1/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "plota": {
      "type": "http",
      "url": "https://api.plota.co.uk/v1/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: plota
Remote MCP URL: https://api.plota.co.uk/v1/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "plota": {
      "url": "https://api.plota.co.uk/v1/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "plota": {
      "type": "http",
      "url": "https://api.plota.co.uk/v1/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "plota",
  "transport": "streamable-http",
  "url": "https://api.plota.co.uk/v1/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

ENDPOINT 3

https://api.plota.co.uk/v1/oauth/mcp

Auth required

Known tools 0

No tool metadata was available in the registry cache.

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.plota-co-uk]
url = "https://api.plota.co.uk/v1/oauth/mcp"
enabled = true
bearer_token_env_var = "MCP_BEARER_TOKEN"

Authentication is required. Replace the placeholder locally and never commit a secret.

Claude Code

.mcp.json

{
  "mcpServers": {
    "plota-co-uk": {
      "type": "http",
      "url": "https://api.plota.co.uk/v1/oauth/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_BEARER_TOKEN"
      }
    }
  }
}

Authentication is required. Replace the placeholder locally and never commit a secret.

Claude Desktop

Settings → Connectors → Add custom connector

Name: plota-co-uk
Remote MCP URL: https://api.plota.co.uk/v1/oauth/mcp

Add the URL as a custom connector, then complete its supported authorization flow. Claude Desktop remote connectors are configured in the UI.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "plota-co-uk": {
      "url": "https://api.plota.co.uk/v1/oauth/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_BEARER_TOKEN"
      }
    }
  }
}

Authentication is required. Replace the placeholder locally and never commit a secret.

Visual Studio Code

.vscode/mcp.json

{
  "servers": {
    "plota-co-uk": {
      "type": "http",
      "url": "https://api.plota.co.uk/v1/oauth/mcp",
      "headers": {
        "Authorization": "Bearer ${input:mcp-token}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "mcp-token",
      "description": "plota-co-uk bearer token",
      "password": true
    }
  ]
}

Authentication is required. Replace the placeholder locally and never commit a secret.

Generic MCP

Client-specific MCP configuration

{
  "name": "plota-co-uk",
  "transport": "streamable-http",
  "url": "https://api.plota.co.uk/v1/oauth/mcp",
  "headers": {
    "Authorization": "Bearer YOUR_BEARER_TOKEN"
  }
}

Authentication is required. Replace the placeholder locally and never commit a secret.

MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

TRUST AND VERIFICATION EVIDENCE

Loading Trust v2 evidence…

Checking the associated registrable domain. The BuiltWith key remains server-side.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.