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

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.