search_channel_facts
Search a known channel for specific facts using hybrid BM25+vector retrieval. Returns ranked, cited facts without synthesized reasoning.
Instructions
Find SPECIFIC facts in ONE channel by hybrid (BM25 + vector) search and return them as raw, ranked rows. Call it when you want the cited source facts themselves, not a composed answer.
When to use: targeted lookup of facts in a known channel ("find facts about the postgres migration"). Faster and more precise than ask_channel for retrieval-only tasks.
When NOT to use: you need a synthesized answer with reasoning (use ask_channel); you don't know which channel holds the facts (use search_memory, which fans this same search across every accessible channel); you want a deterministic substring match rather than ranked relevance (use find_facts).
Prerequisites: a channel_id from list_channels.
Returns (instant, read-only): {facts: [{text, author, timestamp, permalink, channel_id, confidence, topic_tags}, ...]}. No side effects.
Error modes (returned as dicts): 'authentication_missing' (no principal);
'channel_access_denied' (token lacks access to channel_id). On any other
internal failure it returns an empty {facts: []} rather than erroring.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Channel id to search. Get it from list_channels (e.g. 'ch-eng'). Required. | |
| query | Yes | Search query, keyword or natural phrase (e.g. 'postgres migration'). Matched with BM25+vector hybrid retrieval. Required. | |
| time_scope | No | Time window. 'any' = all facts (default), 'recent' = last 30 days only. | any |
| limit | No | Max facts to return, 1-50 (values outside the range are clamped). Default 10. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||