FAQ
Short answers about looot accounts, tokens, jobs, fallback, prices, failed runs, connecting agents, missing providers and docs made for agents.
Do I need an account to look around?
No. looot search and looot inspect read the public catalog without a token, and so does
GET /v1/public-catalog. You need an account, a token and a funded balance to run anything.
See Browse without an account.
Is there free or trial credit?
No. A new workspace starts at $0. Add at least the minimum top-up (shown by looot balance)
before your first run. See Before your first run.
Which Node version does the CLI need?
Node.js 20 or newer. looot doctor checks it.
Where is my token, and how do I remove it?
looot login saves it to ~/.config/looot/config.json, readable only by you. looot logout
revokes it on the server and deletes the file. Every token is also listed in Settings, Agent
tokens, on looot.ai, where you can revoke it. See Sign in.
Do I need to copy a token into my agent?
Usually not. Claude Code, Claude.ai, Claude Desktop, ChatGPT, Codex, Cursor, VS Code, Gemini CLI, Windsurf and other MCP clients that support browser sign-in keep their own token, which renews on its own. You only put a token in a header for CI, scripts, or a client without browser sign-in. See Connect your agent.
Can I pass the token as a CLI flag?
No. There is no --token flag, so the secret never lands in shell history. Use looot login
or set LOOOT_TOKEN.
How do I know what a call will cost before I run it?
looot inspect <endpoint-id> (or MCP inspect, or GET /v1/operations/{id}) shows the price
formula and, when signed in, the estimated maximum cost of one run. Search results show the
price per call or per result.
Am I charged when a call fails?
No. A run that fails at the provider settles at $0 (or the provider’s evidenced partial cost) and its hold is released. A run refused before it starts takes no hold at all. See Money: free calls and failures.
Can a retry charge me twice?
Not with the same idempotency key. The same key with the same input returns the original run
(replayed: true) and charges once. The CLI prints the key it used on every run. See
Idempotency.
What is a job, and when should I run job:<id> over an endpoint?
A job (also called a capability, like people.email.find) is the task several providers can
do, not one provider’s specific operation. Send endpointId: "job:<job id>" to run and looot
picks the first provider of that job that can run now and accepts your input. You don’t pick
an endpoint id yourself. See Jobs.
What does fallback do, and does it cost more?
Add fallback to a run to let it move on to the next provider of the same job when the first
one misses or errors. It’s one hold for the whole route, and only the attempts that actually
ran are charged; an error, a 402, or a rejected call is never charged. See
Fallback. --fallback on the CLI is coming in the next release; use the
MCP run tool or the REST body today.
What is normalized output?
A completed run of some jobs (currently email verify/find, phone find, company enrich, scrape
markdown and backlinks summary) can carry a normalized object next to result: the same
answer mapped onto one shared field set, so you don’t have to read every provider’s own
response shape. It’s absent, never null, when it doesn’t apply to that job or that gateway
hasn’t turned it on. See Normalized output.
Why does an endpoint in search refuse to run?
Some endpoints are switched off for a while, for example when the provider is down. They
return provider_disabled, and search lists the endpoints that run now by default. Pick
another endpoint for the same job, or send job:<id> and let looot pick one that can run.
My run says completed but the data looks wrong. Where do I look?
runs_evidence / looot runs evidence <run-id> shows every attempt with the provider’s own
response status, latency, receipt id and cost. Quote the run id and the requestId when you
ask for help. Also check outcome: "miss" means the provider answered but found nothing,
and "weak" means a flagged answer (a catch-all email, a guessed pattern) worth verifying
before you use it.
Which agent client should I use?
Any MCP client that speaks Streamable HTTP works: add https://api.looot.ai/mcp and sign in
with the browser. See Connect your agent for the setup page for Claude Code,
Claude.ai, Claude Desktop, ChatGPT, Codex, Cursor, VS Code, Gemini CLI, Windsurf, Grok,
Copilot Studio and more, and CLI vs MCP if you’d rather script
against the CLI or REST directly.
What's the looot plugin, and do I need it?
The plugin adds ready-made skills for Claude Code and compatible clients on top of the MCP tools: setup, finding and running the right endpoint, money awareness, and troubleshooting. It is not required; the MCP tools alone are enough to search, inspect and run. See Plugin.
My agent says forbidden when it tries to run something.
Its token lacks the runs.execute scope. If the agent signed in with the browser, revoke its
“(connected)” token in Settings, Agent tokens, sign in again from the agent and keep
runs.execute ticked on the consent page. If it uses a header token, create one that includes
it, with looot login or in Settings, Agent tokens. See Access.
The provider I need isn't in the catalog.
Ask for it with the capability_request MCP tool, or POST /v1/capability-requests.
How do I get machine-readable output from the CLI?
Pipe the command, or add --format json (or jsonl). Errors come as one JSON object on
stderr; see Errors.
Does looot have docs made for agents?
Yes. https://docs.looot.ai/llms.txt is a plain-text index of this site, and every page also
has a .md mirror (append .md to the page’s URL) for an agent that would rather read
Markdown than rendered HTML. There’s also a docs MCP server at https://docs.looot.ai/mcp an
agent can connect to and search directly. Separately, the gateway itself publishes
https://api.looot.ai/llms.txt describing the API and tools, and each catalog endpoint has an
agent-readable card at /catalog/{endpointId}.md.