Open Policing Data Hub

The endpoint

Paste this anywhere an MCP server URL is asked for
https://www.popdatasets.com/mcp
Transport
Streamable HTTP (protocol 2025-06-18)
Authentication
None
Tools
9, all read-only
Cost
Free, no account

Claude

Add it as a custom connector

Free, Pro, and Max plans

  1. Open Customize → Connectors in Claude.
  2. Click +, then Add custom connector.
  3. Paste the endpoint above and click Add.
  4. In a chat, use the + button → Connectors to switch Pop Datasets on.

Team and Enterprise plans

An organization Owner adds it once under Organization settings → Connectors → Add, hovering Custom and choosing Web. Members then find it under Customize → Connectors and click Connect.

Free accounts can hold one custom connector at a time. Because there is no authentication step, there is no sign-in prompt after you add the URL.

Claude Code

Add it from the terminal
claude mcp add --transport http \
  pop-datasets https://www.popdatasets.com/mcp

That adds the server for the current project. Add --scope user to make it available across every project on your machine, or --scope project to write it into a shared .mcp.json your teammates get too.

Verify with claude mcp list — you should see pop-datasets connected with 9 tools.

Any other MCP client

Drop it into your config file

Most clients — editors, agent frameworks, desktop apps — take a JSON config in this shape:

{
  "mcpServers": {
    "pop-datasets": {
      "type": "http",
      "url": "https://www.popdatasets.com/mcp"
    }
  }
}

Some clients spell the transport "streamable-http" instead of "http"; both mean the same thing here. If yours only speaks stdio, bridge it with a remote-MCP proxy pointed at the same URL.

ChatGPT

Use the Pop Datasets app

ChatGPT connects to the same server through its own app flow rather than a pasted URL, so it has its own walkthrough with developer-mode setup and test prompts.

Tool reference

What your assistant can call

Every tool is read-only and idempotent. None of them write data, send messages, or change anything outside this site — so there is no destructive action to approve.

  • searchSearch Pop Datasets

    Searches every indexed record — POP guides, projects, police policies, open-data sources, and datasets — and returns titles with canonical URLs.

    Inputs: query (required)

  • fetchFetch a Pop Datasets document

    Returns the full text and source metadata for one record. Accepts an id from search, a canonical URL, or a shorthand like guide:71 or agency:TX2200100.

    Inputs: id (required)

  • find_agenciesFind police agencies

    Filters the directory of ~19,000 U.S. law-enforcement agencies by state, type, population, crime-rate band, NIBRS participation, or open-data availability. Returns ORIs you can pass to the agency tools below.

    Inputs: state, agency_type, population_min, population_max, metric, band, nibrs, open_data, limit

  • get_agency_contextGet agency context

    Returns one agency's aggregate profile: historical crime trends, summarized NIBRS patterns, open-data links, related POP projects, and comparable agencies.

    Inputs: ori (required)

  • find_pop_projectsFind POP project examples

    Returns real-world problem-oriented policing projects filtered by problem, agency, country, or year — the case-example lookup, as opposed to broad research search.

    Inputs: query (required), country, agency, year_from, year_to, limit

  • find_data_sourcesFind open policing data sources

    Returns public datasets and portals by topic, state, or data type — calls for service, stops, use of force, complaints, staffing, budgets, policies — with links to the publisher.

    Inputs: query, state, dataset_type, include_inactive, limit

  • find_policy_documentsFind police policy documents

    Searches the indexed inventory of public police policy documents by topic, agency, or state. Returns publisher links; it does not judge whether a document is still current.

    Inputs: query (required), state, agency, limit

  • compare_agenciesCompare agency trends

    Compares one aggregate crime, clearance, or staffing metric across two to five agencies over a year range, with per-year coverage and explicit cautions. Descriptive only — not a performance ranking.

    Inputs: oris (required), metric (required), year_from, year_to

  • assess_agency_dataAssess agency data readiness

    Reports what data actually exists for one agency, how current it is, what is missing, and which original sources to check. Worth running before any local analysis or comparison.

    Inputs: ori (required)

Scope

What this server is and is not for

It returns published research and aggregate, agency-level public data. It holds no information about individual people: no criminal records, no arrest records, no incident-level reports, no real-time or current-incident data, and nothing that predicts risk for a person or address.

Coverage and freshness vary by agency, which is what assess_agency_data is for — run it before you build an analysis on top of a given agency. Every result carries a link back to the original publisher; verify consequential claims there rather than relying on the assistant's summary.

See the Data Disclaimer for source ownership and known limitations, the Privacy Policy for what requests are logged, and the Terms of Use. Prefer a plain JSON API? The REST API covers the same data. Something broken? Support.