Skip to main content
Glama
IBazylchuk

Paparats: Local Semantic Code Search

Search Documentation

search_docs
Read-only

Search indexed markdown docs with hybrid semantic and keyword matching to get the best-matching excerpts plus titles and source links. Use for runbooks, RFCs, and onboarding prose, not code.

Instructions

Hybrid (dense semantic + BM25 keyword) search over indexed markdown documentation, fused with RRF. Returns EXCERPTS, not whole documents: each hit is the best-matching passage plus its neighbouring sections, carrying the document title, heading breadcrumb, project, file, and source link when available. When a hit covers only part of its document an Excerpt: line says which sections you got and how many exist — read the named file directly when you need the rest, because the passage may not be the document's full answer. The top hit is usually right but not always; scan the alternatives before concluding. Use for questions answered by prose docs (runbooks, RFCs, onboarding, business docs), not code. For code use search_code. Optional audience restricts results to visibility labels (e.g. ["internal"], ["client","public"]); omit to search every audience the endpoint is allowed to see. Some deployments enforce an audience ceiling — there, audience can only narrow within it, never widen past it. Results are filtered by a semantic-similarity floor, so a question the corpus does not cover returns nothing rather than the nearest unrelated page; treat an empty result as "not documented". Two floors apply: min_score (default 0.45) for long-form prose, and min_score_code (default 0.6) for markdown that ships inside code repositories (README, CLAUDE.md, design notes) — those are written as overviews and score deceptively well against questions they do not answer, so they are held to a stricter bar. A Last updated ... ago line marks a document untouched for over a year: docs checked in beside code go stale quietly, so prefer a recent source when they disagree, and verify against the code before relying on it. Absence of that line means recent OR unknown age, not verified-current. The reported score is a fusion rank, not a similarity — use it to order hits, not to judge how good a match is.

Input Schema

NameRequiredDescriptionDefault
groupNoSpecific group, or omit to search all known groups.
limitNoMax results. Default 8.
queryYesNatural-language documentation query.
projectNoRestrict to a single project (directory basename), or omit for all.
audienceNoRestrict to these visibility labels (e.g. ["internal"], ["client","public"]). Omit to search every audience this endpoint is allowed to see. Un-labelled docs count as "internal". If the server enforces an audience ceiling, this can only narrow within it, never widen past it.
min_scoreNoRelevance floor as a semantic cosine (default 0.45). Hits below it are dropped, so a question the docs do not cover returns nothing instead of the closest unrelated page. Raise toward 0.6 to demand near-exact matches; pass 0 to disable. Applies to long-form prose docs; markdown that ships inside code repositories uses min_score_code instead.
min_score_codeNoRelevance floor for markdown that lives in code repositories (README, CLAUDE.md, design notes), default 0.6. Higher than min_score because such files are written as overviews and score deceptively well against questions they do not answer. Pass 0 to disable for this kind only.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and openWorldHint annotations, the description explains that results are excerpts rather than whole documents, how excerpt boundaries work, that scoring is a fusion rank not a similarity, and that semantic floors can produce empty results. It also discloses audience-ceiling behavior, stale-document indicators, and when to verify against code.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the key purpose, return shape, and sibling alternative, and nearly every sentence carries useful caveats. It is dense and long for a single paragraph, but the length is largely justified by the complexity of the search behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex search tool with no output schema, the description covers return format, excerpt limitations, audience filtering, relevance floors, score interpretation, stale-document handling, and empty-result meaning. An agent has enough information to invoke and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already defines all seven parameters. The description still adds useful operational context for audience restrictions and the two relevance floors, especially why markdown in code repositories uses a stricter threshold, though much of this overlaps the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: hybrid dense semantic plus BM25 keyword search over indexed markdown documentation. It explicitly distinguishes the tool from search_code, making sibling selection clear without needing to inspect schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says exactly when to use this tool for prose documentation and when to use search_code for code. It also gives operational guidance: scan alternatives before concluding, treat empty results as undocumented, and read the named file when an excerpt is partial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.