Context
chunk_tier is computed for every indexed symbol in server/indexer/pipeline.py ("method" if the symbol has a parent_name, "class" otherwise) and is registered as a Qdrant keyword payload index in server/store/qdrant.py. It's documented in the README/docs as "usable as a filter", but no code path currently applies one.
Problem
None of the MCP tools in server/tools/search.py (search_code, find_symbol, find_usages, get_code_context) expose a chunk_tier parameter, and QdrantStore.search() / QdrantStore.find_by_name() only build filters on service (and symbol_type/symbol_name for find_by_name). So the index exists but is dead weight — clients can't actually scope a query to just classes or just methods.
Proposal
- Add an optional
chunk_tier: str | None ("method" / "class") parameter to search_code (and possibly find_symbol), threaded through to QdrantStore.search() as an additional FieldCondition in the query filter.
- Update README/docs examples to show the new filter in use.
Context
chunk_tieris computed for every indexed symbol inserver/indexer/pipeline.py("method"if the symbol has aparent_name,"class"otherwise) and is registered as a Qdrant keyword payload index inserver/store/qdrant.py. It's documented in the README/docs as "usable as a filter", but no code path currently applies one.Problem
None of the MCP tools in
server/tools/search.py(search_code,find_symbol,find_usages,get_code_context) expose achunk_tierparameter, andQdrantStore.search()/QdrantStore.find_by_name()only build filters onservice(andsymbol_type/symbol_nameforfind_by_name). So the index exists but is dead weight — clients can't actually scope a query to just classes or just methods.Proposal
chunk_tier: str | None("method"/"class") parameter tosearch_code(and possiblyfind_symbol), threaded through toQdrantStore.search()as an additionalFieldConditionin the query filter.