FBI Crime Data

liveGovernmentDemographics

UCR/NIBRS crime statistics by agency, state, and nationally. Reuses your data.gov API key.

6tools
0msauth
free tier50 calls/day

Tools

list_agencies

Reporting agencies, optionally filtered by state.

Parameters
NameTypeDescription
state_abbroptstring2-letter state code
Try it
get_agencyrequired: ori

Single agency by ORI.

Parameters
NameTypeDescription
orireqstring9-character ORI
Try it
national_estimaterequired: offense

National rate + count estimates over a year range.

Parameters
NameTypeDescription
offensereqstringOffense slug
fromoptnumberStart year
tooptnumberEnd year
Try it
state_summaryrequired: state_abbr, offense

Monthly counts of an offense in a state.

Parameters
NameTypeDescription
state_abbrreqstring2-letter state code
offensereqstringOffense slug
fromoptstringYYYY-MM
tooptstringYYYY-MM
Try it
agency_summaryrequired: ori, offense

Monthly counts of an offense for one agency.

Parameters
NameTypeDescription
orireqstring9-character ORI
offensereqstringOffense slug
fromoptstringYYYY-MM
tooptstringYYYY-MM
Try it
list_offense_slugs

Static list of valid offense slugs.

No parameters required.

Try it

Test with curl

The gateway speaks JSON-RPC 2.0 over HTTP POST. You can test any pack directly from the terminal.

List available tools
bash
curl -X POST https://gateway.pipeworx.io/fbi-crime/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Call a tool
bash
curl -X POST https://gateway.pipeworx.io/fbi-crime/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_agencies","arguments":{}}}'

Use with the SDK

Install @pipeworx/sdk to call tools from any TypeScript/Node project.

TypeScript
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("list_agencies", {});
ask_pipeworx
// Or ask in plain English:
const answer = await px.ask("ucr/nibrs crime statistics by agency, state, and nationally");