app.offendersearch/offendersearch

Offendersearch

Search US sex-offender registries and criminal records, with per-source citations.

Endpointhttps://mcp.offendersearch.app/mcp (streamable-http)
Registry version1.29.1
Now10 tools · grade F (0) · pin ts_22925de2a758f436f6461c8cf9fdf480 · protocol 2025-06-18
First / last listed2026-10-28 05:12 UTC / 2026-10-28 05:12 UTC
Grade over time2026-10-28: F (0), 10 tools

Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.

Timeline

First listing · 2026-10-28 05:12 UTC
10 tools, grade F (0)

Tools: search_offenders batch_search get_registry_coverage search_criminal get_criminal_coverage map_viewport map_area map_route map_group map_open_record

Current tools (10)

search_offendersSearch US sex-offender registries for one person and/or location. Fans out across all 58 registries (or the ones named in `jurisdictions`), de-duplicates people across registries, scores each match, and returns the normalized records. Supply whatever identifiers you have — all args are optional but at least a name, location, or free-text `q` should be given. Returns a SearchR
params: first_name, last_name, dob, age, city, state, zipcode, address, lat, lng, radius_miles, q, jurisdictions, match, freshness, location_scoped, extensive, deadline_ms
batch_searchRun many person/location lookups in one call (row-in / row-out). Each row goes through the SAME engine as search_offenders, so a row's records are identical to what a single search would return. A row that fails is reported with status='error' in place and never aborts the batch. Max 1000 rows. Returns: { count, results: [ { index, status, counts{records,sourcesQueried, sourc
params: queries*, jurisdictions, match, freshness, location_scoped, extensive
get_registry_coverageList every registry we cover plus its scope, legal status, and health. Public coverage catalog (no API key required). Use it to discover the `jurisdictions` codes accepted by search_offenders / batch_search and to check per-registry freshness/health before relying on a result. Returns: { count, registries: [ SourceInfo ] } where each SourceInfo is: - id: registry code (e.g.
params: none
search_criminalSearch US criminal records — county jail bookings, state prison custody, court cases and warrants. Covers county jail rosters, statewide prison systems, court sources, warrant systems and statewide registries across the states, DC and the territories, plus the federal layer — which is a separate system holding offences no state search will surface. A surname is REQUIRED. Supp
params: lastName*, firstName, dob, birthYear, age, state, county, limit
get_criminal_coverageList the criminal-record jurisdictions searched, with kind and status. Use it to discover which states and counties are reachable and which are answering today, before relying on an empty result. Depth is uneven by design: counties publish independently, so a state with many county jurisdictions is not "better covered" than one that publishes a single statewide source — it is
params: none
map_viewportGet what to draw for one map view: clusters, pins, or named pins. Send the view as `bbox`, or as `lat` + `lng` + `radius_miles`. The detail returned depends on the zoom the view is answered at (the response states it in `zoom`): - zoom 3-12 -> mode 'clusters': a count per grid cell. Each cluster has `count`, `bbox`, `breakdown` and `expansionZoom` (fit the map to `bbox`
params: bbox, lat, lng, radius_miles, zoom, housing, street_only, detail, sandbox
map_areaGet what to draw inside a drawn shape: a polygon, or a line with a buffer. The same answer as map_viewport for the shape's bounding box, limited to what is inside the shape, at the same detail levels (clusters, pins, or named pins at zoom 15+). The response adds `shape: 'polygon' | 'route'`. Returns: { shape, mode, zoom, bbox, datasetVersion, total, breakdown {street, housed,
params: polygon, route_points, buffer_miles, zoom, housing, street_only, detail, sandbox
map_routeExact counts of registered addresses along one walking or bus route. Counts a corridor either side of the line, a radius around each stop, or both, and returns exact numbers per leg and per stop with nameless pins and their distances. Never an estimate and never partial: the answer is complete or the call fails without a charge. Returns: { shape: 'route', profile, measure, de
params: path, polyline, polyline_precision, stops, profile, measure, corridor_miles, stop_radius_feet, parcel_allowance_feet, detail, housing, street_only, sandbox, external_id
map_groupList the people behind a many-people pin or an approximate-area pin. Returns: { total, page, perPage, totalPages, kind: 'address' | 'area', named, members: [ { id, addressType, label, housingStatus, hasPhoto } ] }. Members carry `label` only when the group id came from a view at zoom 15 or closer (`named: true`). Each member `id` opens with map_open_record. Billing: one map r
params: group_id*, page, per_page
map_open_recordOpen the complete record behind one map marker, or behind a saved reference. Returns: { record, recordRef, billing: { billed, unit, reason }, notice }. `record` is the same Record object search_offenders returns. `recordRef` ('mr_...') is a lasting reference: keep it to open the same record later, after the marker id has expired. Billing: one record open per person per map re
params: marker_id*

Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.