castana.me

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.

The whole answer is one field. Each suggestion is either {domain, available:true, price_usd, buy_url, score} or {domain, available:false, status:"taken", score}. Yes + a link, or no. Nothing else to weigh — a taken name has no price and no buy link to mistake for a green light. The response also gives available_count.

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.