Providers and tiers
One request goes to the router, which holds the provider keys. A tier says how wide the router fans it out, and is also a per-query cost ceiling.
The core providers
In the balanced and max tiers, twelve arms run on every fan-out, under a per-query cost ceiling. fast asks one provider instead.
| kind | arms |
|---|---|
| web indexes | Exa, Brave, You.com, Serper, SerpAPI, Telem, Parallel search, TinyFish |
| answer engines | OpenAI web search, Perplexity, Perplexity search |
| research agents | Parallel (slow lane: it keeps working after the response and lands on the trace) |
Thirteen more fire only when a request names them in providers: Tavily and Tavily research, Linkup and Linkup answer, Valyu, Kagi, Mojeek, Gemini, Grok, Exa answer, Brave answer, the Perplexity agent and Octen. The set is the router's and changes without a client release. decision in every response says which arms ran.
What a search returns
The router runs the request against the arms and answers once:
result.merged: the citations of every provider that answered, deduplicated by page. Each entry carriesfound_by, the providers that found that page, andbest_rank, the best position any of them gave it. Agreement between independent indexes is the fan-out's own evidence, and the skill tells the agent to read this list first.result.candidates: each provider's answer as it came back, so a disagreement can be inspected rather than averaged away."view":"merged"drops this when tokens matter.decision: which providers ran, anddecision.trimmedfor any the ceiling cut.usage.cost_micros: what the search cost, in millionths of a dollar.latency_ms: for the search and for each provider.request_id: so a search can be found again on the platform.
See the envelope for every field.
The three tiers
| tier | what runs | for |
|---|---|---|
fast | one provider, chosen by the search platform | a routine lookup, the default for a new key |
balanced | the core arms, each result attributed to its source | when the agent needs more than one source, or the first answer came back thin |
max | every core arm | corroboration: the same page found by independent indexes |
A tier is also a per-query cost ceiling on the router. A set of arms that would exceed the ceiling is trimmed rather than refused, with decision.trimmed naming what went.
Who chooses
- You, out of band.
/jevlin tier balancedin an agent, orjevlin agents tier balancedfrom a shell, sets the band every search carries unless a request names one./jevlin tier defaultunsets it, and/jevlin tiersays what is in force. See Choosing a band. - The agent, one step at a time. The skill tells it to leave
tieralone so your band applies, to ask forbalancedwhen it needs several sources, and never to sendmaxon its own.maxis yours to choose. - The router, when nobody did. A request with no tier and no band set carries none, and the router applies the default for your key.
Spend
jevlin limits # this key's spend caps and today's spend, read from the router
jevlin limits -json # the same as one envelope
Reading spends nothing. Setting caps from the command line is not built yet; the platform's Limits page shows the same figures.