# Offendersearch MCP Server Search **all 58 US sex-offender registries** — every US state, DC and the territories — from any MCP client: Claude Desktop, Claude Code, or any agent runtime that speaks the [Model Context Protocol](https://modelcontextprotocol.io). One tool call returns scored, de-duplicated, provenance-tagged records from a continuously updated national dataset with 100% US coverage. Built on the official Python [`mcp`](https://pypi.org/project/mcp/) SDK (FastMCP). ## Tools | Tool | What it does | |---|---| | `search_offenders` | Search every registry for one person/location — name, DOB, age, city/state/ZIP, street address, GIS radius, or free text. Returns scored matches with per-registry outcome (`sourceStatus`) and plain-language `warnings`. | | `batch_search` | Up to 1,000 lookups in one call, row-in/row-out, each through the same engine as a single search. | | `get_registry_coverage` | The public coverage catalog: every registry code, scope, legal status and health. No API key needed. | Results carry `matchConfidence`, `matchBasis` (why it matched), DOB verification state, aliases, addresses, offense detail, and a per-source citation with `lastCheckedAt` — so an agent can cite exactly which registry said what. ## Auth — an API key, free to get Create a key at **[offendersearch.app](https://offendersearch.app/sign-up)** — it works immediately: **25 free searches, no card required.** - **Local (stdio):** set `OFFENDERSEARCH_API_KEY`. - **Remote (streamable-HTTP):** each request forwards its own `X-API-Key` header — multi-tenant by design. ## Quick start (Claude Desktop, local stdio) ```bash python -m venv .venv && source .venv/bin/activate pip install -r requirements.txt ``` `claude_desktop_config.json`: ```json { "mcpServers": { "offendersearch": { "command": "python", "args": ["/path/to/services/mcp-server/server.py"], "env": { "OFFENDERSEARCH_API_KEY": "os_live_..." } } } } ``` ## Remote / self-hosted (streamable-HTTP) ```bash MCP_TRANSPORT=streamable-http OFFENDERSEARCH_API_KEY="os_live_..." python server.py # or: uvicorn server:http_app (see Dockerfile) ``` Client config for a hosted instance (per-request key, no env secret): ```json { "mcpServers": { "offendersearch": { "url": "https:///mcp", "headers": { "X-API-Key": "os_live_..." } } } } ``` ## Example exchange > **User:** Is a John Doe, born 1980-04-12, on any registry in New Jersey? > > **Agent** → `search_offenders(first_name="John", last_name="Doe", > dob="1980-04-12", state="NJ")` > > **Agent:** One candidate matched with a full date-of-birth confirmation > (`dobVerification: dob_match`, confidence 1.0): John A. Doe, registered in NJ, > with the official registry record linked. All 58 registries were searched to > completion (`sourcesIncomplete: 0`). ## Reading results responsibly - If `counts.sourcesIncomplete > 0`, the records are a **lower bound** — relay `warnings[0]` rather than reporting a clean "no match". - A match is a **candidate**, not an identification — verify DOB and photograph. - Results are public-record data and **not a consumer report**; do not use them for FCRA-covered decisions without appropriate process. ## More - API docs: https://offendersearch.app/docs - OpenAPI: https://offendersearch.app/openapi.json - MCP page: https://offendersearch.app/mcp-server ## Offendersearch resources - [Sex offender registry search](https://offendersearch.app/) — search every US registry from one dashboard, free tier included - [Sex offender statistics by state](https://offendersearch.app/sex-offender-statistics) — ranked counts and per-1,000-resident rates for all 56 US jurisdictions - [Open data downloads](https://offendersearch.app/data) — free aggregate CSVs (by state and by city) - [Background check API documentation](https://offendersearch.app/docs) — REST reference, normalized record schema, quickstarts - [State registry guides](https://offendersearch.app/sex-offender-registry) — how each state's registry works and how to search it - [MCP server guide](https://offendersearch.app/mcp-server) — hosted endpoint, Claude Desktop and ChatGPT connector setup - [API pricing](https://offendersearch.app/pricing) — metered, $0.15 per call, volume tiers