Skip to content

UK public services

by fourzerotwo.si · remote · no sign-in to list tools · v1.0.1 · published by si.fourzerotwo

NHS organisations, schools, care quality ratings, food hygiene and policing for any UK area.

Changes · 30

33 tools: 30 change things and 3 only read.

Scanned Oct 21, 2026

5 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http uk-public-services https://fourzerotwo.si/mcp/v/uk-public-services

Findings

Matches of fixed checks, with the text they matched.

5 warn
  • The server marks "nhs-organisations__organisation" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input takes a statement or command to run (input.code), which can change anything it can reach.

    What this check looks for
  • The server marks "schools__near" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "open": a word for a change.

    What this check looks for
  • The server marks "uk-food-hygiene__business-types" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "uk-food-hygiene__business-types" says "type": a word for a change.

    What this check looks for
  • The server marks "uk-police__stop-search-force" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "uk-police__stop-search-force" says "stop": a word for a change.

    What this check looks for
  • The server marks "uk-police__stop-search-near" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "uk-police__stop-search-near" says "stop": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

33 tools

Changes things 30Claude Code: ask
  • nhs-organisations__organisationName, status, address, phone/website, roles and relationships (commissioner, operator, geography) for one ODS code.1 finding

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "nhs-organisations__organisation" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input takes a statement or command to run (input.code), which can change anything it can reach.

      What this check looks for
    Description, as the server wrote it
    Name, status, address, phone/website, roles and relationships (commissioner, operator, geography) for one ODS code. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: NHS Organisations (ODS): Organisation by ODS code
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • nhs-organisations__rolesEvery ODS role code with its name, and the friendly aliases search accepts.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Every ODS role code with its name, and the friendly aliases search accepts. Free within the daily allowance, then $0.0005 USDC per call via x402.

    Annotations the server declares

    • title: NHS Organisations (ODS): Role codes
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • schools__nearOpen schools within a radius of a postcode (default 3 km, max 15), nearest first, optionally by phase.1 finding

    Why it is in this group

    • The description's first verb is "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "schools__near" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Open schools within a radius of a postcode (default 3 km, max 15), nearest first, optionally by phase. Free within the daily allowance, then $0.002 USDC per call via x402.

    Annotations the server declares

    • title: Schools in England: Schools near a postcode
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • schools__schoolFull register record for one establishment: type, status, phase, ages, capacity, pupils, FSM, trust, SEN provision, address, LA, ward, constituency.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Full register record for one establishment: type, status, phase, ages, capacity, pupils, FSM, trust, SEN provision, address, LA, ward, constituency. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: Schools in England: School by URN
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-food-hygiene__authoritiesEvery local authority that runs a food hygiene scheme.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Every local authority that runs a food hygiene scheme. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Food Hygiene Ratings: Local authorities
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-food-hygiene__businessRating, scores, inspection date and authority for one business.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Rating, scores, inspection date and authority for one business. Free within the daily allowance, then $0.002 USDC per call via x402.

    Annotations the server declares

    • title: UK Food Hygiene Ratings: Business rating
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-food-hygiene__business-typesBusiness type codes used in ratings.1 finding

    Why it is in this group

    • The name "uk-food-hygiene__business-types" says "type": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "uk-food-hygiene__business-types" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "uk-food-hygiene__business-types" says "type": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Business type codes used in ratings. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Food Hygiene Ratings: Business types
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-food-hygiene__nearRated food businesses within a distance of a point.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Rated food businesses within a distance of a point. Free within the daily allowance, then $0.002 USDC per call via x402.

    Annotations the server declares

    • title: UK Food Hygiene Ratings: Businesses near a point
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-food-hygiene__ratingsValid rating values and their meaning.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Valid rating values and their meaning. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Food Hygiene Ratings: Rating values
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-food-hygiene__regionsRegions used by the ratings scheme.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Regions used by the ratings scheme. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Food Hygiene Ratings: Regions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-food-hygiene__score-descriptorsWhat each hygiene, structural and management score means for a business.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    What each hygiene, structural and management score means for a business. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Food Hygiene Ratings: Score descriptors
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__categoriesValid crime categories for a month.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Valid crime categories for a month. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Crime categories
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__crime-outcomesFull outcome history for one crime by its persistent id.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Full outcome history for one crime by its persistent id. Free within the daily allowance, then $0.002 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Outcomes for a crime
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__crimes-at-locationCrimes snapped to the nearest anonymised location to a point.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Crimes snapped to the nearest anonymised location to a point. Free within the daily allowance, then $0.003 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Crimes at a location
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__crimes-no-locationCrimes a force could not map to a location, by category.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Crimes a force could not map to a location, by category. Free within the daily allowance, then $0.002 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Crimes with no location
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__forceContact details, website and engagement methods for a force.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Contact details, website and engagement methods for a force. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Force details
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__force-officersSenior officers of a force with biographies.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Senior officers of a force with biographies. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Senior officers
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__forcesEvery police force with its id.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Every police force with its id. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Police forces
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__last-updatedThe latest month with crime data available.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The latest month with crime data available. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Last updated
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__locate-neighbourhoodWhich force and neighbourhood covers a lat,lng point.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Which force and neighbourhood covers a lat,lng point. Free within the daily allowance, then $0.002 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Locate neighbourhood
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__neighbourhoodContact details, description and centre of a neighbourhood.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Contact details, description and centre of a neighbourhood. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Neighbourhood details
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__neighbourhood-boundaryBoundary polygon of a neighbourhood as lat/lng points.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Boundary polygon of a neighbourhood as lat/lng points. Free within the daily allowance, then $0.002 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Neighbourhood boundary
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__neighbourhood-eventsUpcoming community events run by a neighbourhood team.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Upcoming community events run by a neighbourhood team. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Neighbourhood events
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__neighbourhood-prioritiesIssues a neighbourhood team has committed to tackle, and what it did.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Issues a neighbourhood team has committed to tackle, and what it did. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Neighbourhood priorities
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__neighbourhood-teamOfficers in a neighbourhood policing team.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Officers in a neighbourhood policing team. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Neighbourhood team
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__neighbourhoodsNeighbourhood policing areas in a force.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Neighbourhood policing areas in a force. Free within the daily allowance, then $0.001 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Neighbourhoods
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__outcomes-at-locationCase outcomes for crimes near a point.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Case outcomes for crimes near a point. Free within the daily allowance, then $0.003 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Outcomes near a point
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__stop-search-forceStop and search records for a force and month.1 finding

    Why it is in this group

    • The name "uk-police__stop-search-force" says "stop": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "uk-police__stop-search-force" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "uk-police__stop-search-force" says "stop": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Stop and search records for a force and month. Free within the daily allowance, then $0.003 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Stop and search by force
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__stop-search-nearStop and search records within a mile of a point.1 finding

    Why it is in this group

    • The name "uk-police__stop-search-near" says "stop": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "uk-police__stop-search-near" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "uk-police__stop-search-near" says "stop": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Stop and search records within a mile of a point. Free within the daily allowance, then $0.003 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Stop and search near a point
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • uk-police__street-crimeAll street-level crimes within a mile of a point for a month.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    All street-level crimes within a mile of a point for a month. Free within the daily allowance, then $0.003 USDC per call via x402.

    Annotations the server declares

    • title: UK Police Data: Street crime near a point
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 3Claude Code: allow

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http uk-public-services https://fourzerotwo.si/mcp/v/uk-public-services

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__uk-public-services__nhs-organisations__search",
      "mcp__uk-public-services__schools__search",
      "mcp__uk-public-services__uk-food-hygiene__search"
    ],
    "ask": [
      "mcp__uk-public-services__nhs-organisations__organisation",
      "mcp__uk-public-services__nhs-organisations__roles",
      "mcp__uk-public-services__schools__school",
      "mcp__uk-public-services__schools__near",
      "mcp__uk-public-services__uk-food-hygiene__near",
      "mcp__uk-public-services__uk-food-hygiene__business",
      "mcp__uk-public-services__uk-food-hygiene__authorities",
      "mcp__uk-public-services__uk-food-hygiene__business-types",
      "mcp__uk-public-services__uk-food-hygiene__ratings",
      "mcp__uk-public-services__uk-food-hygiene__regions",
      "mcp__uk-public-services__uk-food-hygiene__score-descriptors",
      "mcp__uk-public-services__uk-police__street-crime",
      "mcp__uk-public-services__uk-police__crimes-at-location",
      "mcp__uk-public-services__uk-police__crimes-no-location",
      "mcp__uk-public-services__uk-police__categories",
      "mcp__uk-public-services__uk-police__last-updated",
      "mcp__uk-public-services__uk-police__outcomes-at-location",
      "mcp__uk-public-services__uk-police__crime-outcomes",
      "mcp__uk-public-services__uk-police__stop-search-force",
      "mcp__uk-public-services__uk-police__forces",
      "mcp__uk-public-services__uk-police__force",
      "mcp__uk-public-services__uk-police__force-officers",
      "mcp__uk-public-services__uk-police__neighbourhoods",
      "mcp__uk-public-services__uk-police__neighbourhood-team",
      "mcp__uk-public-services__uk-police__neighbourhood-events",
      "mcp__uk-public-services__uk-police__neighbourhood-priorities",
      "mcp__uk-public-services__uk-police__neighbourhood-boundary",
      "mcp__uk-public-services__uk-police__locate-neighbourhood",
      "mcp__uk-public-services__uk-police__stop-search-near",
      "mcp__uk-public-services__uk-police__neighbourhood"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as uk-public-services. Review it before you use it.