io.github.cyanheads/uk-police-crime-mcp-server
REMOTE · UK-POLICE-CRIME.CASEYJHAND.COM · 2 COMPONENTS
Search UK street crime, outcomes, stop and search, and neighbourhood teams (Scotland: BTP only).
Available components
Last scanned (10 hours ago)
Scores higher than 96% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Search and Retrieval
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability73
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3647 tokens (~521/item across 7 items; 6 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 1 Nov 26 0
- Stability: 0.97 → pass security
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 +3
- The server rewrote its instructions, which are the text every model session reads security
- Tool “ukcrime_search_outcomes” rewrote its description, which is the text the model reads security
- Tool “ukcrime_search_crimes” rewrote its description, which is the text the model reads security
- Schema quality: 580 → 521 ▲ functional
- First check of Schema quality: 100 functional
- New resource “uk-police-crime-guide” functional
- Server version: 0.2.0 → 0.3.0 functional
- 28 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.
- 23 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://uk-police-crime.caseyjhand.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=caseyjhand.com | CN=WE1,O=Google Trust Services,C=US | 2 Nov 2026 | 31 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | 995a30681ab772540e934241ca1d576c |
| SANs: caseyjhand.com, *.caseyjhand.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of uk-police-crime.caseyjhand.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| caseyjhand.com. | present | 2371 | 13 | Verified |
| uk-police-crime.caseyjhand.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://uk-police-crime.caseyjhand.com/mcp | Verified | 200 | |
| http (plaintext) | http://uk-police-crime.caseyjhand.com/mcp | HTTPS enforced | 301 | https://uk-police-crime.caseyjhand.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ukcrime_find_neighbourhood Find UK Police Neighbourhood ~336
Find the police force and neighbourhood policing team for a point, or look one up by force and neighbourhood id. Returns the team's description, contact channels and police stations, its current priorities with the action taken, team members' ranks and names, and upcoming engagement events. include adds the boundary polygon, needed only to split a neighbourhood too large to search into smaller polygons: ukcrime_search_crimes, ukcrime_search_outcomes and ukcrime_search_stops take the neighbourhood directly through area 'neighbourhood'.
| Name | Type | Req | Description |
|---|---|---|---|
| force | string | – | Force id such as 'leicestershire', or its name such as 'Leicestershire Police' (ukcrime_list_reference topic 'forces' lists both), to look up by id (with neighbourhood_id); case-insensitive, spaces,… |
| include | array | – | Optional sections to load: 'priorities', 'team', 'events', 'boundary'. Omitted: priorities, team and events. [] loads none of them. |
| lat | number | – | Latitude, WGS84 decimal degrees, to look up by point (with lng). |
| lng | number | – | Longitude, WGS84 decimal degrees, to look up by point (with lat). |
| neighbourhood_id | string | – | Neighbourhood id from ukcrime_list_reference topic 'neighbourhoods', to look up by id (with force). Exact spelling first; after a miss, a unique case-insensitive catalog match is retried. |
| Name | Type | Req | Description |
|---|---|---|---|
| attribution | string | – | Open Government Licence attribution for data.police.uk data. |
| boundary | object | – | The neighbourhood boundary; present when include has 'boundary' and it loaded. |
| data_note | string | – | What these records can and cannot say; read it before drawing conclusions. |
| error | object | – | Present when the call failed. Absent on success. |
| events | array | – | Every upcoming engagement event the force published, soonest first and undated last; present when include has 'events' and they loaded. |
| events_total | number | – | Upcoming events published; every one is in events. |
| force | object | – | The police force the neighbourhood belongs to, as published. |
| found | boolean | – | True when data.police.uk holds a neighbourhood team for the point or id. |
| gaps | string | – | The force's known coverage gaps, each ending with the date the table was verified. |
| guidance | string | – | Why nothing was found and what to try instead; present when found is false. |
| located_from | object | – | The point looked up, for a point lookup. |
| neighbourhood | object | – | The neighbourhood policing team and its public channels, as the force publishes them; an optional field is absent when unpublished, and all text is force-written. |
| notice | string | – | Parts that could not be loaded from data.police.uk, and how to retry. |
| priorities | array | – | The team's current priorities, force-written; present when include has 'priorities' and they loaded. |
| team | array | – | Team members' ranks and names; present when include has 'team' and they loaded. |
No examples provided.
ukcrime_get_crime_outcomes Get UK Crime Outcome Histories ~213
Fetch the full police outcome history of up to 25 crimes per call by persistent_id — the 64-character id on crimes from ukcrime_search_crimes and ukcrime_search_outcomes. Accepts up to 1,000 raw elements or nonblank delimited tokens and 128,000 aggregate UTF-16 code units; remaining_ids carries unprocessed unique ids for the next call. Returns each crime with every outcome, oldest first, and lists the ids data.police.uk does not hold. Anti-social behaviour records carry no persistent id.
| Name | Type | Req | Description |
|---|---|---|---|
| persistent_ids | – | yes | Persistent ids from ukcrime_search_crimes or ukcrime_search_outcomes: at most 1,000 raw array elements, 1,000 nonblank comma/whitespace-separated tokens before deduplication, and 128,000 aggregate UT… |
| Name | Type | Req | Description |
|---|---|---|---|
| attribution | string | – | Open Government Licence attribution. |
| crimes | array | – | The crimes found, in the order their ids were given. |
| data_note | string | – | What these records can and cannot say; read it first. |
| error | object | – | Present when the call failed. Absent on success. |
| failed | array | – | Ids whose lookup still failed after retries for a reason other than a missing crime (outage, timeout, rate limit). Empty when none. |
| guidance | string | – | What to do about remaining_ids, not_found or failed; absent when every id resolved. |
| not_found | array | – | Ids data.police.uk holds no crime for. |
| remaining_ids | array | – | Unprocessed ids in first-seen order; send these as persistent_ids on the next call. Empty when exhausted. |
No examples provided.
ukcrime_list_reference List UK Police Reference Data ~360
Decode the vocabulary the other ukcrime tools take: police force ids, crime category slugs, a force's neighbourhood ids, and data availability — the published months, and which forces published stop and search in each. Use it when a force, category, neighbourhood id or month is unknown; name_contains filters forces and neighbourhoods by name. The Metropolitan Police has about 680 neighbourhoods, so filter by name there; to get the force and neighbourhood covering a latitude and longitude, call ukcrime_find_neighbourhood instead.
| Name | Type | Req | Description |
|---|---|---|---|
| force | string | – | Force id such as 'leicestershire', or its name such as 'Leicestershire Police'; case-insensitive, spaces, underscores and hyphens match each other, '&' matches 'and', and a trailing 'Police', 'Police… |
| month | string | – | Month as YYYY-MM. Topic 'availability' only: return just that month's row. |
| name_contains | string | – | Words that must all appear in the name, in any order — case, accents and punctuation ignored, so the value needs at least one letter or digit. Topics 'forces' and 'neighbourhoods' only. |
| topic | string | yes | What to list: 'forces' (force ids), 'categories' (crime category slugs), 'availability' (published months and stop-and-search publication), or 'neighbourhoods' (one force's neighbourhood ids; needs f… |
| Name | Type | Req | Description |
|---|---|---|---|
| attribution | string | – | Open Government Licence attribution for data.police.uk data. |
| availability | object | – | Topic 'availability': the published-month window and stop-and-search publication by month. |
| categories | array | – | Topic 'categories': every crime category. |
| error | object | – | Present when the call failed. Absent on success. |
| force | string | – | Topic 'neighbourhoods': the force whose neighbourhoods are listed. |
| forces | array | – | Topic 'forces': the forces data.police.uk lists, plus British Transport Police ('btp'), which ukcrime_search_stops takes with area 'force' and ukcrime_search_crimes with area 'force_unplaced'. |
| neighbourhoods | array | – | Topic 'neighbourhoods': the force's neighbourhoods, sorted by name. |
| notice | string | – | Why a list is empty — a name filter that matched nothing, or a month that is not published — and what to do instead. |
| topic | string | – | The topic listed; its list field below is the one present. |
No examples provided.
ukcrime_search_crimes Search UK Street-Level Crimes ~788
Search street-level crimes recorded in one month, or with month_from a range of up to 12 months, inside an area — a point with a 1-mile radius, a polygon, a snapped location_id from an earlier result, or a police neighbourhood — or list the crimes a force could not place on the map (area 'force_unplaced'). Returns the total, counts by category and by latest police outcome, the busiest map points, each month's total for a range, and a page of crimes, each with the persistent_id that ukcrime_get_crime_outcomes takes when it has one; for the police outcomes data.police.uk published for a month, whenever the crime was recorded, use ukcrime_search_outcomes. Locations are anonymised map points, not crime sites. data.police.uk can refuse an area holding more than about 10,000 crimes, whatever the category — then search smaller polygons.
| Name | Type | Req | Description |
|---|---|---|---|
| area | string | yes | Area to search: 'point' (lat and lng; a 1-mile radius), 'polygon' (polygon), 'location' (location_id), 'neighbourhood' (force and neighbourhood_id), or 'force_unplaced' (force alone: the crimes that… |
| category | string | – | Crime category slug such as 'burglary', or its display name such as 'Violence and sexual offences'; case-insensitive, and spaces, underscores and hyphens match each other ('vehicle_crime' finds 'vehi… |
| force | string | – | Force id such as 'leicestershire', or its name such as 'Leicestershire Police' (ukcrime_list_reference topic 'forces' lists both); case-insensitive, spaces, underscores and hyphens match each other,… |
| lat | number | – | Latitude, WGS84 decimal degrees, for area 'point'. |
| limit | integer | – | Requested crimes on this page, 1–10,000; applied cap is at most 200. Default 25. |
| lng | number | – | Longitude, WGS84 decimal degrees, for area 'point'. |
| location_id | string | – | For area 'location': location.location_id from an earlier result — one anonymised map point. |
| month | string | – | Month as YYYY-MM, or the last month of the range with month_from. Omitted: the latest published month, echoed as month in the result. |
| month_from | string | – | First month of a range, YYYY-MM, searched through month — up to 12 months, with a total for each in by_month. Omitted: month alone. |
| neighbourhood_id | string | – | For area 'neighbourhood', with force: a neighbourhood id from ukcrime_list_reference topic 'neighbourhoods', or from ukcrime_find_neighbourhood for a point. Exact spelling first; after a miss, a uniq… |
| offset | integer | – | Rows to skip before this page; pass next_offset from the previous result. Default 0. |
| polygon | array | – | For area 'polygon': 3–2,500 vertices as { lat, lng } objects, or the string 'lat,lng:lat,lng:…'. The ring closes itself (the last vertex joins the first). [lng, lat] pairs are not accepted. |
| Name | Type | Req | Description |
|---|---|---|---|
| area | object | – | The area as the server searched it. |
| attribution | string | – | Open Government Licence attribution. |
| by_category | array | – | Matched crimes by category slug, most first. |
| by_month | array | – | Crimes matched in each month of the range, oldest first; their totals sum to total. Present only when month_from was given. |
| by_outcome | array | – | Matched crimes by latest police outcome, most first; anti-social behaviour is always '(not recorded)'. |
| cap | number | – | Page limit applied. |
| category | object | – | The crime category searched. |
| crimes | array | – | This page of matched crimes: oldest month first over a range, then by category, then location_id, then id. |
| data_note | string | – | What these records can and cannot say; read it first. |
| error | object | – | Present when the call failed. Absent on success. |
| month | string | – | The month searched, or the last month of the range, YYYY-MM. |
| month_from | string | – | First month of the range searched, YYYY-MM; present only when month_from was given. |
| next_offset | number | – | Pass as offset for the next page; absent on the last page. |
| notice | string | – | Defaulted month, coverage gaps, why a result is empty, and how to page on. |
| shown | number | – | Rows on this page. |
| top_locations | array | – | Up to 10 map points holding the most matched crimes. Absent for area 'force_unplaced'. |
| total | number | – | Crimes matched in the area over the month or range. |
| truncated | boolean | – | True when more rows remain after this page. |
No examples provided.
ukcrime_search_outcomes Search UK Police Outcomes ~665
List the police outcomes data.police.uk published for one month inside an area — a point with a 1-mile radius, a polygon, a location_id, or a neighbourhood — for crimes recorded that month or any earlier one. Returns the total, counts by crime category, outcome and the month each crime was recorded, and a page of outcomes, each with its crime and persistent_id. An outcome's own month can differ from the month searched, and a crime's earlier steps can be missing here: ukcrime_get_crime_outcomes gives one crime's full sequence, and ukcrime_search_crimes the latest outcome of the crimes recorded in a month. Court results are not published; the result says when a force publishes no outcomes.
| Name | Type | Req | Description |
|---|---|---|---|
| area | string | yes | Area to search: 'point' (lat and lng; a 1-mile radius), 'polygon' (polygon), 'location' (location_id), or 'neighbourhood' (force and neighbourhood_id). An area field the chosen area does not use is r… |
| category | string | – | Count only outcomes for crimes in this category: a slug such as 'burglary' or a display name such as 'Violence and sexual offences'; case-insensitive, and spaces, underscores and hyphens match each o… |
| force | string | – | For area 'neighbourhood', with neighbourhood_id: a force id such as 'leicestershire', or its name such as 'Leicestershire Police' (ukcrime_list_reference topic 'forces' lists both); case-insensitive,… |
| lat | number | – | Latitude, WGS84 decimal degrees, for area 'point'. |
| limit | integer | – | Requested outcomes on this page, 1–10,000; applied cap is at most 200. Default 20. |
| lng | number | – | Longitude, WGS84 decimal degrees, for area 'point'. |
| location_id | string | – | For area 'location': location.location_id from an earlier result — one anonymised map point. |
| month | string | – | Month as YYYY-MM. Omitted: the latest published month, echoed as month in the result. |
| neighbourhood_id | string | – | For area 'neighbourhood', with force: a neighbourhood id from ukcrime_list_reference topic 'neighbourhoods', or from ukcrime_find_neighbourhood for a point. Exact spelling first; after a miss, a uniq… |
| offset | integer | – | Rows to skip before this page; pass next_offset from the previous result. Default 0. |
| polygon | array | – | For area 'polygon': 3–2,500 vertices as { lat, lng } objects, or the string 'lat,lng:lat,lng:…'. The ring closes itself (the last vertex joins the first). [lng, lat] pairs are not accepted. |
| Name | Type | Req | Description |
|---|---|---|---|
| area | object | – | The area as the server searched it. |
| attribution | string | – | Open Government Licence attribution. |
| by_category | array | – | Matched outcomes by crime category, most first, then category in code-unit order. |
| by_crime_month | array | – | Matched outcomes by the month their crime was recorded, newest first. |
| by_outcome | array | – | Matched outcomes by outcome, most first. |
| cap | number | – | Page limit applied. |
| category | object | – | The crime category counted; absent when every category was (no category, or 'all-crime'). |
| data_note | string | – | What these records can and cannot say; read it first. |
| error | object | – | Present when the call failed. Absent on success. |
| month | string | – | The month searched, YYYY-MM; it selects data.police.uk's outcome data published for that month, and each outcome carries its own month. |
| next_offset | number | – | Pass as offset for the next page; absent on the last page. |
| notice | string | – | Defaulted month, coverage gaps, why a result is empty, and how to page on. |
| outcomes | array | – | This page of matched outcomes, sorted by the crime's month, newest first, then crime id. |
| shown | number | – | Rows on this page. |
| total | number | – | Outcomes matched, after the category filter. |
| truncated | boolean | – | True when more rows remain after this page. |
| unfiltered_total | number | – | Outcomes in the area for the month searched, before the category filter. |
No examples provided.
ukcrime_search_stops Search UK Police Stop and Search ~784
Search police stop and search records for one month, or with month_from a range of up to 12 months, inside an area — a point with a 1-mile radius, a polygon, a location_id from an earlier result, or a police neighbourhood — or across a whole force with area 'force', which includes stops the force could not place. Returns the total and counts by search type, self-defined and officer-defined ethnicity, outcome, object of search, legislation, age range, gender, whether the outcome was linked to the object of search, and whether more than outer clothing was removed, each month's total for a range, and a page of stops. filters narrow the counts and the page together, so filtering one field and reading another's breakdown gives a cross-tab. Forces skip months and some publish none; the result names each force it finds for the area that did not publish, with the months it skipped.
| Name | Type | Req | Description |
|---|---|---|---|
| area | string | yes | Area to search: 'point' (lat and lng; a 1-mile radius), 'polygon' (polygon), 'location' (location_id), 'neighbourhood' (force and neighbourhood_id), or 'force' (force alone: every stop the force publ… |
| filters | array | – | Up to 8 filters, all of which a stop must match; they narrow the counts and the page together. Fields: type, self_defined_ethnicity, officer_defined_ethnicity, outcome, object_of_search, legislation,… |
| force | string | – | Force id such as 'leicestershire', or its name such as 'Leicestershire Police' (ukcrime_list_reference topic 'forces' lists both); case-insensitive, spaces, underscores and hyphens match each other,… |
| lat | number | – | Latitude, WGS84 decimal degrees, for area 'point'. |
| limit | integer | – | Requested stops on this page, 1–10,000; applied cap is at most 200. Default 15. |
| lng | number | – | Longitude, WGS84 decimal degrees, for area 'point'. |
| location_id | string | – | For area 'location': location.location_id from an earlier result — one anonymised map point. |
| month | string | – | Month as YYYY-MM, or the last month of the range with month_from. Omitted: the latest published month, echoed as month in the result. |
| month_from | string | – | First month of a range, YYYY-MM, searched through month — up to 12 months, with a total for each in by_month. Omitted: month alone. |
| neighbourhood_id | string | – | For area 'neighbourhood', with force: a neighbourhood id from ukcrime_list_reference topic 'neighbourhoods', or from ukcrime_find_neighbourhood for a point. Exact spelling first; after a miss, a uniq… |
| offset | integer | – | Rows to skip before this page; pass next_offset from the previous result. Default 0. |
| polygon | array | – | For area 'polygon': 3–2,500 vertices as { lat, lng } objects, or the string 'lat,lng:lat,lng:…'. The ring closes itself (the last vertex joins the first). [lng, lat] pairs are not accepted. |
| Name | Type | Req | Description |
|---|---|---|---|
| area | object | – | The area as the server searched it. |
| attribution | string | – | Open Government Licence attribution. |
| by_age_range | array | – | Matched stops by age range, most first. |
| by_gender | array | – | Matched stops by gender, most first. |
| by_legislation | array | – | Matched stops by legislation, most first. |
| by_month | array | – | Stops matched in each month of the range, oldest first; their totals sum to total. Present only when month_from was given. |
| by_object_of_search | array | – | Matched stops by object of search, most first. |
| by_officer_defined_ethnicity | array | – | Matched stops by ethnicity as the officer perceived it, most first. |
| by_outcome | array | – | Matched stops by outcome, most first; '(not recorded)' is often the largest. |
| by_outcome_linked_to_object_of_search | array | – | Matched stops by whether the outcome was linked to the object of search ('true', 'false' or '(not recorded)'), most first. |
| by_removal_of_more_than_outer_clothing | array | – | Matched stops by whether more than outer clothing was removed ('true', 'false' or '(not recorded)' where the force sent no value, as some do for vehicle-only searches), most first. |
| by_self_defined_ethnicity | array | – | Matched stops by ethnicity as the person defined it, most first. |
| by_type | array | – | Matched stops by search type, most first. |
| cap | number | – | Page limit applied. |
| data_note | string | – | What these records can and cannot say; read it first. |
| error | object | – | Present when the call failed. Absent on success. |
| filters | array | – | Filters applied, case-insensitively; empty when none. |
| force_published | boolean | – | Whether every force found for the area (the one it names, or each located at a point, a polygon's centre and outermost vertices, or a location's map point) published stop and search this month, or in… |
| month | string | – | The month searched, or the last month of the range, YYYY-MM. |
| month_from | string | – | First month of the range searched, YYYY-MM; present only when month_from was given. |
| next_offset | number | – | Pass as offset for the next page; absent on the last page. |
| notice | string | – | Defaulted month, coverage gaps, why a result is empty, and how to page on. |
| shown | number | – | Rows on this page. |
| stops | array | – | This page of matched stops, oldest first, then by location_id. |
| total | number | – | Stops matched after filters, over the month or range. |
| truncated | boolean | – | True when more rows remain after this page. |
| unfiltered_total | number | – | Stops in the area over the month or range, before filters. |
| unplaced | number | – | Matched stops with no location — the force's unplaced stops, for area 'force'. |
No examples provided.
How do I install the io.github.cyanheads/uk-police-crime-mcp-server server?
io.github.cyanheads/uk-police-crime-mcp-server is a hosted endpoint at https://uk-police-crime.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · uk-police-crime.caseyjhand.com
claude mcp add --transport http cyanheads-uk-police-crime-mcp-server 'https://uk-police-crime.caseyjhand.com/mcp'
What is the io.github.cyanheads/uk-police-crime-mcp-server server?
io.github.cyanheads/uk-police-crime-mcp-server is listed in the public MCP registry as io.github.cyanheads/uk-police-crime-mcp-server. Search UK street crime, outcomes, stop and search, and neighbourhood teams (Scotland: BTP only). This page covers its hosted endpoint (https://uk-police-crime.caseyjhand.com/mcp).
Is the io.github.cyanheads/uk-police-crime-mcp-server server safe to use?
io.github.cyanheads/uk-police-crime-mcp-server scores 88 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.cyanheads/uk-police-crime-mcp-server server expose?
io.github.cyanheads/uk-police-crime-mcp-server exposes 6 tools: ukcrime_list_reference, ukcrime_search_crimes, ukcrime_search_outcomes, ukcrime_get_crime_outcomes, ukcrime_search_stops, ukcrime_find_neighbourhood. Their descriptions and schemas cost roughly 3,146 tokens of context every time the server is loaded.
Does the io.github.cyanheads/uk-police-crime-mcp-server server require authentication?
No. We connected to io.github.cyanheads/uk-police-crime-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the io.github.cyanheads/uk-police-crime-mcp-server server still maintained?
io.github.cyanheads/uk-police-crime-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.