Stop writing parsers for 30+ agencies. Stop hoping your LLM remembered the 2024 CDC numbers. Stop arguing with users about where an answer came from. Katzilla wraps SEC, FDA, Congress, NOAA, USGS, EPA, Census, FRED, and 19 more agencies behind a single key — with a machine-readable citation on every response.
GET /agents/government/actions/sec-edgar
?ticker=AAPL&form=10-K&_limit=1
{
"data": {
"filing": {
"ticker": "AAPL",
"form": "10-K",
"filed": "2025-11-01",
"accession": "0000320193-25-000123"
}
},
"quality": {
"freshness_seconds": 47,
"source_uptime_30d": 0.992,
"confidence": "high"
},
"citation": {
"source_name": "U.S. SEC EDGAR",
"source_url": "sec.gov/cgi-bin/…",
"license": "Public Domain",
"retrieved_at": "2026-04-17T03:12Z",
"data_hash": "sha256:a1f3…"
}
}// numbers above are live · cached 5m from api.katzilla.dev
Pick your path: MCP for Claude Desktop / Cursor / Windsurf, an SDK for your backend, or raw REST. Same key, same citation contract.
Drop the MCP server URL into Claude Desktop / Cursor / Windsurf. Or install @katzilla/sdk — two lines, you're wired.
# ~/.config/claude/config.json
{
"mcpServers": {
"katzilla": {
"url": "https://api.katzilla.dev/mcp",
"headers": {
"Authorization": "Bearer kz_your_key"
}
}
}
}Your agent picks the right action. Every dataset is described in a tool-use schema — no manual endpoint lookup required.
// user:
"Were there any magnitude-6+ quakes today?"
// agent tool call:
katzilla.query(
"hazards",
"usgs-earthquakes",
{ minMag: 6, _fields: ["mag","place"] }
)Always the same envelope: data + quality + citation. Your agent grounds its answer without you writing a prompt to force it.
{
"data": [{
"mag": 6.2,
"place": "Tonga Islands"
}],
"quality": {
"freshness_seconds": 47,
"confidence": "high"
},
"citation": {
"source": "U.S. Geological Survey",
"url": "earthquake.usgs.gov/…",
"retrieved_at": "2026-04-17T14:23Z"
}
}// same envelope from every source · quality + citations built in
Pick whichever fits how your agent is wired. All three hit the same backend, get the same citations, share the same usage meter.
import { Katzilla } from "@katzilla/sdk";
const kz = new Katzilla({ apiKey: process.env.KZ_KEY });
const { data, citation } = await kz.query(
"hazards",
"usgs-earthquakes",
{ minMag: 5, _fields: ["mag", "place"] },
);# Anthropic Claude
tools = katzilla.as_anthropic_tools(include=["hazards__"])
client.messages.create(
model="claude-sonnet-4",
tools=tools,
messages=[{"role":"user", "content":"Any big quakes today?"}],
)curl https://api.katzilla.dev/agents/hazards/actions/usgs-earthquakes \
-H "X-API-Key: kz_..." \
-G --data-urlencode "minMag=5" \
--data-urlencode "_fields=mag,place"Every pill is a live Katzilla action. Click a card to see the exact tool call — drop it into your own codebase unchanged.
Joins FRED rates, BLS employment, Treasury issuance, and SEC 8-Ks into a single hourly briefing.
const briefing = await kz.join([
{ agent: "data-economic", action: "fred-series", params: { id: "DFF" } },
{ agent: "data-economic", action: "bls-employment" },
{ agent: "data-government", action: "sec-edgar", params: { forms: ["8-K"] } },
]);Flags every FDA recall touching your drug formulary and cross-references NIH trial status shifts.
kz.query("data-health", "fda-recalls", {
since: "7d", class: ["Class I", "Class II"],
_fields: ["product", "reason", "manufacturer"],
});Reads every rule published in the Federal Register, summarizes CFR impact, drafts client alerts.
const rules = await kz.query("data-government", "federal-register", {
type: "RULE", agency: ["EPA", "SEC"], since: "today",
});Every claim about population, inflation, emissions, or court rulings comes back with the source URL baked in.
const { data, citation } = await kz.query(
"data-demographics", "census-acs",
{ table: "B25077", geography: "state:06" },
);
// → cite(citation.source_url)Cross-joins USGS seismic + NOAA storms + FEMA disaster declarations for property-level risk scoring.
await kz.query("data-hazards", "usgs-earthquakes", {
nearLat: 34.05, nearLng: -118.24, radiusKm: 50, since: "30d",
});Polls NIST NVD + CISA KEV every 5 minutes, correlates with your asset inventory, fires pages on criticals.
kz.query("data-security", "nvd-cves", {
severity: "CRITICAL", since: "1h",
});181+ live API actions listed here, plus thousands more datasets proxied through Data.gov. Every one normalizes into the same {data, quality, citation} envelope.
Data API for the 90% that has a REST endpoint. Scrape for the 10% that doesn't. Same key. Same citation envelope. Same usage meter. Switch between them per-call.
LLMs hallucinate because they were trained on text, not sources. Primary-source data turns every answer into an auditable chain — source name, URL, license, fetched-at, content hash. When a user asks "where did that come from," your AI has an answer.
One REST + MCP API wrapping every major US government dataset — SEC, FDA, Congress, NOAA, USGS, FRED, Census, and 250k+ Data.gov sets. Structured JSON, quality metadata, verifiable citation on every response.
No. Free plan: 2,500 calls/month, every dataset, every SDK, quality metadata, citations. No card, no time limit.
MCP (Claude Desktop · Cursor · Windsurf), Anthropic Claude tool_use, OpenAI function calling, LangChain, CrewAI, Vercel AI SDK. Native SDKs for TypeScript + Python. Raw REST from any language.
Depends on the source. USGS earthquakes: ~60s. FRED: whenever the agency publishes (daily–monthly). SEC EDGAR: within minutes of EDGAR posting. Every response ships with a freshness_seconds field so your agent always knows.
Every response includes source name, exact upstream URL, retrieval timestamp, and a SHA-256 content hash. Your user (or a regulator) can re-fetch and confirm exactly what the agent saw.
We own them. Katzilla holds its own upstream credentials, caches aggressively, queues when needed. Your agent talks to one endpoint — we talk to 30+.
Katzilla Scrape — same key, same citation envelope. When the source is an HTML page (state portals, city sites, aggregators), POST /scrape/page instead of GET /agents/.... One-line switch.
Keys are hashed (SHA-256) at rest — we only see them at verify time. HTTPS-only transit. Rotate from /workspace/keys whenever. Revoking is instant.
Every plan includes every data source. You only pay for volume. Annual billing saves ~25%.
We answer support tickets within one business day.
integration questions · bug reports · roadmap feedback