Three ways in, same fleet.
Everything the website does — fleet generation, registry-truth availability, live prices, language flavors, the triangle weights — is callable.
1 · HTTP API
curl -X POST https://castana.me/api/v0/searches \
-H 'Content-Type: application/json' \
-d '{"query": "south indian restaurant", "mode": "agentic",
"lang": "te", "prefs": {"short": 0.2, "phonics": 0.3, "real": 0.5}}'
# → {"search": {"id": 42, "state": "queued", …}}
curl https://castana.me/api/v0/searches/42 # poll until state: complete
Sync vs async: a described idea (a phrase) is generated on the fleet — the POST returns state:"queued" with no suggestions; poll the id every few seconds until state:"complete" (states: queued → forging/processing → complete, or failed). A bare name or domain ("chromacode.com") is checked instantly — the POST comes back complete inline, no polling. Prices shown are recent/live estimates; the real price (and the actual purchase) happen at the registrar — buy_url is an affiliate redirect there, you never buy from us.
lang: en es fr de it pt nl tr id sv hi te ta · prefs: triangle weights 0–1. Always JSON — even on errors, no Accept header needed.
2 · CLI
# pick one — zero runtime deps either way uvx castana "lawn care for busy families" # zero-install, just run pipx install castana # or: uv tool install castana brew install starshipagentic/tap/castana # no toolchain? the single-file fallback still works: sudo curl -fsSL https://castana.me/cli -o /usr/local/bin/castana && sudo chmod +x /usr/local/bin/castana castana "fancy taqueria" --lang es --real 0.7 castana chromacode --pkg # + pypi/npm/github/crates/gems castana "coffee cart" --json
Direct domain lookup
Pass an exact name instead of an idea and every surface checks that domain plus its TLD variants against registry truth — instantly, no fleet. A query with no spaces ("chromacode" or "chromacode.com") is treated as a lookup; a phrase ("svg voiceover studio") brainstorms. MCP also exposes a dedicated check_domain tool.
curl -X POST https://castana.me/api/v0/searches -H 'Content-Type: application/json' \
-d '{"query": "chromacode.com"}' # → chromacode.com available:false + variants
castana chromacode.com # CLI: same, exact verdict first
Where to buy a name
Search gives the best price; this gives the whole shelf — every registrar and what each charges, cheapest first (live:false = recent retail estimate, real price shows at checkout). MCP tool: buy_options.
curl https://castana.me/api/v0/buy-options/chromacode.co
# → {"domain":"chromacode.co","available":true,"options":[
# {"registrar":"namecheap","price_usd":4.80,"url":"…","live":true}, …]}
castana chromacode.co --buy # CLI
Is the name free as a package too?
Registry truth isn't only domains. A bare-name lookup also reports whether the word is unclaimed on the developer registries — PyPI, npm, GitHub, crates.io, RubyGems (404 = free). It rides along on the search response (search.namespaces), and there's a dedicated endpoint, the CLI --pkg flag, and an MCP check_namespace tool.
curl https://castana.me/api/v0/namespace/chromacode # all registries
curl 'https://castana.me/api/v0/namespace/chromacode?on=pypi,npm' # a subset
# → {"name":"chromacode","registries":{
# "pypi":{"label":"PyPI","available":true,"status":"available","url":"…"}, …}}
castana chromacode --pypi --npm # CLI: just those two
3 · MCP — for your LLM
A Model Context Protocol server (stdio, zero dependencies) with four tools — find_domains, check_domain, check_namespace, buy_options — so Claude or any MCP client can hunt names mid-conversation and hand back verified-available domains and package names with prices and buy links.
# Claude Code — once published, no file download
claude mcp add castana -- uvx --from castana castana-mcp
# or from a local copy
mkdir -p ~/.ultrathink && curl -fsSL https://castana.me/mcp.py -o ~/.ultrathink/mcp.py
claude mcp add castana -- python3 ~/.ultrathink/mcp.py
# Claude Desktop — claude_desktop_config.json
{"mcpServers": {"castana": {
"command": "uvx", "args": ["--from", "castana", "castana-mcp"]}}}
Be reasonable: one think at a time per caller (the API enforces it), results are registry truth at check time, and the Buy links are how the lights stay on.