Skip to main content
Glama

OnMind-RAG

A complementary and independent project from OnMind-PUB: a lightweight knowledge base (light RAG) that exposes an MCP server so an agent (MCP client) can query the content of one or more sites.

It is not part of the init → index → build → publish workflow. It only reads the _index.json already generated by a site and, on demand, the markdown.

Idea

  1. On startup, the server loads docs/public/_index.json from each configured site.

  2. Normalizes in memory (stable IDs, clean tags, visibility, path to .md).

  3. Body cache: reads each .md once, stores bodyText (no frontmatter) and logs time/size to stderr.

  4. Search engine: Orama BM25 full-text by default; hybrid/vector modes opt-in with embeddings.

  5. Exposes compact MCP tools: summary → search (meta + body) → document reading.

No _catalog.json is written. If the site re-indexes externally, use the reload_catalog tool.

Related MCP server: Lexomni MCP

Requirements

  • Node.js ≥ 18 (or Bun with Node compatibility)

  • At least one site with docs/public/_index.json (e.g. sites/know from OnMind-PUB)

Setup

cd rag
cp .env.example .env   # optional; you can also export vars
bun install            # or: npm install

Variables (see .env.example):

Variable

Meaning

RAG_SITES

Paths to site roots, comma-separated (required)

RAG_SITE_NAMES

Optional labels (same order)

RAG_VISIBILITY

public (default) | protected | all

RAG_MAX_BODY

Max chars returned by read_document (default 50000; increase for very long docs)

RAG_CACHE_BODY

1 (default) caches body at startup → Orama indexes body → full-text on markdown. 0 = metadata only (title/desc/tags) → no body search; read_document falls back to disk.

RAG_SEARCH_MODE

fulltext (default, BM25) | hybrid | vector (last two require RAG_EMBEDDINGS=1)

RAG_EMBEDDINGS

1 enables local hash embeddings for hybrid/vector; 0 (default)

RAG_EMBED_DIMS

Vector dimensions (default 384)

RAG_SNAPSHOT

1 saves/loads Orama snapshot to disk; 0 (default)

RAG_SNAPSHOT_PATH

Snapshot path (default ./data/orama-snapshot.json)

Example:

export RAG_SITES=../sites/know
# or multiple:
# export RAG_SITES=../sites/know,../sites/andrey

Smoke test (no MCP)

RAG_SITES=../sites/know bun run smoke

With embeddings + hybrid:

RAG_SITES=../sites/know RAG_EMBEDDINGS=1 RAG_SEARCH_MODE=hybrid bun run smoke

With snapshot (2nd load ~100 ms):

RAG_SITES=../sites/know RAG_SNAPSHOT=1 bun run smoke   # first: saved
RAG_SITES=../sites/know RAG_SNAPSHOT=1 bun run smoke   # second: loaded

Start MCP server (stdio)

RAG_SITES=../sites/know bun run mcp

MCP Client (Cursor / Claude Desktop / Grok / Jan)

{
  "mcpServers": {
    "onmind-rag": {
      "command": "bun",
      "args": ["/absolute/path/to/pub/rag/src/server.js"],
      "env": {
        "RAG_SITES": "/absolute/path/to/pub/sites/know",
        "RAG_VISIBILITY": "public",
        "RAG_SEARCH_MODE": "fulltext",
        "RAG_EMBEDDINGS": "0",
        "RAG_SNAPSHOT": "0"
      }
    }
  }
}

You can also use node instead of bun

{
  "command": "node",
  "args": ["/absolute/path/to/pub/rag/src/server.js"],
  "env": { "RAG_SITES": "/absolute/path/to/pub/sites/know" }
}

Tools

Tool

Purpose

list_sites

Loaded sites, body-cache stats, search-engine status (Orama, embeddings, snapshot)

catalog_summary

Stats by category / language / tags (orientation)

search_content

Full-text Orama (BM25) by default on title/description/tags/body. mode: fulltext|hybrid|vector optional. Returns cards with match.score and match.snippet.

get_entry

One record by id (site:url)

read_document

Markdown body (preferably from cache; truncatable)

list_series

Series ordered by filename within a category

reload_catalog

Re-reads _index.json + body cache + rebuilds index

Typical agent flow:

catalog_summary → search_content → get_entry / list_series → read_document

Relation to OnMind-PUB

OnMind-PUB

onmind-rag

Generates _index.json and the static site

Only consumes it

Publish workflow

Outside that flow

Lives in monorepo for convenience

Movable: just point RAG_SITES to any folder with docs/public/_index.json

Body cache (startup)

In stderr you'll see something like:

