Summary Search¶
Coarse-to-fine retrieval funnel over framework summaries. Stage 1 ranks query against summary nodes; stage 2 (optional) drills into raw spans of top items. Each hit carries a
drill_node_idready to hand todrill_tree.
MCP name: summary_search
Category: summarization
Parameters¶
| Name | Type | Required | Description |
|---|---|---|---|
drill |
bool |
No | When true, run stage 2 over top candidates (default true). |
drill_per_item_top_k |
int |
No | How many raw-span hits per drilled item (default 5). |
drill_top_k |
int |
No | How many distinct items to drill (default 5). |
method |
str |
No | Search method: 'keyword', 'semantic', or 'keyword,semantic' (default). |
query |
str |
Yes | Natural-language query. |
scope |
str |
No | Restrict stage 1 to one summary namespace (e.g. 'conversation_session'). Omit to search all summary namespaces. Named scope to match context_search / agent_docs vocabulary. |
top_k |
int |
No | Stage-1 cap — how many summary nodes to consider (default 8). |
Details¶
Coarse-to-fine retrieval funnel over the IR summary index.
summary_search is equivalent to find(source="summary", drill=True) — both return the same funnel-shape dict. find is the universal verb; summary_search is the back-compat alias maintained indefinitely.
When to reach for this vs. other tools:
- Use
summary_searchwhen you have a topic and don't know which item — it ranks across the compressed layer (TLDRs + topic titles/summaries/keywords) and optionally drills the top items into their raw sources. - Use
drill_treewhen you already have a node id and want to walk its structure at a chosen depth (index/summary/full). Seedisclosure/drill_tree. - Use
context_searchwhen you want a general IR search across any source (conversation,chrome,task_note,docs,projects,summary) and DON'T need the funnel's drill stage.summary_searchbuilds oncontext_search's underlying engine and adds the per-namespace drill.
The handoff from summary_search to drill_tree is literal: every stage1_hits entry includes a drill_node_id field ({namespace}:{item_id} for root nodes, {namespace}:{item_id}#n{ordinal} for internal nodes) that drops straight into drill_tree(domain="summary", node_id=...). Same for candidate_items (item-root drill coordinate).