Skip to main content
Glama

quipu_search

Read-only

Search a governed knowledge graph using semantic, keyword, or hybrid ranking to find relevant entities and context for agent queries.

Instructions

Semantic vector search (default), opt-in SQLite FTS5 keyword search, or configurable lexical/vector hybrid fusion. Keyword mode requires query text and an enabled, backfilled index; it needs no embedding provider. Ranked REST results are diagnostic candidates; native MCP renders admitted context only. Agent context uses context_results when insufficient_context is false under quipu-context/v1.

Input Schema

NameRequiredDescriptionDefault
viaNoTraverse only these predicate IRIs (replaces the default exclusions).
modeNoKeyword: literal terms and quoted phrases ranked by BM25 over labels, alt labels, descriptions/full bodies, literal attributes, type names and IRI local tokens. Requires [quipu.search] keyword=true.semantic
alphaNoSemantic weight. Hybrid alpha=1 preserves semantic results exactly, alpha=0 returns keyword results.
decayNoPer-hop multiplier in (0, 1] for decay mode (default 0.5).
graphNoSearch one registered graph IRI, or all. Unknown IRIs are refused. Omitted scope uses the stored default (ALL for new stores, ROOT for existing stores), unless configuration overrides it.
limitNoMaximum results (default: 10)
queryNoNatural language search query (auto-embedded when EmbeddingProvider is attached)
rrf_kNoPositive RRF constant; server default 60.
anchorNoRoot the search on ONE entity (IRI, CURIE or exact label; ambiguity is refused, never guessed) and rank by hop distance from it. Requires [quipu.search] anchored = true on the server.
fusionNoMin-max score blend or weighted reciprocal rank fusion.
graphsNoSearch the union of these registered graph IRIs. Mutually exclusive with graph/all_graphs.
explainNoReturn score components, matched lexical fields, applied filters and highlighted snippets; anchored search also returns a shortest path.
filtersNoEquivalent strict AST: {term:string}, {not:expr}, {and:[expr,expr]}, {or:[expr,expr]}. Mutually exclusive with structured_query.
rankingNoContent ranking demotes repository artifacts lacking explanatory content; semantic returns raw cosine order.semantic
verboseNoReturn expanded full IRIs instead of default CURIE-compacted values.
max_hopsNoAnchor neighbourhood radius (default 3, server cap 4).
valid_atNoPoint-in-time for temporal filtering (ISO-8601)
directionNoEdge direction to traverse (default both).
embeddingNoPre-computed query embedding vector (f32 array). Takes precedence over query.
group_idsNoOptional: best-effort filter to entities from these provenance groups (episode-scoped label, NOT an isolation boundary; `/knot` facts are ungrouped and dropped from a group scope)
all_graphsNoSearch ROOT and all registered named graphs, excluding metadata and configured search.exclude_graphs. New stores default to ALL; existing stores retain ROOT until explicitly broadened. Configuration overrides the stored default.
anchor_modeNodecay (default): score x decay^hops; sort: hops first; filter: only reachable results.
entity_typeNoOptional: restrict to entities of this rdf:type IRI
infer_typesNoKeyword mode only: type scope includes subclass inference when true; defaults false (asserted full-IRI types only). Type tokens are always asserted; response marks both choices.
structured_queryNoExplicit boolean field/phrase/prefix candidate expression. Requires structured=true and SQLite. Candidate selection precedes ranking; default off.
context_similarity_floorNoRaw cosine floor for context admission only; ranking is unchanged. Exact subject/identifier and term coverage are also required.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.17.0

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/non-destructive, so the bar is lower; the description still adds real behavioral context: keyword mode's prerequisite server config and backfilled index, the absence of an embedding-provider dependency, and the admission contract ('REST results are diagnostic candidates; native MCP renders admitted context only'). Gaps remain around failure/refusal behavior and result/candidate shape, but this is more than annotation echo.

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

Conciseness3/5

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

Front-loaded correctly with the mode choice, and only four sentences, but the prose is dense with undeclared jargon ('context_results', 'insufficient_context', 'quipu-context/v1') that is never tied to a parameter or return field an agent can act on. The final two sentences cost attention without clear operational payoff.

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

Completeness3/5

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

For a 26-parameter, zero-required, no-output-schema tool, the description adequately frames mode selection and one hard prerequisite, and the schema covers the rest of the knobs. It does not explain the overall call workflow (query vs embedding vs anchor vs structured_query precedence) or the returned context payload, which matters given there is no output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already explains alpha, rrf_k, decay, anchor_mode, structured_query and the rest. The description adds one genuinely non-schema fact (keyword mode requires query text, even though query is not marked required in the schema), but otherwise does not enrich parameter meaning.

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

Purpose4/5

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

The opening sentence names a specific verb+resource (search) and enumerates the three retrieval modes (semantic default, FTS5 keyword, hybrid fusion), which is concrete and actionable. It never differentiates from the many search-ish siblings (quipu_search_query, quipu_hybrid_search, quipu_unified_search, quipu_search_nodes, quipu_search_facts), so an agent still cannot tell which search entry point to pick.

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

Usage Guidelines3/5

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

It gives mode-level guidance (semantic is the default; keyword is opt-in and needs an enabled, backfilled index and no embedding provider), which implies when each mode is viable. However, there is no explicit when-to-use/when-not guidance relative to alternative tools, and no statement of what to do if the keyword index is not backfilled.

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

Deploy Server

Other Tools