[onmind-rag] index: 289 entries from 1 site(s) in 3ms at ...
[onmind-rag] body cache: 289 docs, 3533.3 KiB in 59ms (missing path=0, read errors=0)
[onmind-rag] search engine: orama · mode=fulltext · embeddings=off · 289 docs · 450ms

With RAG_CACHE_BODY=1 (default): Orama indexes the body field → search_content performs full-text BM25 over the entire markdown. read_document answers from memory (fromCache: true).

With RAG_CACHE_BODY=0: Orama only indexes metadata (title, description, tags) → search_content does not find matches in the document body. read_document falls back to disk reads.

Disable only if RAM is very tight or corpus > 50 MB and you accept metadata-only search.

Search engine (Orama)

Mode

What it does

fulltext (default)

BM25 with stemming, typo tolerance, field boosting. Fast, no external deps.

hybrid

BM25 + vector (cosine) — needs RAG_EMBEDDINGS=1

vector

Vector similarity only — needs RAG_EMBEDDINGS=1

Embeddings (opt-in)

RAG_EMBEDDINGS=1 uses local feature-hashing (no TensorFlow, no API keys) — a portable baseline to exercise the vector/hybrid path. Not a SOTA semantic model. For real quality, replace embed.js with a provider (OpenAI, Xenova/transformers.js, etc.) keeping the embedText(text, { dims }) interface.

Snapshot (opt-in)

RAG_SNAPSHOT=1 serializes the Orama index to disk (data/orama-snapshot.json + .meta.json). On subsequent starts, if the corpus fingerprint (ids, titles, body length, hide, embeddings flag/dims) matches, it loads the snapshot in ~100 ms instead of re-indexing (~450 ms).

Limits (by design)

  • Lexical/BM25 retrieval + hash vectors (no SOTA embeddings unless you plug them in).

  • No knowledge graph / neighbors yet (next step: markdown links).

  • Designed as a useful, portable base — not a managed vector engine.

Why Spanish tokenizer?

The corpus is predominantly Spanish (~80%). Orama's default English tokenizer treats short technical codes like "XDB", "IAM", "UCDM" as stop-words/noise. Setting language: 'spanish' in the tokenizer indexes them correctly.


Based on onmind-rag v0.2.0 — MCP server for knowledge retrieval with Orama BM25 + opt-in hybrid/vector + snapshot

Available Tools

7 tools
catalog_summaryA

Resumen de la base de conocimiento OnMind. Úsalo ANTES de buscar para orientarte: cuenta docs por sitio, categoría, idioma y tags top. Te dice qué hay disponible sin hacer búsqueda.

ParametersJSON Schema
NameRequiredDescriptionDefault
visibilityNopublic (default) | protected | all

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It explains that the tool counts documents by site, category, language, and top tags, and that it does not perform a search. However, it does not mention any required permissions, rate limits, or whether it returns aggregated counts or detailed lists. This is adequate but not fully transparent.

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

Conciseness5/5

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

The description is two sentences long, front-loading the purpose and then immediately providing usage guidance. Every word adds value, and there is no redundancy. It is appropriately concise for a simple tool.

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

Completeness4/5

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

Given the tool's simplicity (one optional parameter, no output schema), the description provides a good overview of what the tool returns: counts by site, category, language, and top tags. It covers the essential information an AI agent needs to understand the tool's output and use it correctly, though it could mention whether the counts are absolute or relative.

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?

The input schema has one optional parameter 'visibility' with clear enum values and a description in the schema. The tool description does not mention the parameter, but the schema coverage is 100%, so the schema already provides full meaning. The description adds little beyond the schema, so a baseline score of 3 is appropriate.

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 clearly states the tool provides a summary of the OnMind knowledge base, counting documents by site, category, language, and top tags. It distinguishes itself from sibling tools like search_content (which performs searches) and get_entry (which retrieves specific entries) by emphasizing that it is an orientation tool used before searching.

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

Usage Guidelines4/5

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

The description explicitly instructs to use it BEFORE searching to orient oneself, indicating the primary use case. It also says what it does without searching, implying it is not for detailed retrieval. However, it does not explicitly mention when not to use it or list alternative tools beyond this implicit contrast.

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

get_entryA

Obtiene la ficha completa de un documento OnMind por ID estable (site:url). Úsalo tras search_content para ver metadatos antes de leer el cuerpo.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEntry id from search results, e.g. know:devops/es/Keycloak

TDQS

A4.4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It implies a read operation ('gets') and adds context about stable ID format, but does not explicitly state safety, permissions, or side effects. Lacks some behavioral detail.

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

Conciseness5/5

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

