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
lang: en es fr de it pt nl tr id sv hi te ta · prefs: triangle weights 0–1 · every suggestion ships its lexicon sub-scores and buy links.
2 · CLI
sudo curl -fsSL https://castana.me/cli -o /usr/local/bin/castana sudo chmod +x /usr/local/bin/castana castana "lawn care for busy families" castana "fancy taqueria" --lang es --real 0.7 castana "coffee cart" --json
3 · MCP — for your LLM
A Model Context Protocol server (stdio, zero dependencies) exposing find_domains — so Claude or any MCP client can hunt names mid-conversation and hand back verified-available domains with prices and buy links.
# Claude Code
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": "python3", "args": ["/Users/YOU/.ultrathink/mcp.py"]}}}
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.