Sibyl
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GEMINI_API_KEY | No | API key for Gemini LLM provider | |
| OPENAI_API_KEY | No | API key for OpenAI LLM provider | |
| ZHIPUAI_API_KEY | No | API key for GLM (ZhipuAI) LLM provider | |
| DEEPSEEK_API_KEY | No | API key for DeepSeek LLM provider | |
| ANTHROPIC_API_KEY | No | API key for Anthropic LLM provider |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| gather_sourcesA | Keyless web retrieval: search + scrape + dedup, returning the top FULL-TEXT sources for a query WITHOUT writing an answer — so YOU (the calling model) read the evidence and reason over it yourself. Use this to research a question: call it several times with different focused sub-queries, read the numbered [Source N] blocks it returns, cross-reference them, then write the answer yourself with citations. If the sources don't contain the answer, gather more or say you don't know — do not guess. No API key required. Args: query: One focused search query (issue several calls for a multi-part question) max_sources: How many sources to return (default 10; bounded to 1-20) chars_per_source: Max characters of text per source (default 7000; bounded to 500-10000) ranker: lexical (default), flashrank (optional extra), or none (retrieval order) render_thin_pages: Send thin-page URLs to Jina Reader (default false) |
| gather_bundleA | Return a structured, keyless SourceBundle without synthesizing an answer. This is the programmatic form of gather_sources, intended for agents and pipelines that need stable evidence identifiers and retrieval provenance. Passage/source relevance defaults to the dependency-free lexical_v1 ranker. FlashRank is optional and falls back to lexical_v1 with an explicit diagnostic. Source quality remains null until a separate quality evaluator computes it. Follow diagnostics.recommended_action; only "synthesize" permits synthesis. Args: query: One focused search query max_sources: How many sources to return (default 10; bounded to 1-20) chars_per_source: Max characters per evidence passage (default 7000; bounded to 500-10000) ranker: lexical (default), flashrank (optional extra), or none (retrieval order) render_thin_pages: Send thin-page URLs to Jina Reader (default false) |
| gather_evidence | Run a bounded evidence loop while leaving planning and synthesis to the host. Start with question only. For a complex question, use the returned loop_id and call this tool again with one atomic query. Continue according to next_action. When the returned steps cover the question, call with finish=true and list the synthesis-ready E-step IDs that support the answer. Only status="ready" permits synthesis. Loops expire after ten minutes and allow at most four retrieval calls. Args: question: Original research question; use only when starting a loop loop_id: Existing loop identifier for a continuation or finish call query: One new atomic retrieval query for an existing loop finish: Validate selected steps and close the loop for synthesis supporting_step_ids: Synthesis-ready step IDs used to finish the loop max_steps: Retrieval budget for a new loop (default 3; bounded to 1-4) max_sources: Sources per retrieval call (default 10; bounded to 1-20) chars_per_source: Characters per evidence passage (default 7000) ranker: lexical (default), flashrank, or none render_thin_pages: Send thin-page URLs to Jina Reader |
| quick_searchA | Quick web search without deep analysis. Returns raw search results. Args: query: What to search for max_results: Maximum number of results (default 5) |
| read_urlA | Read and extract clean text content from a URL. Fetches the page, strips navigation/scripts/ads, and returns the main article or body text. Useful for reading a specific source in detail before or after running research(). Returns the page title, URL, and up to 8000 characters of clean text. Handles retries, anti-bot protection, and Google Cache fallback. Args: url: The full URL to read (e.g. "https://www.reuters.com/article/...") |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 4 tools
gather_sources and gather_bundle are nearly identical in purpose and parameters, with only subtle differences in output structure. This creates significant ambiguity for an agent trying to select the appropriate tool. quick_search and read_url are more distinct but the overlap between the gather tools is problematic.
The names mix patterns: 'gather_' prefix for two tools, 'quick_' for one, and 'read_' for another. While each name is somewhat descriptive, the lack of a consistent verb_noun pattern across the set reduces predictability.
With 4 tools, the set is small but still covers the core needs of web research (search, deep retrieval, quick results, and URL reading). It could be streamlined to 3 by merging the gather tools, but the count is not excessive.
The server covers the essential operations for web research: searching, retrieving full-text sources, quick scanning, and reading specific URLs. Minor gaps like missing history or caching are acceptable for the scope.