Two sentences only: first states purpose, second gives usage guideline. Concise, front-loaded, no wasted words.

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

Completeness4/5

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

Given a simple single-parameter tool with no output schema, the description is fairly complete. It explains what it does, when to use it, and the ID format. Could be slightly more specific about what metadata is returned, but the second sentence clarifies it returns metadata.

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% with a clear description and example for the 'id' parameter. The tool description reinforces the format ('ID estable (site:url)') and adds context about stability, adding value beyond the schema.

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?

Clearly states the tool gets the complete record ('ficha completa') of an OnMind document by stable ID. Distinguishes from siblings by specifying usage after search_content and before read_document.

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?

Explicitly advises 'Úsalo tras search_content para ver metadatos antes de leer el cuerpo' (use it after search_content to view metadata before reading the body), providing a clear workflow and when to use this tool vs alternatives like read_document.

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

list_seriesB

Lista documentos de una serie/categoría OnMind ordenados por filename (libros, sueños, capítulos). Útil para leer en secuencia: abridgetothemiracles, thoseaccordsyoudontremember, dreams, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNo
categoryYesCategory name, e.g. dreams, abridgetothemiracles, devops
languageNo
visibilityNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only mentions sorting by filename and examples, lacking details on authorization, rate limits, or other behavioral traits beyond the basic listing.

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

Conciseness5/5

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

The description is two sentences with no redundancy, efficiently conveying the tool's purpose and typical usage.

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

Completeness2/5

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

With 4 parameters and no output schema or annotations, the description only explains the category and ordering. It omits details on how site, language, and visibility parameters behave, leaving gaps for correct usage.

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 coverage is only 25% (only category has description). The description adds examples of valid category values, but does not explain site, language, or visibility parameters, nor their effect on results.

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 clearly states it lists documents from a series/category, ordered by filename, with specific examples like dreams and abridgetothemiracles. It distinguishes from sibling tools like search_content or read_document by focusing on sequential reading.

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?

The description implies a use case (reading in sequence) and provides examples, but does not explicitly state when to avoid using this tool or suggest alternatives among siblings.

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

list_sitesB

List configured knowledge sites, body-cache stats, and search-engine status (Orama, embeddings, snapshot).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of disclosing behavior. It states what is listed (sites, cache stats, search-engine status), implying a read-only operation, but lacks details on performance, authentication, or side effects. The description is moderately transparent but incomplete.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys the core function. It is front-loaded with 'list' and includes key details without wasted words.

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?

Given the simplicity of the tool (no parameters, no output schema), the description adequately covers what is listed. However, it does not describe the output format or structure, which would help an agent interpret the result. This is a minor gap.

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?

The tool has zero parameters, and the schema coverage is 100%, so the baseline is 4. The description does not need to add parameter information, and it correctly omits any, aligning with the schema.

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 description clearly states the tool lists configured knowledge sites, body-cache stats, and search-engine status, specifying what is returned. However, it does not explicitly differentiate from sibling tools like 'catalog_summary' or 'search_content', leaving some ambiguity about what distinguishes this tool from others.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as when to list sites versus searching content or getting a catalog summary. The description does not mention prerequisites or limitations, leaving the agent without context for appropriate use.

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

read_documentA

Lee el cuerpo markdown COMPLETO de un documento OnMind (sin frontmatter). Úsalo tras search_content/get_entry cuando necesites el contenido técnico completo. El cuerpo puede truncarse (máx 12k chars por defecto).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEntry id, e.g. know:devops/es/Keycloak
maxBodyNoMax characters of body to return

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description bears full burden. It discloses truncation at 12k chars default and that frontmatter is removed. It does not mention error handling, rate limits, or auth requirements, but for a read tool this is acceptable.

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

Conciseness5/5

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

Two sentences: first states purpose, second provides usage context and a key behavioral note. Every sentence is essential, no fluff.

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

Completeness4/5

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

Covers main points: what it returns (body without frontmatter), truncation, and usage context. No output schema but return type is clear. Could briefly mention error handling or response format but not essential for this tool.

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% with descriptions for both parameters. The description adds value by specifying the default truncation limit (12k chars) when maxBody is not set, which is not in the schema.

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 it reads the full markdown body of an OnMind document without frontmatter, and distinguishes itself from siblings like search_content and get_entry by noting it is used after those for full technical content.

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

Usage Guidelines4/5

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

It explicitly says to use it after search_content/get_entry when needing full technical content, and mentions truncation behavior. However, it does not provide when-not-to-use cases or list alternatives beyond the two named.

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

reload_catalogA

