NHS organisations, schools, care quality ratings, food hygiene and policing for any UK area.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional free key from https://fourzerotwo.si/free (raises the free allowance from 100 to 500 calls/day)
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh 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.
ODS code, e.g. RVV (trust) or G82052 (GP practice)
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.
| Argument | Type | Description |
|---|---|---|
| code* | string | ODS code, e.g. RVV (trust) or G82052 (GP practice) |
{
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"description": "ODS code, e.g. RVV (trust) or G82052 (GP practice)"
}
}
}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.
No arguments.
{
"type": "object",
"properties": {}
}Find NHS organisations by name, postcode (or district) and role: gp, pharmacy, trust, trust-site, icb, dental, optical, care-home, hospice, or a role code. Free within the daily allowance, then $0.001 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| name | string | Name contains |
| role | string | gp | pharmacy | trust | trust-site | icb | dental | optical | care-home | hospice | RO code |
| limit | integer | Max results (default 20, max 100) |
| status | string | active (default) | inactive | any |
| postcode | string | Postcode or district, e.g. CT9 |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name contains"
},
"role": {
"type": "string",
"description": "gp | pharmacy | trust | trust-site | icb | dental | optical | care-home | hospice | RO code"
},
"limit": {
"type": "integer",
"description": "Max results (default 20, max 100)"
},
"status": {
"type": "string",
"description": "active (default) | inactive | any"
},
"postcode": {
"type": "string",
"description": "Postcode or district, e.g. CT9"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (default 20) |
| phase | string | primary | secondary | … |
| postcode* | string | Full UK postcode |
| radius_km | string | Radius in km (default 3) |
{
"type": "object",
"required": [
"postcode"
],
"properties": {
"limit": {
"type": "integer",
"description": "Max results (default 20)"
},
"phase": {
"type": "string",
"description": "primary | secondary | …"
},
"postcode": {
"type": "string",
"description": "Full UK postcode"
},
"radius_km": {
"type": "string",
"description": "Radius in km (default 3)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| urn* | integer | Unique reference number |
{
"type": "object",
"required": [
"urn"
],
"properties": {
"urn": {
"type": "integer",
"description": "Unique reference number"
}
}
}Find schools by name, postcode or district, and/or local authority (name or code), optionally by phase; open schools by default. Free within the daily allowance, then $0.001 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| la | string | Local authority name or code, e.g. Kent or 886 |
| name | string | Name contains |
| limit | integer | Max results (default 20, max 100) |
| phase | string | nursery | primary | secondary | 16-plus | all-through | middle-primary | middle-secondary |
| status | string | open (default) | any |
| postcode | string | Postcode or district, e.g. CT9 |
{
"type": "object",
"properties": {
"la": {
"type": "string",
"description": "Local authority name or code, e.g. Kent or 886"
},
"name": {
"type": "string",
"description": "Name contains"
},
"limit": {
"type": "integer",
"description": "Max results (default 20, max 100)"
},
"phase": {
"type": "string",
"description": "nursery | primary | secondary | 16-plus | all-through | middle-primary | middle-secondary"
},
"status": {
"type": "string",
"description": "open (default) | any"
},
"postcode": {
"type": "string",
"description": "Postcode or district, e.g. CT9"
}
}
}Every local authority that runs a food hygiene scheme. Free within the daily allowance, then $0.001 USDC per call via x402.
No arguments.
{
"type": "object",
"properties": {}
}Rating, scores, inspection date and authority for one business. Free within the daily allowance, then $0.002 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| id* | integer | FHRS id from a search result |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "FHRS id from a search result"
}
}
}Business type codes used in ratings. Free within the daily allowance, then $0.001 USDC per call via x402.
No arguments.
{
"type": "object",
"properties": {}
}Rated food businesses within a distance of a point. Free within the daily allowance, then $0.002 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| latitude* | string | Latitude |
| longitude* | string | Longitude |
| maxDistanceLimit | integer | Miles (default 1) |
{
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "string",
"description": "Latitude"
},
"longitude": {
"type": "string",
"description": "Longitude"
},
"maxDistanceLimit": {
"type": "integer",
"description": "Miles (default 1)"
}
}
}Valid rating values and their meaning. Free within the daily allowance, then $0.001 USDC per call via x402.
No arguments.
{
"type": "object",
"properties": {}
}Regions used by the ratings scheme. Free within the daily allowance, then $0.001 USDC per call via x402.
No arguments.
{
"type": "object",
"properties": {}
}What each hygiene, structural and management score means for a business. Free within the daily allowance, then $0.001 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| establishmentId* | integer | FHRS id |
{
"type": "object",
"required": [
"establishmentId"
],
"properties": {
"establishmentId": {
"type": "integer",
"description": "FHRS id"
}
}
}Find rated food businesses by name and/or address or postcode. Free within the daily allowance, then $0.002 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| name | string | Business name |
| address | string | Address or postcode |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Business name"
},
"address": {
"type": "string",
"description": "Address or postcode"
}
}
}Valid crime categories for a month. Free within the daily allowance, then $0.001 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| date | string | Month as YYYY-MM (default: latest) |
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Month as YYYY-MM (default: latest)"
}
}
}Full outcome history for one crime by its persistent id. Free within the daily allowance, then $0.002 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| persistent_id* | string | 64-character persistent crime id from a crime result |
{
"type": "object",
"required": [
"persistent_id"
],
"properties": {
"persistent_id": {
"type": "string",
"description": "64-character persistent crime id from a crime result"
}
}
}Crimes snapped to the nearest anonymised location to a point. Free within the daily allowance, then $0.003 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| lat* | string | Latitude |
| lng* | string | Longitude |
| date | string | Month as YYYY-MM (default: latest) |
{
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "string",
"description": "Latitude"
},
"lng": {
"type": "string",
"description": "Longitude"
},
"date": {
"type": "string",
"description": "Month as YYYY-MM (default: latest)"
}
}
}Crimes a force could not map to a location, by category. Free within the daily allowance, then $0.002 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| date | string | Month as YYYY-MM (default: latest) |
| force* | string | Police force id, e.g. "metropolitan" (see forces) |
| category* | string | Crime category, e.g. "all-crime" |
{
"type": "object",
"required": [
"category",
"force"
],
"properties": {
"date": {
"type": "string",
"description": "Month as YYYY-MM (default: latest)"
},
"force": {
"type": "string",
"description": "Police force id, e.g. \"metropolitan\" (see forces)"
},
"category": {
"type": "string",
"description": "Crime category, e.g. \"all-crime\""
}
}
}Contact details, website and engagement methods for a force. Free within the daily allowance, then $0.001 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| force* | string | Police force id, e.g. "metropolitan" (see forces) |
{
"type": "object",
"required": [
"force"
],
"properties": {
"force": {
"type": "string",
"description": "Police force id, e.g. \"metropolitan\" (see forces)"
}
}
}Senior officers of a force with biographies. Free within the daily allowance, then $0.001 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| force* | string | Police force id, e.g. "metropolitan" (see forces) |
{
"type": "object",
"required": [
"force"
],
"properties": {
"force": {
"type": "string",
"description": "Police force id, e.g. \"metropolitan\" (see forces)"
}
}
}Every police force with its id. Free within the daily allowance, then $0.001 USDC per call via x402.
No arguments.
{
"type": "object",
"properties": {}
}The latest month with crime data available. Free within the daily allowance, then $0.001 USDC per call via x402.
No arguments.
{
"type": "object",
"properties": {}
}Which force and neighbourhood covers a lat,lng point. Free within the daily allowance, then $0.002 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| q* | string | Point as "lat,lng" |
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"description": "Point as \"lat,lng\""
}
}
}Contact details, description and centre of a neighbourhood. Free within the daily allowance, then $0.001 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| force* | string | Police force id, e.g. "metropolitan" (see forces) |
| neighbourhood* | string | Neighbourhood id within the force (see neighbourhoods) |
{
"type": "object",
"required": [
"force",
"neighbourhood"
],
"properties": {
"force": {
"type": "string",
"description": "Police force id, e.g. \"metropolitan\" (see forces)"
},
"neighbourhood": {
"type": "string",
"description": "Neighbourhood id within the force (see neighbourhoods)"
}
}
}Boundary polygon of a neighbourhood as lat/lng points. Free within the daily allowance, then $0.002 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| force* | string | Police force id, e.g. "metropolitan" (see forces) |
| neighbourhood* | string | Neighbourhood id within the force (see neighbourhoods) |
{
"type": "object",
"required": [
"force",
"neighbourhood"
],
"properties": {
"force": {
"type": "string",
"description": "Police force id, e.g. \"metropolitan\" (see forces)"
},
"neighbourhood": {
"type": "string",
"description": "Neighbourhood id within the force (see neighbourhoods)"
}
}
}Upcoming community events run by a neighbourhood team. Free within the daily allowance, then $0.001 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| force* | string | Police force id, e.g. "metropolitan" (see forces) |
| neighbourhood* | string | Neighbourhood id within the force (see neighbourhoods) |
{
"type": "object",
"required": [
"force",
"neighbourhood"
],
"properties": {
"force": {
"type": "string",
"description": "Police force id, e.g. \"metropolitan\" (see forces)"
},
"neighbourhood": {
"type": "string",
"description": "Neighbourhood id within the force (see neighbourhoods)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| force* | string | Police force id, e.g. "metropolitan" (see forces) |
| neighbourhood* | string | Neighbourhood id within the force (see neighbourhoods) |
{
"type": "object",
"required": [
"force",
"neighbourhood"
],
"properties": {
"force": {
"type": "string",
"description": "Police force id, e.g. \"metropolitan\" (see forces)"
},
"neighbourhood": {
"type": "string",
"description": "Neighbourhood id within the force (see neighbourhoods)"
}
}
}Officers in a neighbourhood policing team. Free within the daily allowance, then $0.001 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| force* | string | Police force id, e.g. "metropolitan" (see forces) |
| neighbourhood* | string | Neighbourhood id within the force (see neighbourhoods) |
{
"type": "object",
"required": [
"force",
"neighbourhood"
],
"properties": {
"force": {
"type": "string",
"description": "Police force id, e.g. \"metropolitan\" (see forces)"
},
"neighbourhood": {
"type": "string",
"description": "Neighbourhood id within the force (see neighbourhoods)"
}
}
}Neighbourhood policing areas in a force. Free within the daily allowance, then $0.001 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| force* | string | Police force id, e.g. "metropolitan" (see forces) |
{
"type": "object",
"required": [
"force"
],
"properties": {
"force": {
"type": "string",
"description": "Police force id, e.g. \"metropolitan\" (see forces)"
}
}
}Case outcomes for crimes near a point. Free within the daily allowance, then $0.003 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| lat* | string | Latitude |
| lng* | string | Longitude |
| date | string | Month as YYYY-MM (default: latest) |
{
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "string",
"description": "Latitude"
},
"lng": {
"type": "string",
"description": "Longitude"
},
"date": {
"type": "string",
"description": "Month as YYYY-MM (default: latest)"
}
}
}Stop and search records for a force and month. Free within the daily allowance, then $0.003 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| date | string | Month as YYYY-MM (default: latest) |
| force* | string | Police force id, e.g. "metropolitan" (see forces) |
{
"type": "object",
"required": [
"force"
],
"properties": {
"date": {
"type": "string",
"description": "Month as YYYY-MM (default: latest)"
},
"force": {
"type": "string",
"description": "Police force id, e.g. \"metropolitan\" (see forces)"
}
}
}Stop and search records within a mile of a point. Free within the daily allowance, then $0.003 USDC per call via x402.
| Argument | Type | Description |
|---|---|---|
| lat* | string | Latitude |
| lng* | string | Longitude |
| date | string | Month as YYYY-MM (default: latest) |
{
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "string",
"description": "Latitude"
},
"lng": {
"type": "string",
"description": "Longitude"
},
"date": {
"type": "string",
"description": "Month as YYYY-MM (default: latest)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| lat* | string | Latitude |
| lng* | string | Longitude |
| date | string | Month as YYYY-MM (default: latest) |
{
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "string",
"description": "Latitude"
},
"lng": {
"type": "string",
"description": "Longitude"
},
"date": {
"type": "string",
"description": "Month as YYYY-MM (default: latest)"
}
}
}