COMSAT retrieves public evidence and emits a Record stream. It does not score truth, write a summary, or keep a search unless you ask it to watch.
normalize · one item
{
"id": 22238335,
"type": "story",
"title": "Tell HN: …",
"by": "pg",
"time": 1580000000,
"url": "https://…"
}
{
"id": "hacker-news:22238335",
"source": "hacker-news",
"kind": "story",
"url": "https://news.ycombinator.com/item?id=22238335",
"title": "Tell HN: …",
"author": "pg",
"created_at": "2020-01-26T00:53:20Z",
"metadata": { }
}
CLI, MCP, and Code Mode invoke the same command graph. A local query needs no COMSAT account.
GitHub, Hacker News, the web, and Stack Exchange each speak their API. Plugins never return vendor JSON to the caller.
Identity, source, kind, URL, optional title, text, author, timestamps, and a metadata object. IDs are source-scoped.
Order is retrieval order, not a ranking. Consumers decide what the evidence means.
Search prints JSON Lines and does not write to the store. A watch repeats the query on a schedule and keeps observations, tenant-fenced.
cargo install --path crates/comsat-cli --bin comsat
comsat search "MCP OAuth" --source github --limit 5
comsat --mcp
The managed service on this domain requires Authorization: Bearer. Authenticated routes are /search, /fetch, /follow, /watch/*, /history, /mcp, and /health. Browser origins are denied unless explicitly allowed. Web search needs a Brave key; GitHub and Stack Exchange keys are optional.