CAESAR_API_KEY only if you have a partner key for higher throughput. Not sure which surface you need? Start with the agents guide.
In a hurry? For agents that support skills, run:
Setup states
| Rail | Use when | Install signal | Verify signal |
|---|---|---|---|
| Skill | Your agent reads SKILL.md | caesar-search skill is present | CLI search returns search_id |
| MCP | Your client supports remote tools | caesar server is listed | Tools include caesar_search and caesar_read |
| CLI | Your agent has shell access | caesar-search is on PATH | caesar-search search ... --json exits 0 |
| AI SDK | You are building app tools | caesar-search/ai resolves | caesarTools imports as a function |
| REST | You want raw HTTP | no install required | first response includes search_id |
Claude Code
Fastest path for the search skill:caesar-search, caesar-read, caesar-setup, caesar-best-practices) and the caesar-subagent:
/caesar-setup) to pick them up. Verify:
caesar-* directories. The skills drive the caesar-search CLI; if it is missing from PATH, /caesar-setup installs it.
Alternative (or addition): connect the remote MCP server instead.
claude mcp list shows caesar connected. To see its two tools (caesar_search and caesar_read), run /mcp inside a session.
Cursor, Windsurf, and other MCP clients
Add the streamable-HTTP server to your client’s MCP config (.cursor/mcp.json, Windsurf’s mcp_config.json, or equivalent):
Most clients do not expand environment variables inside config files — inject the key value when generating the config, and never commit a literal key.
caesar_search and caesar_read. Details: remote MCP server.
Any agent with a skills directory
If your agent uses the Skills CLI, install the search skill directly:CAESAR_SKILLS_DIR:
ls ~/.agents/skills shows the four caesar-* directories. With CAESAR_SKILLS_DIR set, the caesar-subagent file is skipped — subagent definitions are Claude Code-specific. Other harnesses ignore the context: fork frontmatter and run the skills inline; they still work. Details: skills.
If your agent uses the skills npm CLI, install from the GitHub shorthand:
npx skills add caesar-search; skills expects a source such as owner/repo, a GitHub URL, or a local path.
For Claude Code, prefer the curl installer above because it also writes ~/.claude/agents/caesar-subagent.md. The npx skills path installs the SKILL.md folders only.
Plain shell agents (CLI)
Installcaesar-search through one channel:
~/.local/bin (override with CAESAR_INSTALL_DIR). Verify:
search_id and one result. Optional auth: export CAESAR_API_KEY=... or caesar-search auth login. Usage and scripting contract: CLI usage, automation.
Vercel AI SDK
ai package (version 5 or later) is an optional peer dependency — install it explicitly. Then:
caesarTools() returns caesar_search and caesar_read wired to a default client (reads CAESAR_API_KEY; anonymous works without). Pass caesarTools({ client }) to supply a configured Caesar instance. Verify the subpath resolves:
function. Details: AI SDK tools.
Raw HTTP
Nothing to install. One keyless call:search_id confirms access. The OpenAPI spec is served unauthenticated at /openapi/public.json on the same host. See the API reference.
Troubleshooting
CLI exit code 3, or HTTP 401
CLI exit code 3, or HTTP 401
Auth failure. Set
CAESAR_API_KEY or run caesar-search auth login. If a key is already set, it is malformed, expired, or revoked — an invalid key returns 401 and never falls back to anonymous. Unset it to go keyless. Check state with caesar-search auth status --json.Unknown flag or unknown command
Unknown flag or unknown command
The installed CLI is outdated. Run
caesar-search update — it detects the install channel (npm, Homebrew, standalone) and upgrades in place — then retry the exact same command. Do not run npm update -g or brew upgrade by hand.HTTP 429 rate_limited
HTTP 429 rate_limited
Over the per-second limit (anonymous tier: 30 requests/second per IP). Back off and retry — the
X-RateLimit-Reset header gives the window reset, at most about a second away. The CLI and SDKs retry 429 automatically with exponential backoff; if you still see 429, lower request volume or use an API key. See rate limits.MCP connection returns 401
MCP connection returns 401
Check the
Authorization header: it must be Bearer followed by an active key. A malformed or revoked key gets 401 even though anonymous access works — remove the header entirely to connect keyless. Auth failures on /mcp are HTTP-level, so the client reports a connection error rather than a tool error.