{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T15:46:28.184Z","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime","markdownUrl":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime.md","server":{"slug":"cyanheads-uk-police-crime-mcp-server","name":"io.github.cyanheads/uk-police-crime-mcp-server","registryName":"io.github.cyanheads/uk-police-crime-mcp-server","description":"Search UK street crime, outcomes, stop and search, and neighbourhood teams (Scotland: BTP only).","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"uk-police-crime","type":"remote","identifier":"https://uk-police-crime.caseyjhand.com/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime","version":"0.3.0","transport":null,"scoredAt":"2026-11-05T03:44:58.575Z"},"score":{"total":88,"tier":"high trust","status":"scored","weekDelta":1,"history":[{"date":"2026-11-05","total":88},{"date":"2026-11-04","total":88},{"date":"2026-11-03","total":88},{"date":"2026-11-02","total":88},{"date":"2026-11-01","total":88},{"date":"2026-10-31","total":88},{"date":"2026-10-30","total":87},{"date":"2026-10-29","total":87},{"date":"2026-10-28","total":84},{"date":"2026-10-27","total":83},{"date":"2026-10-26","total":83},{"date":"2026-10-25","total":83},{"date":"2026-10-24","total":82},{"date":"2026-10-23","total":82},{"date":"2026-10-22","total":81},{"date":"2026-10-21","total":81},{"date":"2026-10-20","total":80},{"date":"2026-10-19","total":80},{"date":"2026-10-18","total":79},{"date":"2026-10-17","total":79},{"date":"2026-10-16","total":79},{"date":"2026-10-15","total":78},{"date":"2026-10-14","total":78},{"date":"2026-10-13","total":77},{"date":"2026-10-12","total":77},{"date":"2026-10-10","total":76},{"date":"2026-10-07","total":74},{"date":"2026-10-05","total":73},{"date":"2026-10-04","total":73},{"date":"2026-10-03","total":72}]},"categories":[{"name":"Endpoint Security","score":83,"verdict":"partial","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.","HTTPS is enforced; there's no plaintext access path.","The HSTS (Strict-Transport-Security) header is present.","DNSSEC is configured correctly; the domain's records validate against the full chain to the root."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_no_destructive","args":{}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_present","args":{}},{"code":"dnssec.validated","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":73,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (excellent).","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.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"521","items":"7","tools":"6","tokens":"3647","resources":"1"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":100,"verdict":"pass","reasons":["No destabilizing schema changes in the last 30 days."],"codes":[{"code":"stability.stable","args":{}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description.","Structured output schemas are declared (100% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}},{"code":"toolquality.output_present","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"6"}},{"code":"toolsafety.manipulation_clean","args":{"units":"8","judged":"8"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"uk-police-crime","type":"remote","identifier":"https://uk-police-crime.caseyjhand.com/mcp","withdrawn":false,"score":88,"current":true,"url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime","markdownUrl":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime.md"},{"slug":"cyanheads-uk-police-crime-mcp-server","type":"npm","identifier":"@cyanheads/uk-police-crime-mcp-server","withdrawn":false,"score":39,"current":false,"url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/cyanheads-uk-police-crime-mcp-server","markdownUrl":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/cyanheads-uk-police-crime-mcp-server.md"}],"facts":[{"label":"Endpoint","value":"https://uk-police-crime.caseyjhand.com/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"0.3.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"ukcrime_list_reference","title":"List UK Police Reference Data","description":"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.","inputs":[{"name":"force","type":"string","required":false,"description":"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…"},{"name":"month","type":"string","required":false,"description":"Month as YYYY-MM. Topic 'availability' only: return just that month's row."},{"name":"name_contains","type":"string","required":false,"description":"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."},{"name":"topic","type":"string","required":true,"description":"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…"}],"outputs":[{"name":"attribution","type":"string","required":false,"description":"Open Government Licence attribution for data.police.uk data."},{"name":"availability","type":"object","required":false,"description":"Topic 'availability': the published-month window and stop-and-search publication by month."},{"name":"categories","type":"array","required":false,"description":"Topic 'categories': every crime category."},{"name":"error","type":"object","required":false,"description":"Present when the call failed. Absent on success."},{"name":"force","type":"string","required":false,"description":"Topic 'neighbourhoods': the force whose neighbourhoods are listed."},{"name":"forces","type":"array","required":false,"description":"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'."},{"name":"neighbourhoods","type":"array","required":false,"description":"Topic 'neighbourhoods': the force's neighbourhoods, sorted by name."},{"name":"notice","type":"string","required":false,"description":"Why a list is empty — a name filter that matched nothing, or a month that is not published — and what to do instead."},{"name":"topic","type":"string","required":false,"description":"The topic listed; its list field below is the one present."}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":360},{"name":"ukcrime_search_crimes","title":"Search UK Street-Level Crimes","description":"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.","inputs":[{"name":"area","type":"string","required":true,"description":"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…"},{"name":"category","type":"string","required":false,"description":"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…"},{"name":"force","type":"string","required":false,"description":"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,…"},{"name":"lat","type":"number","required":false,"description":"Latitude, WGS84 decimal degrees, for area 'point'."},{"name":"limit","type":"integer","required":false,"description":"Requested crimes on this page, 1–10,000; applied cap is at most 200. Default 25."},{"name":"lng","type":"number","required":false,"description":"Longitude, WGS84 decimal degrees, for area 'point'."},{"name":"location_id","type":"string","required":false,"description":"For area 'location': location.location_id from an earlier result — one anonymised map point."},{"name":"month","type":"string","required":false,"description":"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."},{"name":"month_from","type":"string","required":false,"description":"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."},{"name":"neighbourhood_id","type":"string","required":false,"description":"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…"},{"name":"offset","type":"integer","required":false,"description":"Rows to skip before this page; pass next_offset from the previous result. Default 0."},{"name":"polygon","type":"array","required":false,"description":"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."}],"outputs":[{"name":"area","type":"object","required":false,"description":"The area as the server searched it."},{"name":"attribution","type":"string","required":false,"description":"Open Government Licence attribution."},{"name":"by_category","type":"array","required":false,"description":"Matched crimes by category slug, most first."},{"name":"by_month","type":"array","required":false,"description":"Crimes matched in each month of the range, oldest first; their totals sum to total. Present only when month_from was given."},{"name":"by_outcome","type":"array","required":false,"description":"Matched crimes by latest police outcome, most first; anti-social behaviour is always '(not recorded)'."},{"name":"cap","type":"number","required":false,"description":"Page limit applied."},{"name":"category","type":"object","required":false,"description":"The crime category searched."},{"name":"crimes","type":"array","required":false,"description":"This page of matched crimes: oldest month first over a range, then by category, then location_id, then id."},{"name":"data_note","type":"string","required":false,"description":"What these records can and cannot say; read it first."},{"name":"error","type":"object","required":false,"description":"Present when the call failed. Absent on success."},{"name":"month","type":"string","required":false,"description":"The month searched, or the last month of the range, YYYY-MM."},{"name":"month_from","type":"string","required":false,"description":"First month of the range searched, YYYY-MM; present only when month_from was given."},{"name":"next_offset","type":"number","required":false,"description":"Pass as offset for the next page; absent on the last page."},{"name":"notice","type":"string","required":false,"description":"Defaulted month, coverage gaps, why a result is empty, and how to page on."},{"name":"shown","type":"number","required":false,"description":"Rows on this page."},{"name":"top_locations","type":"array","required":false,"description":"Up to 10 map points holding the most matched crimes. Absent for area 'force_unplaced'."},{"name":"total","type":"number","required":false,"description":"Crimes matched in the area over the month or range."},{"name":"truncated","type":"boolean","required":false,"description":"True when more rows remain after this page."}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":788},{"name":"ukcrime_search_outcomes","title":"Search UK Police Outcomes","description":"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.","inputs":[{"name":"area","type":"string","required":true,"description":"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…"},{"name":"category","type":"string","required":false,"description":"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…"},{"name":"force","type":"string","required":false,"description":"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,…"},{"name":"lat","type":"number","required":false,"description":"Latitude, WGS84 decimal degrees, for area 'point'."},{"name":"limit","type":"integer","required":false,"description":"Requested outcomes on this page, 1–10,000; applied cap is at most 200. Default 20."},{"name":"lng","type":"number","required":false,"description":"Longitude, WGS84 decimal degrees, for area 'point'."},{"name":"location_id","type":"string","required":false,"description":"For area 'location': location.location_id from an earlier result — one anonymised map point."},{"name":"month","type":"string","required":false,"description":"Month as YYYY-MM. Omitted: the latest published month, echoed as month in the result."},{"name":"neighbourhood_id","type":"string","required":false,"description":"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…"},{"name":"offset","type":"integer","required":false,"description":"Rows to skip before this page; pass next_offset from the previous result. Default 0."},{"name":"polygon","type":"array","required":false,"description":"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."}],"outputs":[{"name":"area","type":"object","required":false,"description":"The area as the server searched it."},{"name":"attribution","type":"string","required":false,"description":"Open Government Licence attribution."},{"name":"by_category","type":"array","required":false,"description":"Matched outcomes by crime category, most first, then category in code-unit order."},{"name":"by_crime_month","type":"array","required":false,"description":"Matched outcomes by the month their crime was recorded, newest first."},{"name":"by_outcome","type":"array","required":false,"description":"Matched outcomes by outcome, most first."},{"name":"cap","type":"number","required":false,"description":"Page limit applied."},{"name":"category","type":"object","required":false,"description":"The crime category counted; absent when every category was (no category, or 'all-crime')."},{"name":"data_note","type":"string","required":false,"description":"What these records can and cannot say; read it first."},{"name":"error","type":"object","required":false,"description":"Present when the call failed. Absent on success."},{"name":"month","type":"string","required":false,"description":"The month searched, YYYY-MM; it selects data.police.uk's outcome data published for that month, and each outcome carries its own month."},{"name":"next_offset","type":"number","required":false,"description":"Pass as offset for the next page; absent on the last page."},{"name":"notice","type":"string","required":false,"description":"Defaulted month, coverage gaps, why a result is empty, and how to page on."},{"name":"outcomes","type":"array","required":false,"description":"This page of matched outcomes, sorted by the crime's month, newest first, then crime id."},{"name":"shown","type":"number","required":false,"description":"Rows on this page."},{"name":"total","type":"number","required":false,"description":"Outcomes matched, after the category filter."},{"name":"truncated","type":"boolean","required":false,"description":"True when more rows remain after this page."},{"name":"unfiltered_total","type":"number","required":false,"description":"Outcomes in the area for the month searched, before the category filter."}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":665},{"name":"ukcrime_get_crime_outcomes","title":"Get UK Crime Outcome Histories","description":"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.","inputs":[{"name":"persistent_ids","type":null,"required":true,"description":"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…"}],"outputs":[{"name":"attribution","type":"string","required":false,"description":"Open Government Licence attribution."},{"name":"crimes","type":"array","required":false,"description":"The crimes found, in the order their ids were given."},{"name":"data_note","type":"string","required":false,"description":"What these records can and cannot say; read it first."},{"name":"error","type":"object","required":false,"description":"Present when the call failed. Absent on success."},{"name":"failed","type":"array","required":false,"description":"Ids whose lookup still failed after retries for a reason other than a missing crime (outage, timeout, rate limit). Empty when none."},{"name":"guidance","type":"string","required":false,"description":"What to do about remaining_ids, not_found or failed; absent when every id resolved."},{"name":"not_found","type":"array","required":false,"description":"Ids data.police.uk holds no crime for."},{"name":"remaining_ids","type":"array","required":false,"description":"Unprocessed ids in first-seen order; send these as persistent_ids on the next call. Empty when exhausted."}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":213},{"name":"ukcrime_search_stops","title":"Search UK Police Stop and Search","description":"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.","inputs":[{"name":"area","type":"string","required":true,"description":"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…"},{"name":"filters","type":"array","required":false,"description":"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,…"},{"name":"force","type":"string","required":false,"description":"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,…"},{"name":"lat","type":"number","required":false,"description":"Latitude, WGS84 decimal degrees, for area 'point'."},{"name":"limit","type":"integer","required":false,"description":"Requested stops on this page, 1–10,000; applied cap is at most 200. Default 15."},{"name":"lng","type":"number","required":false,"description":"Longitude, WGS84 decimal degrees, for area 'point'."},{"name":"location_id","type":"string","required":false,"description":"For area 'location': location.location_id from an earlier result — one anonymised map point."},{"name":"month","type":"string","required":false,"description":"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."},{"name":"month_from","type":"string","required":false,"description":"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."},{"name":"neighbourhood_id","type":"string","required":false,"description":"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…"},{"name":"offset","type":"integer","required":false,"description":"Rows to skip before this page; pass next_offset from the previous result. Default 0."},{"name":"polygon","type":"array","required":false,"description":"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."}],"outputs":[{"name":"area","type":"object","required":false,"description":"The area as the server searched it."},{"name":"attribution","type":"string","required":false,"description":"Open Government Licence attribution."},{"name":"by_age_range","type":"array","required":false,"description":"Matched stops by age range, most first."},{"name":"by_gender","type":"array","required":false,"description":"Matched stops by gender, most first."},{"name":"by_legislation","type":"array","required":false,"description":"Matched stops by legislation, most first."},{"name":"by_month","type":"array","required":false,"description":"Stops matched in each month of the range, oldest first; their totals sum to total. Present only when month_from was given."},{"name":"by_object_of_search","type":"array","required":false,"description":"Matched stops by object of search, most first."},{"name":"by_officer_defined_ethnicity","type":"array","required":false,"description":"Matched stops by ethnicity as the officer perceived it, most first."},{"name":"by_outcome","type":"array","required":false,"description":"Matched stops by outcome, most first; '(not recorded)' is often the largest."},{"name":"by_outcome_linked_to_object_of_search","type":"array","required":false,"description":"Matched stops by whether the outcome was linked to the object of search ('true', 'false' or '(not recorded)'), most first."},{"name":"by_removal_of_more_than_outer_clothing","type":"array","required":false,"description":"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."},{"name":"by_self_defined_ethnicity","type":"array","required":false,"description":"Matched stops by ethnicity as the person defined it, most first."},{"name":"by_type","type":"array","required":false,"description":"Matched stops by search type, most first."},{"name":"cap","type":"number","required":false,"description":"Page limit applied."},{"name":"data_note","type":"string","required":false,"description":"What these records can and cannot say; read it first."},{"name":"error","type":"object","required":false,"description":"Present when the call failed. Absent on success."},{"name":"filters","type":"array","required":false,"description":"Filters applied, case-insensitively; empty when none."},{"name":"force_published","type":"boolean","required":false,"description":"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…"},{"name":"month","type":"string","required":false,"description":"The month searched, or the last month of the range, YYYY-MM."},{"name":"month_from","type":"string","required":false,"description":"First month of the range searched, YYYY-MM; present only when month_from was given."},{"name":"next_offset","type":"number","required":false,"description":"Pass as offset for the next page; absent on the last page."},{"name":"notice","type":"string","required":false,"description":"Defaulted month, coverage gaps, why a result is empty, and how to page on."},{"name":"shown","type":"number","required":false,"description":"Rows on this page."},{"name":"stops","type":"array","required":false,"description":"This page of matched stops, oldest first, then by location_id."},{"name":"total","type":"number","required":false,"description":"Stops matched after filters, over the month or range."},{"name":"truncated","type":"boolean","required":false,"description":"True when more rows remain after this page."},{"name":"unfiltered_total","type":"number","required":false,"description":"Stops in the area over the month or range, before filters."},{"name":"unplaced","type":"number","required":false,"description":"Matched stops with no location — the force's unplaced stops, for area 'force'."}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":784},{"name":"ukcrime_find_neighbourhood","title":"Find UK Police Neighbourhood","description":"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'.","inputs":[{"name":"force","type":"string","required":false,"description":"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,…"},{"name":"include","type":"array","required":false,"description":"Optional sections to load: 'priorities', 'team', 'events', 'boundary'. Omitted: priorities, team and events. [] loads none of them."},{"name":"lat","type":"number","required":false,"description":"Latitude, WGS84 decimal degrees, to look up by point (with lng)."},{"name":"lng","type":"number","required":false,"description":"Longitude, WGS84 decimal degrees, to look up by point (with lat)."},{"name":"neighbourhood_id","type":"string","required":false,"description":"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."}],"outputs":[{"name":"attribution","type":"string","required":false,"description":"Open Government Licence attribution for data.police.uk data."},{"name":"boundary","type":"object","required":false,"description":"The neighbourhood boundary; present when include has 'boundary' and it loaded."},{"name":"data_note","type":"string","required":false,"description":"What these records can and cannot say; read it before drawing conclusions."},{"name":"error","type":"object","required":false,"description":"Present when the call failed. Absent on success."},{"name":"events","type":"array","required":false,"description":"Every upcoming engagement event the force published, soonest first and undated last; present when include has 'events' and they loaded."},{"name":"events_total","type":"number","required":false,"description":"Upcoming events published; every one is in events."},{"name":"force","type":"object","required":false,"description":"The police force the neighbourhood belongs to, as published."},{"name":"found","type":"boolean","required":false,"description":"True when data.police.uk holds a neighbourhood team for the point or id."},{"name":"gaps","type":"string","required":false,"description":"The force's known coverage gaps, each ending with the date the table was verified."},{"name":"guidance","type":"string","required":false,"description":"Why nothing was found and what to try instead; present when found is false."},{"name":"located_from","type":"object","required":false,"description":"The point looked up, for a point lookup."},{"name":"neighbourhood","type":"object","required":false,"description":"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."},{"name":"notice","type":"string","required":false,"description":"Parts that could not be loaded from data.police.uk, and how to retry."},{"name":"priorities","type":"array","required":false,"description":"The team's current priorities, force-written; present when include has 'priorities' and they loaded."},{"name":"team","type":"array","required":false,"description":"Team members' ranks and names; present when include has 'team' and they loaded."}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":336}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T03:44:58.000Z","track":"remote","endpoint":"https://uk-police-crime.caseyjhand.com/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=caseyjhand.com","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-11-02T21:39:32Z","notAfter":"2027-01-31T22:39:21Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"secure","label":"Secure","name":"uk-police-crime.caseyjhand.com.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"com.","outcome":"verified","label":"Verified"},{"zone":"caseyjhand.com.","outcome":"verified","label":"Verified"},{"zone":"uk-police-crime.caseyjhand.com.","outcome":"verified","label":"Verified"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":301},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-02","recent":[{"id":"chg_01a1952c-3d67-7083-bb51-a0be19a278e0","kind":"check.verdict","summary":"Stability (0.97 → pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a1952c-3d67-7083-bb51-a0be19a278e0"},{"id":"chg_01a19005-1646-78b8-820f-5458000c3b8b","kind":"score.total_changed","summary":"Trust score (87 → 88)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a19005-1646-78b8-820f-5458000c3b8b"},{"id":"chg_01a18940-0ff8-7af2-9a0b-2285f5616147","kind":"check.appeared","summary":"First check of Schema quality (100)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a18940-0ff8-7af2-9a0b-2285f5616147"},{"id":"chg_01a18940-0ff7-73d1-b1eb-60bbcc10f87d","kind":"check.measure","summary":"Schema quality (580 → 521)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a18940-0ff7-73d1-b1eb-60bbcc10f87d"},{"id":"chg_01a18940-0ffb-710c-ba78-3ec1f15769ef","kind":"score.total_changed","summary":"Trust score (84 → 87)","materiality":"functional","direction":"improvement","scoreDelta":3,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a18940-0ffb-710c-ba78-3ec1f15769ef"},{"id":"chg_01a18940-0ffa-7776-bb8f-1d71ef2f6995","kind":"server.version_changed","summary":"Server version (0.2.0 → 0.3.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a18940-0ffa-7776-bb8f-1d71ef2f6995"},{"id":"chg_01a18940-0ffa-7c56-8733-e48bf4138f8a","kind":"server.instructions_changed","summary":"The server rewrote its instructions, which are the text every model session reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a18940-0ffa-7c56-8733-e48bf4138f8a"},{"id":"chg_01a18940-0ffa-71f9-aac5-62f11d365626","kind":"resource.added","summary":"New resource “uk-police-crime-guide”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a18940-0ffa-71f9-aac5-62f11d365626"},{"id":"chg_01a18940-0ff9-7cc1-8f0c-ef135ec4ce47","kind":"tool.description_changed","summary":"Tool “ukcrime_search_outcomes” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a18940-0ff9-7cc1-8f0c-ef135ec4ce47"},{"id":"chg_01a18940-0ff9-70c0-8686-9b525808ce2a","kind":"tool.description_changed","summary":"Tool “ukcrime_search_crimes” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a18940-0ff9-70c0-8686-9b525808ce2a"},{"id":"chg_01a18093-f85e-75d8-8f3f-9ed5b074e7ab","kind":"score.total_changed","summary":"Trust score (83 → 84)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a18093-f85e-75d8-8f3f-9ed5b074e7ab"},{"id":"chg_01a1711c-5637-71c9-9891-726677f792dc","kind":"score.total_changed","summary":"Trust score (82 → 83)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a1711c-5637-71c9-9891-726677f792dc"},{"id":"chg_01a166cd-3270-7885-84a3-5b4284dda56a","kind":"score.total_changed","summary":"Trust score (81 → 82)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-23","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a166cd-3270-7885-84a3-5b4284dda56a"},{"id":"chg_01a15c81-2d8c-7813-a4c0-610d14a99324","kind":"score.total_changed","summary":"Trust score (80 → 81)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a15c81-2d8c-7813-a4c0-610d14a99324"},{"id":"chg_01a15232-4b07-73de-b7c8-85c3c8221170","kind":"score.total_changed","summary":"Trust score (79 → 80)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-19","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a15232-4b07-73de-b7c8-85c3c8221170"},{"id":"chg_01a14c6b-0919-750d-8d5e-91aca8203094","kind":"param.description_changed","summary":"“ukcrime_search_crimes” reworded the description of “limit”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-18","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a14c6b-0919-750d-8d5e-91aca8203094"},{"id":"chg_01a14c6b-0926-7b90-9338-c64620f1b925","kind":"server.version_changed","summary":"Server version (0.1.2 → 0.2.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-18","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a14c6b-0926-7b90-9338-c64620f1b925"},{"id":"chg_01a14c6b-0924-7691-af34-b24a42eae44c","kind":"param.description_changed","summary":"“ukcrime_search_stops” reworded the description of “neighbourhood_id”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-18","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a14c6b-0924-7691-af34-b24a42eae44c"},{"id":"chg_01a14c6b-0924-7193-b212-ad1f289af478","kind":"param.description_changed","summary":"“ukcrime_search_stops” reworded the description of “limit”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-18","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a14c6b-0924-7193-b212-ad1f289af478"},{"id":"chg_01a14c6b-0923-7bb9-b0ff-002eff939126","kind":"param.description_changed","summary":"“ukcrime_search_outcomes” reworded the description of “neighbourhood_id”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-18","url":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime#chg-chg_01a14c6b-0923-7bb9-b0ff-002eff939126"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime/changelog.json"},"links":{"html":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime","markdown":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime.md","changelogJson":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime/changelog.json","changelogRss":"https://verifymcp.io/servers/cyanheads-uk-police-crime-mcp-server/uk-police-crime.xml","external":[{"label":"Remote endpoint","href":"https://uk-police-crime.caseyjhand.com/mcp"},{"label":"Repository","href":"https://github.com/cyanheads/uk-police-crime-mcp-server"}]}}