Every capability, from the command line.
The threat graph, IOCs, dark web feeds, ransomware tracking and CVE enrichment, reachable as a REST API, a tc command, or a tool an AI agent can call. Everything the UI does, scriptable.
macOS, Linux and Windows · Python 3.10+ · CLI and API keys included on every plan, Free included (read-only scopes).
Three ways to reach the same platform.
The threat graph, the entity engine, the scoring and the dark-web feeds, wherever your team builds.
Build whatever you need.
70+ endpoints under /api/public/v1/*: search, cluster detail, IOC export, entity graph, ransomware victims, CVE enrichment.
Script and compose.
The full read surface as commands. Clean JSON to stdout, NDJSON via --watch, stdin chaining with -. Drop-in for cron, CI, and shell pipelines. pipx install threatcluster-cli.
Inside the conversation.
Claude Code, Cursor, Aider, and any agent that runs a shell can call tc directly. For typed tool calls (Claude API, OpenAI function calls, LangChain), wrap a command in a Python adapter. Scoped credentials, request budgets, 15-min bearer TTL.
Or skip the shell: the MCP server gives Claude Desktop, Claude Code, Cursor and VS Code the same ten tools, with the credit cost of every call reported back to the model.
All three surfaces share the same authentication, scopes, and audit trail.
A credential model built for when a model holds the key.
Designed for the case where an LLM holds the key.
Short-lived bearer tokens
Agents never hold a long-lived secret. A 15-minute bearer JWT is minted from your API key at /api/auth/agent/token and expires on its own.
Scoped, and downgraded further
A key carries only the scopes its tier allows, and a sub-process gets a strictly narrower scope than its parent. A spawned tool can never widen its own access.
Per-session request budgets
TC_MAX_REQUESTS caps how much a single session can read, so a runaway loop hits a ceiling instead of your rate limit or your bill.
Keyring storage, no plaintext HTTP
Credentials live in the OS keyring, not a dotfile. The client refuses to send them over plaintext HTTP, so a misconfigured endpoint fails closed.
The command set.
The command groups mirror the platform's read surface end-to-end, same shape as the underlying REST API.
Full reference at /docs/cli. Every command takes --help.
Build with the platform.
A free key covers all three surfaces.