Files
coyote/assets/agents/librarian

Librarian

The "external grep" sibling of Explore. Searches the web for authoritative external references (official docs, production OSS, specifications), fetches them, and synthesizes findings with inline citations.

Designed to be delegated to by Sisyphus — typically fanned out 1-3 in parallel alongside explore agents whenever an unfamiliar library, API, or framework is involved.

Workflow

search (llm + ddg-search)         identify 3-5 authoritative sources
   ↓
synthesize (llm + fetch_url_via_curl)   fetch, extract, cite, synthesize
   ↓
end_success / end_failure         LIBRARIAN_COMPLETE / LIBRARIAN_FAILED

Iteration 1 (this) is the happy-path MVP: single search pass, single synthesis pass, no quality-check loop. Future iterations may add:

  • quality_check LLM node + back-edge to search with a refined query if the initial findings are thin or off-topic
  • gh CLI / GitHub MCP integration for first-class OSS-example retrieval
  • Reranking the search results before synthesis
  • Cache of recently-fetched URLs across invocations

Trigger phrases (when sisyphus should spawn it)

  • "How do I use [library]?"
  • "What's the best practice for [framework feature]?"
  • "Why does [external dependency] behave this way?"
  • "Find examples of [library] usage"
  • Any unfamiliar npm/pip/cargo/crate package surfaced by the user

Source priority

  1. Official documentation (docs.X.org, readthedocs.io, MDN, vendor docs)
  2. Production OSS examples (1000+ stars on GitHub)
  3. Specifications (RFCs, W3C, ECMA, IEEE)
  4. Credible secondary references — only when 1-3 are sparse

Explicitly excluded: random blog posts, marketing pages, stale tutorials, "what is X" beginner articles (unless that is literally the user's question).

Outcomes

  • LIBRARIAN_COMPLETE — found and synthesized authoritative sources. Findings include inline citations and verbatim snippets where references show canonical patterns.
  • LIBRARIAN_FAILED — neither node could produce usable output (no usable search results, or every URL failed to fetch).

Pro-Tip: Override search/fetch tooling

The MVP uses ddg-search for search and fetch_url_via_curl for retrieval. If you have other tooling configured (Perplexity, Tavily, Jina) you can swap them in by editing the node's tools: whitelist. Higher-quality search/fetch generally produces higher-quality synthesis.