ask_channel
Retrieve cited, reasoned answers to natural-language questions about a single channel's content. Ideal for understanding decisions, discussions, and summaries from team chat.
Instructions
Answer a natural-language QUESTION about one channel with synthesized, cited reasoning. The flagship retrieval tool — call it when the user asks anything that needs an ANSWER rather than raw rows.
When to use: any question about a channel's content where you want a composed answer with citations and reasoning across multiple messages ("what did we decide about X", "why did the project slip").
When NOT to use: exact keyword/semantic lookup of individual facts (use search_channel_facts); cross-channel recall when you don't know which channel holds the answer (use search_memory); a deterministic substring scan (use find_facts). Those are faster and return raw rows, not prose.
Prerequisites: a channel_id from list_channels.
Returns (instant for 'quick', long-running up to a 90s hard cap for
'deep'/'summarize'): a dict
{answer: str, citations: [{fact_id, text, permalink, author, ts}], follow_ups: [str], metadata: {mode, ...}}. Read-only — no side effects,
triggers no jobs.
Error modes (all returned as {error: ...} dicts, never exceptions):
'authentication_missing' (no principal); 'invalid_parameter' (empty/over-
4000-char question, or mode not in quick/deep/summarize);
'channel_access_denied' (token lacks access to channel_id);
'answer_timeout' (exceeded the 90s cap — retry with mode='quick');
'adk_error' (internal pipeline failure).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Channel id to query. Get it from list_channels (e.g. 'ch-eng'). Required. | |
| question | Yes | Natural-language question, 1-4000 chars (e.g. 'What database did we pick and why?'). Longer questions return error 'invalid_parameter'. Required. | |
| mode | No | Retrieval depth. One of: 'quick' (BM25 only, no reasoning, ~3s), 'deep' (full pipeline with graph + multi-hop reasoning, ~20-60s), 'summarize' (structured summary, ~10-30s). Default 'deep'. | deep |
| session_id | No | Optional session id for multi-turn continuity (e.g. 'sess-abc123' from start_new_session). Omit for a per-principal default session. Default null. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||