Katzilla MCP
# Katzilla
> 300+ free public & government data sources behind one API key — the data API for AI agents.
[](https://www.npmjs.com/package/@katzilla/mcp)
[](https://www.npmjs.com/package/@katzilla/sdk)
[](LICENSE)
Katzilla aggregates primary-source public data — US federal, case law, health, hazards, economics, 17+ international open-data portals, Eurostat, ECB, WHO, OECD, IMF, World Bank, and more — behind a single REST API and MCP server. Every response ships with structured `citation` metadata (source, license, URL, update frequency) and `quality` scoring (freshness, uptime, completeness, confidence).
Get a free API key at <https://katzilla.dev/dashboard>.
## MCP Server
The fastest way to use Katzilla is as an MCP server in Claude Desktop, Cursor, Windsurf, Continue, or any stdio MCP client.
### Claude Desktop
Edit `claude_desktop_config.json`:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"katzilla": {
"command": "npx",
"args": ["-y", "@katzilla/mcp"],
"env": {
"KATZILLA_API_KEY": "kz_your_key_here"
}
}
}
}
```
### Cursor
Add to `~/.cursor/mcp.json` (or project-local `.cursor/mcp.json`):
```json
{
"mcpServers": {
"katzilla": {
"command": "npx",
"args": ["-y", "@katzilla/mcp"],
"env": {
"KATZILLA_API_KEY": "kz_your_key_here"
}
}
}
}
```
Restart the client — Katzilla's tools show up in the MCP menu. Full MCP package docs: [packages/mcp/README.md](packages/mcp/README.md).
## TypeScript SDK
```bash
npm install @katzilla/sdk
```
```ts
import { Katzilla } from "@katzilla/sdk";
const kz = new Katzilla({ apiKey: process.env.KATZILLA_API_KEY! });
const quakes = await kz.agent("hazards").action("usgs-earthquakes", {
minMagnitude: 5,
});
console.log(quakes.data, quakes.citation);
```
## REST API
```bash
curl -X POST https://api.katzilla.dev/agents/hazards/actions/usgs-earthquakes \
-H "X-API-Key: kz_your_key_here" \
-H "Content-Type: application/json" \
-d '{"minMagnitude": 5, "limit": 10}'
```
Public endpoints (no auth): `/health`, `/status`, `/openapi.json`, `/agents`, `/agents/tools`, `/agents/datasets`.
## Data coverage
- **US federal** — congress.gov, SEC EDGAR, Federal Register, Regulations.gov, USAspending, FEC, govinfo, State Department
- **US case law** — CourtListener (opinions at every level)
- **US health** — FDA recalls / adverse events / devices, NIH ClinicalTrials.gov, CMS, CDC
- **US hazards** — USGS earthquakes & water, NWS alerts, FEMA disasters, NASA FIRMS wildfires
- **Economics** — BLS, FRED, BEA, Census ACS, Treasury Fiscal Data
- **International portals** — UK, France, Germany, Canada, Australia, Brazil, Ireland, Spain, Italy, Poland, and more
- **International bodies** — Eurostat, ECB, WHO, OECD, IMF, World Bank, UN Comtrade, SIPRI
- …plus crypto, space, demographics, energy, transport, agriculture.
Full source list at <https://katzilla.dev>.
## Repository layout
Monorepo (pnpm workspaces).
| Package | Purpose |
| --- | --- |
| [packages/api](packages/api) | Fastify 5 REST API server |
| [packages/app](packages/app) | React 19 + Vite SPA frontend |
| [packages/sdk](packages/sdk) | Official TypeScript SDK ([npm](https://www.npmjs.com/package/@katzilla/sdk)) |
| [packages/python-sdk](packages/python-sdk) | Official Python SDK |
| [packages/mcp](packages/mcp) | Standalone MCP server ([npm](https://www.npmjs.com/package/@katzilla/mcp)) |
| [packages/core](packages/core) | Shared types, schemas, utilities |
| [packages/agents/*](packages/agents) | One package per data-source category |
## Development
```bash
pnpm install
pnpm build # build all packages
pnpm dev # dev mode (api + app in parallel)
pnpm dev:api # api only
pnpm dev:app # frontend only
pnpm typecheck # typecheck all packages
pnpm test:e2e # Playwright E2E tests (needs app on :5173)
```
Required env vars: `DATABASE_URL`, `JWT_SECRET`, `CREDENTIAL_ENCRYPT_KEY`.
Data-source keys (optional, BYOK): `DATA_GOV_API_KEY`, `FRED_API_KEY`, `BLS_API_KEY`, etc. See [.env.example](.env.example).
## Links
- Site & dashboard — <https://katzilla.dev>
- API docs — <https://api.katzilla.dev/openapi.json>
- Issues — <https://github.com/codeislaw101/katzilla/issues>
## License
MIT
TDQS
Scored across 274 tools
Each tool is clearly distinct, targeting a specific data source or API within a well-defined domain (e.g., agriculture__usda-nass for crop statistics vs. agriculture__usda-fooddata for nutrient info). The naming convention with double underscores separates domains and sources, preventing overlap and making tool purposes unambiguous. An agent can easily differentiate between tools like 'crime__fbi-most-wanted' and 'crime__recap-docket' based on their descriptions.
All 274 tools follow a strict and consistent naming pattern: 'domain__source-description' using snake_case throughout (e.g., 'economic__fred-series', 'environment__noaa-cdo'). This pattern is uniformly applied across all tools, with no deviations in style or structure, making the set highly predictable and readable.
With 274 tools, the count is excessive for a single server's scope, even though the server aims to aggregate many data sources. This volume overwhelms typical agent workflows and exceeds reasonable scoping (25+ tools is considered heavy). While each tool is valuable individually, the collective size makes the server feel like a bundle of many mini-servers rather than a coherent set.
The tool set is exceptionally complete for its intended purpose of providing access to diverse public data APIs. It covers a wide range of domains (agriculture, crime, economics, health, etc.) with comprehensive coverage within each, including search, retrieval, and query operations. There are no apparent gaps; each tool serves a specific data source, and the set collectively supports extensive data access workflows without dead ends.