The stdin request
One JSON object on stdin, one JSON envelope on stdout. The query never reaches the process list and needs no shell escaping.
A malformed field answers fix_input before any router call. The answer's shape is on The envelope.
Fields
| field | value |
|---|---|
version | 1, required. |
query | The search, required. |
tier | "fast" (one provider), "balanced" (several, attributed) or "max" (every provider). Absent, the request carries the participant's band (agents tier, then [miner] tier), or no tier at all and the router applies the tenant's default. |
recency | "day", "week", "month" or "year". A preference the router passes to its providers; check each citation if it must hold. |
domain_filter | Up to 16 bare hostnames. A preference, like recency. |
max_results | 1 to 25. A cap. |
providers | Up to 16 provider names: restrict the fan-out, or reach an extended arm that fires only when named. The router owns the list; an unknown name is its call. |
view | "full" (default) or "merged", which drops the per-provider candidates. "merged" is also sent to the router, which adds its own merged and indexes to its raw answer; the envelope's merged stays this client's own merge. The human form's -view merged with -format json shows that raw answer. |
What each option is for, with examples, is on Request options.
Sending it
From a POSIX shell, a heredoc keeps the query out of the command line:
jevlin search --stdin <<'JSON'
{"version":1,"query":"what is proof of authority consensus"}
JSON
Where the shell is PowerShell, a skill pipes a here-string into the call:
$OutputEncoding = [System.Text.UTF8Encoding]::new($false)
@'
{"version":1,"query":"what is proof of authority consensus"}
'@ | & 'C:\Users\you\.jevlin\bin\jevlin.exe' search --stdin
The first line is what makes an apostrophe, a quotation mark or any non-ASCII character arrive as written. Without it, Windows PowerShell 5.1 turns every non-ASCII character into ? on the way to the program, and the search answers a different question.
Each installed skill carries the form for its agent's shell, with your paths filled in.
Bounds
-timeout, default 60s, bounds the whole search: connect, TLS, headers, body and the one retry. If the router answers the exact code trace_unsupported, the client retries once without the trace, under the same deadline. Nothing else causes a second request.