Recarga el índice OnMind desde disco (_index.json + markdown) y reconstruye el índice Orama. Úsalo tras cambios en la fuente (re-index externo). Respeta RAG_SNAPSHOT.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, but description discloses that the tool reloads from disk and rebuilds the index, and respects RAG_SNAPSHOT. Could be more explicit about potential side effects (e.g., overwrites previous index).

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

Conciseness5/5

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

Two sentences in Spanish, efficient, front-loaded with action. No wasted words.

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?

With no parameters or output schema, the description fully covers what the tool does, when to use it, and a key behavior (RAG_SNAPSHOT). Complete for this simple operation.

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?

No parameters exist, so description adds no parameter info. Baseline 4 for zero-parameter tools is appropriate.

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 clearly states the action (reload index from disk, rebuild Orama index) and specifies the resources (_index.json + markdown). It is distinct from sibling tools like list_sites and search_content.

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

Usage Guidelines4/5

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

Explicitly indicates when to use: after external index changes (re-index externo). Does not state when not to use or provide alternatives, but context is clear.

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

search_contentA

BÚSQUEDA PRIMARIA en la base de conocimiento OnMind. Úsala PRIMERA para cualquier pregunta sobre: OnMind-PUB, OnMind-XDB, OnMind-CMS, OnMind-WDB, OnMind-ARK, OnMind-EPI, OnMind-DAI, Método OnMind, ABCode, CloudOps, DevOps, código, arquitectura, productos OnMind. Busca en título, descripción, tags y cuerpo completo (BM25 Orama). Devuelve cards con score y snippet. NO uses búsqueda web hasta agotar esta herramienta.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text query (Orama full-text / hybrid)
modeNoOverride search mode for this call: fulltext | hybrid | vector (hybrid/vector need RAG_EMBEDDINGS=1)
siteNoLimit to one site name
tagsNoAll of these tags must match
limitNoMax results (default 20)
inBodyNoAlso search markdown body (default true)
offsetNoPagination offset
notableNoOnly notable entries when true
categoryNoCategory facet (e.g. devops, dreams)
languageNoLanguage code, e.g. es or en
visibilityNopublic (default) | protected | all

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It mentions the search algorithm (BM25 Orama) and return format (cards with score and snippet), but lacks details on auth, rate limits, or side effects. It is adequate but not rich.

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

Conciseness5/5

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

The description is concise with three sentences in Spanish, front-loaded with purpose. Every sentence adds value: primary usage, content scope, and search behavior.

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?

Given 11 parameters and no output schema, the description could provide more detail on result pagination or structure. It briefly mentions cards with score and snippet but omits default modes or ordering. Adequate but not fully complete.

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?

The schema has 100% parameter description coverage, so the description adds little beyond stating the search scope. It does not explain parameter interactions or syntax, meeting the baseline expectation.

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 clearly states the tool is for primary search in the OnMind knowledge base, listing specific topics (OnMind-PUB, etc.) and search fields (title, description, tags, full body). This distinguishes it from sibling tools like list_sites or get_entry.

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?

The description explicitly instructs to use this tool first for any OnMind question and not to resort to web search until this tool is exhausted. This provides clear when-to-use and when-not-to-use guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.2.0
    • First observedcatalog_summary
    • First observedget_entry
    • First observedlist_series
    • First observedlist_sites
    • First observedread_document
    • First observedreload_catalog
    • First observedsearch_content

TDQS

A4.1/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing sites, summarizing catalog, fetching entry details, reloading index, searching, reading full documents, and listing series. No two tools overlap in functionality, making selection unambiguous.

Naming Consistency4/5

Tool names mostly follow a verb_noun pattern (list_sites, get_entry, reload_catalog, search_content, read_document, list_series). The exception is catalog_summary, which is a noun phrase, but still descriptive and consistent in style.

Tool Count5/5

Seven tools is well-scoped for a RAG knowledge base system, covering all necessary operations: overview, search, retrieval of details, admin reload, and series browsing. No tool feels redundant or missing.

Completeness5/5

The tool set provides complete coverage for a knowledge retrieval workflow: overview (catalog_summary), search (search_content), entry details (get_entry), full content (read_document), and navigation (list_series, list_sites). No obvious gaps for the intended purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    A local MCP server that allows AI systems to search and retrieve information from a custom knowledge base generated from markdown files. It provides tools for natural language text search, category browsing, and specific content chunk retrieval.
    3
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    A CLI tool and MCP server that turns markdown documentation into a searchable, queryable knowledge base.
    134
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    A lightweight MCP server for semantic search over markdown knowledge bases, enabling AI coding agents to index, search, and answer questions from local markdown documents.
    MIT