# Reported issues for uk-police-crime-mcp-server

Pod holds 10 of 10 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [uk-police-crime-mcp-server](/mcp/uk-police-crime-mcp-server).

## Most discussed

### feat(category): accept space and underscore variants of category slugs

### Use case

`ukcrime_search_crimes` and `ukcrime_search_outcomes` match `category` only against the exact slug or the exact lower-cased display name, so variants that map one-to-one onto a single category fail with `unknown_category`. `force` already folds runs of spaces and underscores to `-`; `category` does not.

Environment: server 0.1.0, `@cyanheads/mcp-ts-core` 0.13.10, Node v26.5.0, HTTP transport.

| `category` sent | Result | Unique match |
|:--|:--|:--|
| `vehicle_crime` |…

[Read the thread](https://github.com/cyanheads/uk-police-crime-mcp-server/issues/1) · 2026-10-01 · closed · 2 comments

### bug(ukcrime_search_outcomes): a cold outcomes month times out at 30 s and fails the call

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

data.police.uk can take longer than the 30 s attempt timeout to answer an uncached outcomes month at a busy point. The server aborts the attempt, resends it, and fails the call at the 45 s deadline with no hint, though the same call moments later answers in under a second. The 30 s timeout was sized on crime routes; cold…

[Read the thread](https://github.com/cyanheads/uk-police-crime-mcp-server/issues/11) · 2026-10-02 · closed · 1 comment

### bug(police-api): failures that outlast the retries carry no reason, retry flag or hint

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

When data.police.uk keeps failing past the retry loop, the caller gets an error with no `reason`, no `retryable` and no recovery hint, so a `content[]`-only client can't tell a passing outage from a bad request. `upstream_unavailable` (declared `retryable: true`) is raised only by the area-route 503 probe, and only the three search…

[Read the thread](https://github.com/cyanheads/uk-police-crime-mcp-server/issues/10) · 2026-10-02 · closed · 1 comment

### bug(search): zero-hit notice suggests retries in a force that publishes nothing

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

A zero-result search in a force that publishes nothing for that dataset carries the force's coverage note and then the generic zero-hit line, which recommends retries that cannot help. The `force_unplaced` arm of `ukcrime_search_crimes` already drops the generic line for such a force; the point and neighbourhood arms of…

[Read the thread](https://github.com/cyanheads/uk-police-crime-mcp-server/issues/9) · 2026-10-02 · closed · 1 comment

### feat(search): month range with per-month totals on crimes and stop and search

### Use case

The most common question people bring to street-level crime data is a trend: is burglary up in this neighbourhood over the last year, and did stop and search rise after an operation? Every search takes one `month`, so a 12-month trend takes 12 calls (2–3.4 KB each per surface even at `limit: 1`, at a Carlisle point), and the caller has to stitch the totals together with no single view of the months a force skipped stop and search.

Related: #6

### Proposed behavior

Add an…

[Read the thread](https://github.com/cyanheads/uk-police-crime-mcp-server/issues/8) · 2026-10-01 · closed · 1 comment

### feat(force): accept a force's display name as well as its id

### Use case

Every `force` input takes only the id (`leicestershire`), but people and models name forces the way `/forces` prints them. `Leicestershire Police`, `Metropolitan Police` and `Police Service of Northern Ireland` fail as `unknown_force` and cost a round trip to `ukcrime_list_reference`; `Devon & Cornwall Police`, the upstream's own spelling, fails the schema pattern. That advertised pattern, `^[a-z]+(-[a-z]+)*$`, also rejects the capitals and spaces the field's description says are…

[Read the thread](https://github.com/cyanheads/uk-police-crime-mcp-server/issues/7) · 2026-10-01 · closed · 1 comment

### feat(ukcrime_search_stops): filter and break down by the find and strip-search flags

### Use case

Stop and search research turns on two measures `ukcrime_search_stops` returns per row but can't count or filter: the find rate (`outcome_linked_to_object_of_search`) and searches that removed more than outer clothing (`removal_of_more_than_outer_clothing`). The only way to get either today is to page every stop and count by hand. That takes three 200-row pages of about 110–120 KB each for Cumbria's 537 stops in 2026-08, and a cross-tab like find rate by officer-defined ethnicity…

[Read the thread](https://github.com/cyanheads/uk-police-crime-mcp-server/issues/6) · 2026-10-01 · closed · 1 comment

### bug(ukcrime_find_neighbourhood): events capped at 10 with no way to reach the rest

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

`events` is cut to the 10 soonest and `events_total` reports the full count, but no input reaches the others. Leicester City Centre (`leicestershire` / `NC04`) published 26 upcoming events running to 2026-12-22 (checked 2026-10-01), and the result stops at the 10th, on 2026-10-24. That rules out a question like "is there a police…

[Read the thread](https://github.com/cyanheads/uk-police-crime-mcp-server/issues/5) · 2026-10-01 · closed · 1 comment

## Most recent

### bug(police-api): rate-limit failures carry no reason, retry flag or wait time

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

A data.police.uk 429 reaches the caller as a bare `RateLimited` error, with no `reason`, `retryable` or recovery hint and `retryAfter` only in `structuredContent.error.data`, so a `content[]`-only client sees neither cause nor wait. A `Retry-After` over the retry loop's 10 s `maxDelayMs` fails at once, though the call has time left. A…

[Read the thread](https://github.com/cyanheads/uk-police-crime-mcp-server/issues/4) · 2026-10-01 · closed · 1 comment

### bug(search): polygon and location searches carry no coverage-gap notice, so no-data forces read as near-zero crime

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

Coverage notes and `force_published` appear only when a search knows its force: a named force (`neighbourhood`, `force`, `force_unplaced`) or a located `point`. `polygon` and `location` searches never resolve one, so a polygon over a force that publishes nothing returns a plausible small count with no notice. The same holds for…

[Read the thread](https://github.com/cyanheads/uk-police-crime-mcp-server/issues/3) · 2026-10-01 · closed · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/cyanheads/uk-police-crime-mcp-server/issues).
