Skip to main content
Glama
avaazquezz

Qdrant RAG Build

by avaazquezz

Qdrant RAG Build

通过对话构建完整 RAG 管道的 Qdrant MCP 服务器。

非官方、社区构建 —— 与 Qdrant 无关联,也不代表 Qdrant 官方立场。

官方 Qdrant MCP 服务器只暴露 2 个工具(qdrant-store、qdrant-find)。Qdrant RAG Build 则在 6 个命名空间中暴露了 33 个工具 —— 完全通过 MCP 对话管理一个生产级 RAG 系统 —— 外加一个 对话式设置向导,让用户在一次次对话中即可从零开始,得到一个可用且配置良好的 RAG 集合,无需编写任何代码。

电梯推销语:"将你的 AI 接入 Qdrant,让生产级 RAG 在一段对话中运行起来。" 而不是又一个 Qdrant 包装 —— RAG-in-a-box via MCP。

包名:qdrant-rag-build-mcp · 许可证:Apache-2.0 · 状态:规划已完成,开发尚未开始。


目录

  1. 愿景与市场空白

  2. 已锁定的决策

  3. 架构

  4. 工具目录

  5. 对话式向导

  6. 摄取管道

  7. 精英检索

  8. 质量与评估

  9. GitHub 权威

  10. 开发阶段

  11. 继承的经验教训与风险

  12. 名称、许可证与第一步


Related MCP server: RAG Knowledge Base MCP Server

1. 愿景与市场空白

论点: 如今,通过 MCP 把 LLM 连接到 Qdrant,你得到的只是一个玩具级的语义记忆。没有集合管理,没有文件摄取,没有混合搜索,没有重排,没有引用,没有引导式配置。所有这些能力本身已存在于量身定制的企业级 RAG 系统中 —— 但还没有人把它打包成一个只需一句命令即可安装的 MCP 服务器。

能力

官方 Qdrant MCP

Qdrant RAG Build

工具集

2 个(qdrant-store、qdrant-find)

33 个,分布于 6 个命名空间

集合管理

仅隐式自动创建

支持预置、别名、快照、payload 索引创建

文件摄取

不支持 —— 仅支持原始文本

PDF、DOCX、XLSX、PPTX、MD、HTML、CSV、TXT、URL、目录

分块

语义

按格式、结构化分块,并提供可配置的预置方案

检索

简单稠密检索

稠密 + 稀疏混合检索,含 RRF 融合、过滤器、重排、去重、多查询

检索引用

不支持

稳定的引用契约(文档、页码/章节、分数)

引导式配置

不支持 —— 仅环境变量

对话式向导自动配置一切

客户端

stdio(仅本地或 Codio)

stdio + 远程 HTTP —— CLAUDE Code、Claude Desktop、claude.ai(网页);ChatGPT 留到 v2

2. 已锁定的决策

范围。 完整的检索能力 + Qdrant 管理 + 高质量获取常见格式的文件内容(PDF、DOCX、Excel、PPTX、MD、HTML、CSV、网址)。干净、对 RAG 更友好的内容,是项目的签名特色。

目标客户端。 v1 是整个 Claude 全家桶:Claude Lark、Claude CODE、Claude Web Desktop(网页)。其中 Code 和 Desktop 走 stdio,本地运行,基本是一键安装(见 §3)。claude.ai 按照协议要求必须走远程 HTTP(浏览器无法拉起本地进程)—— 不过这只是量级较小的增加,并不是一种新的工作类别:官方 SDK 已经支持 streamable HTTP,而 v1 只需要一个 bearer token,不需要完整版 OAuth 2.1(见 §3),外加一份通公开 HTTPS 地址的部署指南。ChatGPT 不入 v1。 和 claude.ai 不同,ChatGPT 需要开启 Developer Mode(要接受一个明确披露风险的应用清单),并且只提供付费版,完全没有免费层级的门槛 —— 这和各种"把 Claude 放首位"的立场不一致,所以推迟到 v2 再说。

项目目标。 一个出色的开源工具:既是作品集的门面,也是 GitHub 权威引擎。文档质量、CI 质量、开发体验质量都不是可选项,就是产品本身。

**不做的事情(v1)。**不处理电子邮件、不. ,不做重 OCR、不做命名实体识别/实体提取、不在服务端生成 LLM 内容(客户端本身就是 LLM),也不做定制的 UI。

3. 架构

一个 Python 二进制文件,三个清晰的层次。MCP 服务器只有一个轻薄的壳;所有逻辑都放在一个与 MCP 无关的、可测试的内核当中(这也会为将来提供 CLI 或任意 SDK 而不必动任何东西)。

flowchart LR
    subgraph Clients
      CC[Claude Code / Desktop<br/>stdio]
      WEB[claude.ai<br/>HTTPS + bearer token]
    end
    subgraph QRB["Qdrant RAG Build"]
      T[Transport<br/>stdio · streamable HTTP]
      F[MCP facade<br/>33 tools · validation]
      CORE[RAG core<br/>ingestion · retrieval · wizard]
      EMB[Embeddings<br/>local fastembed · external APIs]
    end
    Q[(Qdrant<br/>local · cloud)]
    CC --> T
    WEB --> T
    T --> F --> CORE
    CORE --> EMB
    CORE --> Q

技术选型

| 领域 | 决策 | 原因 |

---------------------

-----------------------------------------------------------------------------------------------------------------------------------------------nan

语言

Python 3.12 + uv

RAG 生态成熟;团队在该领域角色;uvx qdrant-rag-build-mcp 一条命令全搞定

MCP 框架

官方 MCP SDK,MCPServer(mcp>=2.1.0)

同一套代码同时支持 stdio(Code、Desktop)和 streamable HTTP(claude.ai);由 MCP 项目维护。SDK 2.0.0(2026-07-28)把 FastMCP 改名/迁移为 MCPServer —— 本项目直接使用新命名,不存在历史遗留兼容需求(见 ADR 0001)

稠密向量模型

两个本地档位 via fastembed —— paraphrase-multilingual-MiniLM-L12-v2(快速,0.22 GB)和multilingual-e5-large(高质量,2.24 GB)—— 另外支持 OpenAI / Cohere / Ollama,通过配置开启

这两款模型 现在 就已被 fastembed 原生支持,零额外依赖,支持多语言。原始的备选项 bge-m3 目前并不能用:修它的 fastembed PR #602 从 2026 年 2 月一直没进展,被架构争论卡住,到 2026 年 8 月仍然没有 ETA。等它真正落地后可以再考虑。

稀疏向量

BM25 / miniCOIL(通过 fastembed)

不需要额外基础设施就能做混合检索;用 Qdrant Query API 原生地做融合

得分重排(rerank)

本地跨编码器模型(fastembed);Cohere Rerank 和 /v1/rerank(llama.cpp)作为额外可选

不能假设运行时"已经有什么重排模型" —— 这是在生产里付过学费的教训(§11)

解析:文件解析

PyMuPDF、python-docx、openpyxl、python-pptx、trafilatura

速度快,不需要系统级二进制,任何地方都能 pip 安装

配置

版本可管理的 YAML 配置文件(~/.qdrant-rag-build/profiles/*.yaml)

向导会把设置写进 profile;用户可以编辑、做版本管理,并与他们共享

发行方式

PyPI(uvx/uv)+ Claude Desktop 的 .mcpb 安装包 + Docker 镜像(与 claude.ai 部署路径) + docker-compose 本地跑 Qdrant `

真正的三条上线路径 —— claude mcp add 给 Code、.mcpb 一键装给 Desktop、tunnel 或常开主机给 claude.ai ——外加一个 compose 文件方便本地跑 Qdrant 本身

GXPID(为什么向导是状态机,而不是 MCP elicitation)。 MCP 客户端对"引导式需求获取(elicitation)"的支持参差不齐,哪怕在 Claude 家族内部、不同 SDK 版本之间也是如此。一个纯粹由普通工具驱动的状态机,可以在所有环境上行为一致,不要求特定客户端配合,也不会在前一个客户端上换个 v2 的新客户端需要通过不同的 elicit 才能兼容 —— 和传输协议无关,所以 v1 就锁死这个方案。

v1 鉴权方案。 完整的 MCP 版 OAuth 2.1(授权服务器、PKCE、Dynamic Client Registration / Client ID Metadata Documents、issuer 校验、refresh token)是标准级别、需要好几周的工作量,v1 时间不充足 —— 而且 claude.ai 自己的连接器面板还把 OAuth 视为高级可选字段,不是必填。**v1 对 HTTP 路径采用"每个 profile 一个静态 bearer token"**的方案:token 由向导生成、存进 profile 的 YAML 文件,请求方式为 Authorization: Bearer <token>。至于 stdio(Code、Desktop)完全不需要鉴权 —— 它们只是本地进进程,不对网络开放网络。完整的 OAuth 2.1 作为 v2 的功能列入文档,等 ChatGPT 进入范围时再重新考虑(它的生态对 OAuth 的依赖更大)。

部署模型:一个人,一个服务器

MCP 并不是抽象地将服务器“连接到 AI”——它连接的是承载模型的客户端应用(Claude Desktop、Claude Code、claude.ai)。客户端才是维持连接存活、把可用工具列表交给模型、拦截模型的工具调用决策并针对服务器执行这些调用的一方。对最终用户来说,这看起来就是“我在和 Claude 对话,而它在管理我的 Qdrant”——这是一个合理的简化——但真正与服务器相连的是客户端,而不是模型。

v1 范围内没有共享/多租户服务器。每个用户运行自己的服务器,同一个本地进程同时服务全部三个 v1 客户端:

  • Claude Code / Claude Desktop: 服务器在用户自己的机器上以本地 stdio 子进程形式运行,由客户端根据其配置启动。真实文件系统访问,且限定在允许列表目录内——这是标准 MCP stdio 行为,不需要这个项目额外做任何事情。

  • claude.ai: 同一个本地进程,通过隧道(cloudflared)以 HTTPS 方式暴露到外部,或部署在一个运行相同 Docker 镜像的小型常驻主机上($5 VPS、Fly.io、Railway)——不是独立的云部署,也不是共享服务器。当运行在用户自己的隧道机器上时,文件系统访问与本地场景完全相同,只是到达它的传输方式不同。claude.ai 所有套餐均可用,包括 Free(一个 connector)。

  • **结果:**只要用户自己的服务器(如果是 claude.ai,还需要隧道)在运行,ingest_directory / ingest_file 在三个客户端上的行为就完全一致。任何地方都不需要文件上传机制——服务器在结构设计上始终拥有直接磁盘访问权限。

  • 一次性安装:

    • **Claude Desktop:**把一个 .mcpb 文件拖入 Settings → Extensions。完全不需要终端。

    • Claude Code:claude mcp add qdrant-rag-build -- uvx qdrant-rag-build-mcp。一行即可。

    • **claude.ai:**Settings → Connectors → Add,粘贴服务器的 HTTPS URL 和 bearer token。需要让服务器(如果使用笔记本电脑方案,还需要隧道)先运行起来——这和任何远程 MCP connector 一样,是协议上的必须要求,不是这个项目自己的选择。

    • 之后,向导会让配置 RAG 变成纯对话式流程——创建 collection、选择 embedding、摄入文档、执行搜索——在三个平台中任何一个上都无需更多技术步骤。

v2:ChatGPT(暂未有意支持)

ChatGPT 需要与 claude.ai 相同类型的远程 HTTP 形态,技术上新东西不多。它被排除在 v1 之外,是 ChatGPT 自身特有的摩擦:Developer Mode 必须显式启用(并提示关于运行第三方代码的警告),而自定义 connectors 均要求 付费套餐(Plus/Pro/Business/Enterprise/Edu)——完全没有 ChatGPT 免费通道,这与 claude.ai 免费层也附带 connectors 不同。这些都不符合“优先支持 Claude”的目标。v2 会加入 ChatGPT 专属 connector 指南,并且如果实际变得重要,会重新评估完整 OAuth 2.1(ChatGPT 的生态比 claude.ai 更倾向使用 OAuth 2.1)。

4. 工具目录

整个项目的核心。六个命名空间、可预测的名称、面向 LLM 写的描述(何时用某个工具,而不只是它能做什么)。每个破坏性工具都要求显式确认,同时还有一个全局 read-only 模式。

Collections

Tool

作用

collection_create

通过预设(dense、hybrid、multi-tenant)创建集合;默认正确配置命名向量和 sparse 向量

collection_list

列出全部集合

collection_info

集合详情:schema、大小、索引配置、优化状态

collection_delete

deletion 需两步确认(参数中必须给出准确的名称)

alias_set

用于零停机重新索引的别名(blue/green 模式)

payload_index_create

为向导或用户声明的过滤器创建 payload 索引

snapshot_create

备份集合

snapshot_restore

恢复集合

Ingestion

Tool

功能

ingest_text

直接传入文本和元数据——官方 MCP 的“语义记忆”用例,但实现得更正确

ingest_file

单个文件(PDF、DOCX、XLSX、PPTX、MD、HTML、CSV、TXT);返回摄入质量报告

ingest_directory

递归批量摄入,支持 glob 和排除规则;创建带可查询进度的任务

ingest_url

网页 → 正文清洗(trafilatura),去除所有噪声

job_status

任务进度:已完成/失败/跳过文件,并汇总比对计数器

document_list

按源文档维度查看文书

document_delete

删除/重新摄入单个文档,且不影响其他文档

Tool

功能描述

search

稠密语义搜索,支持可选的 payload 过滤

search_hybrid

dense + sparse + 原生 RRF 融合(Query API with prefetch)——推荐默认方案

search_rerank

对 top-N 的结果做 hybrid + cross-encoder 重排;极致精确度

search_multi_query

让客户端 LLM 生成若干改写并最终融合为一个排序

find_similar

获取与给定点相似的所有点对应的数据点

recommend

基于正例/反例的推荐(原生 Qdrant API)

RAG context

搜索

说明

get_context

核心工具:search + 去重 + MMR + token 配额 → 返回带有编号的上下文块,供客户端 LLM 直接作答

expand_context

获取结果的上一/下一个相邻 chunk(同一文档内),用于保持上下文连续

get_document

获取某条引用的完整源文档(或者其中的页面/段落范围)

Wizard

工具

作用

setup_start

启动设置会话;返回第一个问题、选项和建议

setup_answer

记录答案、校验答案(Qdrant 能连通吗?API key 可用吗?)、返回下一个问题

setup_apply

执行既定的配置方案:collection + indexes + profile + 冒烟测试;返回最终报告

profile_list

列出已保存的 profile

profile_use

启用某个已保存的 profile(demo、work、project X……)

Admin

工具

说明

health

Qdrant 连通性、embedding 模型已加载、版本、当前传输方式

stats

点数、文档数、磁盘占用、按来源/类型的分布

estimate

摄前估算:预期 chunk 数、存储占用、embedding API 成本(如适用)

config_get

当前活动的 profile 的有效配置(secrets 已隐藏)

5. 对话式向导

我们的差异化所在。服务器上有一个状态机:每次工具调用都会返回下一个问题、可选项以及一条有依据的推荐说明;客户端的 LLM 再把问题以自然语言转达给用户,并将其回答传回服务端。不需要提示语,也不依赖任何特定客户端——对话本身就是交互界面。

stateDiagram-v2
    direction LR
    [*] --> Discover
    Discover --> Validate : setup_answer
    Validate --> Discover : next question
    Validate --> Summary : all answered
    Summary --> Apply : user confirms
    Apply --> SmokeTest
    SmokeTest --> [*] : report + saved profile

问题脚本(固定顺序,每一步都给出推荐)

#

问题

它决定了什么

1

你要往 RAG 里放什么内容? 个人文档 / 团队知识库 / 技术文档 / 笔记)

拆分为块的预设和 payload schema

2

你的 Qdrant 在哪里?(本地 docker / Qdrant Cloud / 还没有)

连接与接入方式;如果选“还没有”,则给出单条 Docker 命令并重新校验

3

用本地 embeddings 还是 API?(local fast / local quality / OpenAI / Cohere / Ollama)

dense 模型供应方与速度/质量档位;如果适用,立即验证 API key

4

语料用哪种语言?

确认多语言模型的选择及 sparse analyzer

5

是否需要混合搜索?(推荐:是)

在 collection schema 中加入 sparse vector

6

是否需要重排?(local / API / no)

cross-encoder 及其时延成本,并诚实说明

7

你将来会用哪些过滤器?(日期、作者、类型、文件夹……)

默认创建好的 payload 索引

8

collection 名称和 profile 名称

命名及 profile 文件

向导成功的标准。 一个从未接触过 Qdrant 的用户,在不到 10 分钟的对话之后得到以下结果:一个 schema 整洁的 collection,可用的 embeddings,一个已保存的 profile,一条示例文档已完成摄入,以及一次能返回带引用结果的测试搜索。冒烟测试生成的最终报告就是证明——假如把那段对话录下来,就是 README 的封面。

6. 摄入管道

质量的特征是:干净、对 RAG 最优的内容,无论哪种格式,且每次摄入都附带质量报告。绝不只是把解析器吐出的内容“原样倒进去”。

格式

解析器

质量处理

PDF

PyMuPDF

修正阅读顺序;检测并移除重复页眉/页脚;表格转换为 Markdown;在接受页面之前先做文本质量预检(有效字符比例)

DOCX

python-docx

标题层级以元数据面包屑形式保留;结构化列表与表格

XLSX

openpyxl

按工作表处理;自动检测数据区域;行与其表头一起序列化("Product: X · Price: Y")——绝不会输出原始 CSV

PPTX

python-pptx

按幻灯片处理:标题 + 正文 + 演讲者备注

MD / HTML

native / trafilatura

按标题切块;网页只保留主内容(无导航、Cookie、页脚)

CSV / TXT

stdlib

CSV 按带表头的行输出;TXT 按段落切分,并带 token 窗口

横切规则

  • 结构优先,token 其次。 先按文档结构(章节、工作表、幻灯片)切分,只有当一个单元超出 token 预算时,才按 token 进一步细分(并有 overlap)。每个块都携带面包屑("手册 > 第3章 > 安装")。

  • 基于规范化内容哈希去重,在块级别执行,并结合每个文档的幂等性:重新摄取文件只会更新它,而不会产生重复。

  • 最小化的、带版本控制的引用契约。 引用载荷(document、page/section、date、source、date)是一个封闭字段集。内部流水线元数据绝不会进入 LLM 的上下文——这个项目曾两次因为这个问题付出代价:元数据膨胀导致真正的源被截断(§11)。

  • 始终报告摄取结果。 已创建的块数、因质量问题被丢弃且写明原因的页面、检测到的重复项。透明本身就是质量的一部分。

  • 文本净化(代理字符、控制字符、错误编码)发生在嵌入之前——这是从真实 PST 文件中得到的惨痛教训。

7. Elite retrieval(高级检索)

  • 默认混合检索: 稠密向量(multilingual embeddings)+ 稀疏向量(BM25/miniCOIL),通过 Qdrant Query API(prefetch + fusion)原生实现 RRF 融合——不需要额外基础设施。

  • 可选重排 使用 cross-encoder 从 top-50 → top-N。可通过 fastembed 纯本机运行,也可以通过 API 运行(Cohere 或 llama.cpp 的 /v1/rerank)。

  • MMR 调优多样性, 直接复用 Qdrant 已返回的向量(with_vectors=true)。检索过程中绝不再嵌入(embedding),—此前同样的错误曾在前代项目中引发真实的生产 OOM。

  • 一门 DataFrame?

  • **支持文本过滤字段:**date —— 完整的日期范围,lte 中包含 end-of-day —— 再加上 source、type、author,都基于 wizard 创建的索引之上。

  • get_context 为旗舰工具: 编排 hybrid → rerank → MMR → token 预算 → 带编号的格式化引用块,如 [1][2]。硬保证是:只有真正被包含进 context 的内容才会被引用 —— 绝不出现虚构来源。

  • 生成永远在客户端。 服务端从不调用 LLM:它只把最好的 context 提供给用户,用户自己的模型(Claude、GPT)写作回答。这使服务端保持低成本、低消耗,也避免了强制依赖第三方 API key。

8. 质量与评估

  • 仓库中的 golden corpus: 15–20 个不同类型的文档(含表格的 PDF、真实电子表格、一个有噪声的网页)以及 ~50 个带注释相关 chunk 的问题。

  • CI 中的检索性指标: recall@k、MRR、nDCG(基于 golden corpus),并设置阈值,若有回归会直接使构建失败。Dense 与 Hybrid 与 Hybrid+rerank 的比较会提到文档中——数字本身就是项目的卖点。

  • 分层测试: 核心层的单元测试(无 Qdrant 依赖)、基于 testcontainers 在容器中针对 Qdrant 的集成测试,以及使用 SDK 测试客户端对 MCP 协议进行完整 e2e 测试。每个格式还有专门的 torture 文件(扫描 PDF、合并单元格 Excel、垃圾 HTML)。

  • 发布时验证兼容性矩阵: Claude Code、Claude Desktop 以及 claude.ai,并在文档中用截图说明。ChatGPT 将在 v2 中加入该矩阵。

9. GitHub 阵地

就作品集而言,仓库就是产品,这和代码本身一样重要。发布清单:

  • 一份能转化用户的 README。 用 vhs/asciinema 录一个真实对话中 wizard 完成 RAG 构建的过程,3 行 uvx quickstart、徽章(CI、coverage、PyPI、license)、与官方 MCP 对比表,以及公开的 benchmark 结果。

  • 一个着陆页。 一个独立的、打磨过的静态页面,与 README 和文档站区分开来,包含 hero 区、对比官方 mapping MCP 的对比表、wizard 演示录像,以及三大 v1 客户端的安装 CTA,还有 F5 的 benchmark 数据。这就是 launch 帖子和社交分享链接所要指向的位置。

  • 文档。 使用 mkdocs-material:每类客户端一份指南(Claude Code、Claude Desktop、claude.ai——并包含 bearer-token connector 的完整流程)、cookbook("RAG over your own docs"、"team memory")完全列出全部 33 个工具的参考、公开的 ADR。

  • 可持续推动工程。 CI 中包含 ruff + mypy strict + pytest + coverage,自动 semver 版本发布(release-please)、CHANGELOG、issue/PR templates、CONTRIBUTING、Code of Conduct,并启用 GitHub Discussions。

  • 分发与启动。 PyPI 包的 .mcpb bundle(用于 Claude Desktop)+ Docker 镜像 + compose stack(含 Qdrant)。已列入官方 MCP registry、Smithery、Glama、PulseMCP 以及 awesome-mcp-servers。启动时发布:一篇技术文章 + Show HN + r/LocalLLaMA + X,并用该 wizard 演示作为引子。

10. 开发阶段

平时项目节奏(晚间/周末)。每个阶段都以可展示的成果结束——绝不会同时有两个阶段并列。

阶段

进度

工期

完成定义

F0

规范手册与写骨架

~1.5 周

Repo +、软件包结构。全部 33 个工具的 JSON schemas 流程先冻结并 review(即使实现仍在后续阶段,也先设计全部 33 个)。为§3 的决策写 ADR。uvx qdrant-rag-build-mcp 能启动,health 可从 Claude Code(stdio)和 claude.ai(HTTP over tunnel)响应。

F1

Qdrant 核心

~2周

完整的 collections 命名空间、ingest_text、dense search、config(配置)profile、只读模式。Claude Code e2e 演示:创建 collection、收藏短文、搜索这些短文。已经包含官方的 MCP 超集。

F2

专业化注入

~3周

全部 8 种格式及其质量处理、结构化 chunk、去重、带进度的进程、导入报告。一个包含 100 个真实文档的混合目录能够干净导入,并有准确报告(可对账 counters),且重复导入可幂等。

F3

Elite(高级检索)

~2周

Hybrid (RRF)、rerank、MMR、filters、以及带 citation contract 的 get_context。对 golden corpus 的评测显示,hybrid+rerank 明显优于 ollama dense;引用中零遗漏的来源。

F4

智能导览 wizard

~2周

状态机、每个答案的实时校验、带 smoke test 的 setup_apply、多 profile。外部测试者仅通过对话就能在 10 分钟内建立自己的 RAG,且不查看任何文档。完成后在这里录 demo。

F5

质量与可观测性

~1.5周

CI 中带阈值的 eval 套件、stats/estimate、snapshot、验证过的客户端兼容性矩阵。CI 全绿,eval 均阻塞,benchmark 已发布到文档中。

F6 发布 ~2.5周 完整 docs、结构良好的 landingpage、README 中带该工具的 demo、PyPI + clue desktop MCP bundle + Docker image,列入 MCP registry,发布 blog。可在全部 3 个 v1 环境中一键安装(或拖拽安装);≥4 个 registry 收录;提交 Show HN。

合计:~14.5 周(约 3.5 个月) 在一个合理的业余项目速度上,而且每两周都有可演示的里程碑,保持势头。

11. 已沉淀的经验教训与风险

这个一家独没有说出的优势:它从真实的、处理过 TB 级数据的 enterprise RAG 系统中继承了很多已经"付过学费"的教训。每一条都已经从第一天起写进设计,而不是后来再打补丁。

11. Similarities with inherited 痛苦 (No separate section title)

付过学费教训

Qdrant RAG Build 怎么从架构上内建

检索时的 MMR 会重新对文本 embedding,结果在生产环境中直接 OOM

MMR 始终复用 Qdrant 返回的向量,代码路径中禁止二次 embedding

内部 schema metadata 把上下文 payload 支撑得巨大,逐渐截断了真正的内容(谨慎两次,原因不同)

封闭、带版本的 citation contract;pipeline 内部 metadata 一概不进 LLM context

继承开发卡在某些 swapped 模块上,互相 fallback,难以被定位

rerank 明确设置成可验证 provider;health 实际上检查所配置的 reranker 是否返回结果

同一进程内 threads + fork 混用一切 导致真实 causing 中途卡死

摄入并发通过单模型 + async worker process 完成;_ fork 与 ThreadPoolExecutor 绝不混用

因为 subprocess 悄悄退出,job 在 40% 时标记为 "completed"

只有计数核对过(expected = processed + valid failures)时,job 才标为 completed

OCR 会挂住 45 秒,最后整篇文档仍被丢弃

任何昂贵操作之前先做便宜的质量检查;全分批给每个任务时间预算

NER 品质逐渐沦进了无限的领域特定改哪里补哪里的情形

v1 明确不会做 NER —— 这是有意决策,不是遗漏

正在评估的风险

风险

缓解措施

范围蔓延 —— 想要重建整个企业级 RAG 的诱惑

§2 中的“超出范围”清单具有契约性;任何新增都要求移除其他内容,或为 v2 提供正当理由

对 claude.ai 的远程部署摩擦(隧道或常驻主机比本地 stdio 多了一个活动部件)

本地 stdio(Code、Desktop)保持顺畅路径且完全不需要这些;claude.ai 的配置只是一页有引导的文档,且它是 v1 唯一需要的远程客户端 — 与 ChatGPT 不同,没有 Developer-Mode/付费计划复杂度

排除 ChatGPT 将会把 v1 受众缩窄到 Claude 生态系统

是刻意的取舍,而非疏漏:claude.ai 已在包括 Free 在内的所有套餐中覆盖了“远程、免安装”受众;ChatGPT 的 Developer-Mode 加付费计划门槛会增加实际摩擦,却不会显著扩大 v1 的覆盖面 — 核心方案验证后重新评估

fastembed PR #602(bge-m3 支持)无限期保持阻塞

v1 不依赖它 — 原生使用 multilingual-e5-large;如果该 PR 完成,则作为 v2 升级项重新评估,并可直接为其做贡献

MCP 开协议或 Qdrant Query API 变更

始终使用最新官方 SDK;每个发布版本的兼容性矩阵;薄门面 = 变更影响面小

33 个工具占满客户上下文

针对工具选择的紧凑性优化描述;按用途划分工具组(例如,日常使用中隐藏管理员工具) ############

因为缺时间而抛弃(每个副项目的头号风险)

以结束演示收尾的 ≤3 周阶段;F1 如果已经算“官方 MCP 但更好”,其余全部延后也足以发布

12. 命名、许可与第一步

名称: 名称:Qdrant RAG Build(包名 qdrant-rag-build-mcp)—— 选择这个名字是为了贴近这个仓库自身的工作名称,而不是虚构一个品牌。命名并非两轮更早的过程:Quiver 是因为与那个无关的“Quiver Quantitative” MCP 命名空间冲突而落选(bolshchikov/quiver-mcp、pipeworx-io/mcp-quiver、jsconiers/quiver-quant-mcp);Vectorsmith 经过验证是干净可用的,但它被一个明确的偏好所取代:那就是要让名字在仓库上具备辨识度。这意味着要接受当初计划已经指出的权衡——一个带“qdrant”前缀的名字可能会被误认为 Qdrant 官方项目——而缓解方法就是在 README 的标语和文档站点中直白地写清楚“非官方、社区构建”。字面量 qdrant-rag-mcp 已经是一个活跃的、不相关的项目(ancoleman/qdrant-rag-mcp),因此有意回避了它;qdrant-rag-build / qdrant-mcp-rag-build 已经在 PyPI 和 GitHub 上确认无冲突(2026 年 8 月)。

许可协议: Apache-2.0 — 与 Qdrant 相同,带有专利授权,并且是那些会看你个人简介的企业会期望看到的许可证。

第一个具体步骤: F0 会在服务器代码第一行之前,就先为全部 33 个工具编写 JSON schemas。§4 中的目录就是规格;先冻结它可以避免中途重新设计,并从第一周就开始产生一份可发布的文档。


参考资料: qdrant/mcp-server-qdrant(官方服务器,2 个工具) · fastembed PR #602(bge-m3 支持,开放中) · MCP Bundles (.mcpb) toolkit · 使用远程 MCP 的自定义连接器(claude.ai) · v2 阅读: ChatGPT Developer Mode, MCP 与 OpenAI 中的连接器

计划 v1.3 · 锁定于 2026-08-24 · v1 覆盖完整的 Claude 家族(Code、Desktop、claude.ai — stdio + bearer-token HTTP);ChatGPT 则因人阻碍,明确延后至 v2 的发布会受到自身 Developer-Mode/付费计划的阻碍,而不是与 claude.ai 共享的技术制约。撰写时参考了 IA_EmailsContext 企业 RAG 项目所得到的经验教训。

Available Tools

33 tools
alias_setA

Points an alias at a collection, enabling zero-downtime blue/green re-indexing — clients keep querying the alias while the underlying collection is swapped out. Use this when republishing a freshly re-indexed collection without downtime.

NameRequiredDescriptionDefault
aliasYes
collectionYes

Output Schema

NameRequiredDescription
aliasYes
updatedYes
collectionYes

TDQS

A4.2/5.0
Behavior4/5

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

The description explains the underlying behavior beyond the annotations: clients continue querying the alias while the collection is swapped, which reinforces the non-destructive mutation implied by the annotations. It doesn't mention side effects on the old collection, but still provides meaningful behavioral context.

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 tight sentences with the verb/action and use case front-loaded. There is no redundant phrasing or repetition of the tool name, and every clause adds context.

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?

For two simple string parameters and an existing output schema, the description gives enough context about when and how to use the tool. It could mention whether the alias or collection must already exist, but the core operation, purpose, and invocation context are sufficiently covered.

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 0%, so the description alone must clarify parameters. It conveys that 'alias' is the stable endpoint clients query and 'collection' is the target being pointed to, which adds relationship meaning. Even so, it doesn't specify exact value formats, whether names or IDs are expected, or any option constraints.

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 uses a specific action and resource pair ('Points an alias at a collection') and immediately adds the practical goal: zero-downtime blue/green re-indexing. This distinguishes it from general collection creation/deletion tools or search operations and makes the tool's role unambiguous.

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 gives an explicit use case: 'Use this when republishing a freshly re-indexed collection without downtime.' It does not explicitly mention when not to use it or suggest alternatives, so it stops just short of complete routing guidance.

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

collection_createA

Creates a new Qdrant collection using a named preset (dense, hybrid, or multitenant), with named vectors and payload indexes configured correctly by default. Use this once per new document set that needs its own collection — not for adding documents to an existing collection (use ingest_* for that).

NameRequiredDescriptionDefault
nameYes
presetYes

Output Schema

NameRequiredDescription
presetYes
createdYes
collectionYes
sparse_enabledYes
dense_vector_sizeYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate this is a write operation but not destructive; the description goes beyond this by explaining what the tool configures by default (named vectors and payload indexes) and that it creates a fresh, standalone collection. It adds useful behavioral context such as the intended one-time usage per document set.

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, front-loaded with the core action, and every clause adds useful information. There is no filler or repetition of schema details.

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 two simple parameters and an output schema, the description covers the core purpose, usage boundary, and default behavior well. A minor gap is the lack of guidance about what differentiates the presets or what happens if a collection with the same name already exists.

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 0%, so the description must compensate, and it partially does by explaining that 'name' is a collection name tied to a new document set and 'preset' selects dense, hybrid, or multitenant. However, it does not explain what each preset actually changes or how the name should be formatted, so the parameter semantics are only partially fleshed out.

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 that this tool creates a new Qdrant collection, names the available presets, and says it configures named vectors and payload indexes by default. It also distinguishes this operation from adding documents, making its scope unambiguous.

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 says to use this tool once per new document set needing its own collection, and explicitly tells the agent not to use it for adding documents to an existing collection, directing it to ingest_* tools instead.

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

collection_deleteA
Destructive

Permanently deletes a Qdrant collection and all its data. Destructive — requires confirm_name to exactly match name, and is blocked entirely when the server is in read-only mode. Use only when the user has explicitly confirmed they want a collection gone.

NameRequiredDescriptionDefault
nameYes
confirm_nameYes

Output Schema

NameRequiredDescription
nameYes
deletedYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that deletion is permanent, removes all data, requires confirm_name to exactly match name, and is blocked in read-only server mode. This is strong behavioral context and does not contradict annotations.

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?

Three concise, front-loaded sentences. Every sentence adds useful information: permanent deletion, destruction, confirmation, read-only block, and user-confirmation guard. No redundant text.

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 two-parameter destructive tool with annotations and output schema, the description covers all essential behavior, including irreversibility, the guard to prevent accidental deletion, and operating restrictions. The agent can safely invoke this tool without needing further context.

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 description coverage is 0%, so the description must compensate. It clarifies that confirm_name must exactly match name and that name identifies the Qdrant collection. It could list each parameter separately, but the critical confirmation relationship is explicit and sufficient.

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 uses a specific verb and resource: 'Permanently deletes a Qdrant collection and all its data'. This clearly distinguishes collection_delete from siblings like collection_create, collection_list, collection_info, and document_delete.

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 states when to use the tool: only after the user explicitly confirms deletion. It also mentions the read-only mode block and confirmation-match requirement. It does not mention alternative actions like backup or snapshot-restore, but for a destructive delete the main safety guidance is clear.

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

collection_infoA
Read-only

Returns full detail on one collection: vector schema, payload indexes, size, and optimization status. Use this to inspect a specific collection's configuration, e.g. before deciding whether hybrid search or a given filter is available.

NameRequiredDescriptionDefault
nameYes

Output Schema

NameRequiredDescription
nameYes
presetYes
points_countYes
sparse_enabledYes
disk_size_bytesYes
payload_indexesYes
optimizer_statusYes
dense_vector_sizeYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so no contradiction exists and the read-only nature is known. The description adds detail about the returned fields, which is helpful, but does not disclose additional behavioral traits such as error behavior, required permissions, or rate considerations.

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 compact: two sentences with no filler. The first sentence states what the tool returns, and the second gives a concrete use-case. Information is front-loaded and every clause earns its place.

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?

For a simple read-only tool with one parameter, an output schema, and clear annotations, the description provides enough for an agent to select and call it correctly. It could mention what happens when the collection does not exist, but this is a minor gap given the output schema exists.

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?

There is only one required parameter, 'name', and the schema description coverage is 0%. The description clarifies that the name refers to one collection, but does not explain naming constraints, formats, or how the value is used beyond the title already indicating it is a name.

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 uses a specific verb and resource: 'Returns full detail on one collection,' and enumerates what is included: vector schema, payload indexes, size, and optimization status. This clearly distinguishes it from sibling tools like collection_list or collection_create.

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 states when to use the tool: to inspect a specific collection's configuration, with a concrete example — deciding whether hybrid search or a given filter is available. It does not explicitly describe when not to use it or name alternatives, but the usage context is clear.

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

collection_listA
Read-only

Lists every Qdrant collection managed by this server, with basic size info. Use this to see what RAG collections already exist before creating a new one or picking which to search.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
collectionsYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the useful detail that the tool returns basic size info for each collection, but it does not add deeper behavioral context such as pagination or potentially large responses. With annotations covering the core behavior, a 3 is appropriate.

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 with no wasted words. The main action is up front, the scope is explicit, and the usage guidance is integrated without bloating the description.

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 zero-parameter, read-only listing operation with an output schema present, the description fully covers what the agent needs to decide when to call this tool. Nothing important is missing.

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?

This tool has zero parameters and the schema covers everything trivially, so the description has little to add. The baseline for a zero-parameter tool is 4, and the description's mention of 'which collection' selection is sensible even though no parameters are needed here.

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 uses a specific verb and resource ('Lists every Qdrant collection') and adds scope ('managed by this server') plus a hint of return content ('basic size info'). It effectively distinguishes itself from collection_info (single collection) and collection_create by focusing on enumeration of all collections.

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 provides clear usage context: use it to see existing RAG collections before creating a new one or choosing which to search. It does not explicitly name alternative tools or say when not to use it, but the use-case guidance is strong enough to guide an agent.

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

config_getA
Read-only

Returns the effective configuration of the currently active profile, with secrets (API keys, bearer tokens) masked. Use this to confirm what's actually configured without ever exposing credentials.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
collectionYes
profile_nameYes
dense_providerYes
rerank_enabledYes
sparse_enabledYes
embedding_api_key_setYes

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds a valuable behavioral detail: secrets such as API keys and bearer tokens are masked in the output. This goes beyond the annotations and warns the agent that the response has sanitized values.

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 and front-loaded: it states the main behavioral contract first, then adds the credential-masking guarantee. Every sentence adds value, and there is no redundant or filler content.

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 zero-parameter, read-only tool with an output schema available, the description is complete. It identifies what is returned, the intended use, and the critical masking behavior, so an agent has enough information to invoke the tool correctly and interpret expectations.

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 input schema has zero parameters, so the description does not need to describe parameter behavior. The description clarifies that no input is required and that the tool operates on the currently active profile, which is sufficient context for a parameterless tool.

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 returns the effective configuration of the active profile, which is specific and actionable. It implies a distinction from sibling tools like profile_list and profile_use, but it does not explicitly differentiate itself from them.

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 gives a clear intended use: 'confirm what's actually configured without ever exposing credentials.' It does not explicitly state when not to use it or mention alternatives, but the guidance is strong enough for an agent to recognize the appropriate use case.

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

document_deleteA
Destructive

Deletes every chunk belonging to one source document from a collection, without touching the rest. Destructive — requires confirm_doc_id to exactly match doc_id, and is blocked in read-only mode. Use only when the user has explicitly confirmed the deletion.

NameRequiredDescriptionDefault
doc_idYes
collectionYes
confirm_doc_idYes

Output Schema

NameRequiredDescription
doc_idYes
collectionYes
chunks_deletedYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already signal destructive behavior, but the description adds crucial context: the deletion is scoped to one document's chunks, confirmation requires an exact doc_id match, the tool is disabled in read-only mode, and it must only be used after explicit user confirmation. No contradiction with the annotations.

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?

Every sentence earns its place. It front-loads the core action and scope, then adds the safety constraints in a compact and readable way. No redundant filler.

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 destructive, three-parameter tool, the description conveys scope, safety guards, preconditions, and when and when not to invoke it. An output schema is present, so not describing the return format is acceptable. The agent has everything needed to safely choose and call 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 0%, so the description must compensate for the bare parameter names. It explains confirm_doc_id's role as a guard requiring an exact match with doc_id, and it clarifies that the deletion acts on chunks of a single document within a collection. It does not elaborate on the collection parameter, but its meaning is recoverable from context and the param name.

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?

States a specific verb ('Deletes') and resource ('every chunk belonging to one source document from a collection'), and clearly distinguishes this from collection-level deletion. The phrase 'every chunk belonging to one source document' makes the tool's exact scope immediately obvious, and 'without touching the rest' removes ambiguity.

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 tells the agent when to use the tool: only when the user has explicitly confirmed deletion. It also states when not to use it: in read-only mode, and when confirm_doc_id does not exactly match doc_id. This is strong usage guidance for a destructive operation.

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

document_listA
Read-only

Lists ingested source documents in a collection, one entry per original file/text/URL (not per chunk). Use this to see what's already in a collection before ingesting more, or to find a doc_id to pass to document_delete or get_document.

NameRequiredDescriptionDefault
collectionYes

Output Schema

NameRequiredDescription
documentsYes
collectionYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a behavioral detail beyond annotations: the output is at source-document granularity rather than chunk granularity, which is important for interpreting results correctly.

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, each adding distinct value: the first defines the tool's result and granularity, the second gives practical use cases. There is no filler and no redundant repetition of annotations or schema.

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?

For a simple one-parameter, read-only tool with an output schema, the description provides enough context: what is listed, what granularity, and when to call it. The only substantive gap is the collection parameter semantics; safety and output shape are already covered by annotations and the output schema.

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

Parameters2/5

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

The only required parameter, collection, has 0% schema description coverage, but the description only mentions it obliquely as 'in a collection.' It does not clarify whether the value should be a collection ID or name, how to format it, or how to find valid collections, so the description fails to compensate for the schema gap.

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 starts with a specific verb and resource: 'Lists ingested source documents in a collection' and immediately clarifies the granularity as one entry per original file/text/URL, not per chunk. This makes it easy to distinguish from chunk-level tools and from collection-level tools.

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 gives two concrete use cases: inspecting a collection before ingesting more and finding a doc_id for document_delete or get_document. It does not explicitly state when not to use the tool or contrast it with tools like collection_info or search, so it misses the explicit exclusion needed for a 5.

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

estimateA
Read-only

Before ingesting, estimates how many chunks a file or directory will produce, the storage it will use, and the embedding API cost if a paid provider is configured. Use this to preview a large ingest before committing to it.

NameRequiredDescriptionDefault
pathYes

Output Schema

NameRequiredDescription
estimated_chunksYes
estimated_api_cost_usdYes
estimated_storage_bytesYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this read-only and non-destructive, and the description adds useful behavioral context: it does not ingest content, it produces an estimate, and cost is only included if a paid provider is configured. This complements rather than contradicts the annotations.

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 front-loads the purpose, lists the key outputs, mentions the cost dependency, and ends with a practical use case. Every clause is relevant and there is no filler.

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?

With an output schema present, the description need not explain the return structure. It covers the what, when, and why of usage, and is complemented by read-only annotations. A small omission is whether directory paths are processed recursively, but this is minor for a preview/estimate 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?

The schema's only parameter is a bare 'path' with 0% schema description coverage. The description compensates by clarifying that the path refers to a file or directory, which resolves the main ambiguity. More detail about path format or resolution would help, but this is sufficient for a single-parameter tool.

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 lead verb 'estimates' identifies a specific analysis action on a file or directory, and the description defines exactly what is estimated: chunk count, storage, and embedding cost. Framing it as 'Before ingesting' clearly distinguishes it from ingest_* siblings.

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 states when to use the tool: 'before a large ingest, preview before committing.' It does not explicitly list exclusions or name alternatives, but the context is clear and actionable.

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

expand_contextA
Read-only

Fetches the chunks immediately before and after a given result within the same document, for continuity. Use this when get_context's answer references a chunk that seems to be cut off mid-thought.

NameRequiredDescriptionDefault
doc_idYes
windowNo
collectionYes
chunk_indexYes

Output Schema

NameRequiredDescription
chunksYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to establish that this is a safe read operation. The description adds useful behavioral context about fetching neighboring chunks within the same document, but it does not disclose output shape, boundary behavior, or what happens for invalid chunk indexes.

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 filler: the first sentence states what the tool does, and the second explains when to use it. It is front-loaded and every word contributes.

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?

The description is adequate for a simple, read-only tool with an output schema and annotations, but it relies on the agent inferring parameter meaning from names. The missing documentation of 'window' and of how chunk_index is sourced from get_context leaves a noticeable gap.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only indirectly covers doc_id/collection through 'same document' and chunk_index via 'given result.' The window parameter, which controls how many chunks are fetched, is never explained, and collection/chunk_index formats are left undefined.

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 uses a specific verb and resource: 'Fetches the chunks immediately before and after a given result within the same document, for continuity.' It also distinguishes the tool from get_context by naming it and describing the exact situation it addresses, so an agent can tell them apart.

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 gives an explicit trigger condition: 'Use this when get_context's answer references a chunk that seems to be cut off mid-thought.' This is clear context, but it does not state when not to use the tool or list other alternatives beyond get_context.

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

find_similarA
Read-only

Finds points similar to a given point by ID, using Qdrant's native similarity API. Use this to explore 'more like this' starting from a specific chunk the user is looking at.

NameRequiredDescriptionDefault
limitNo
point_idYes
collectionYes

Output Schema

NameRequiredDescription
resultsYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare the tool as read-only and non-destructive. The description reinforces this with 'Finds' and mentions the native similarity API, but adds little new behavioral context beyond what annotations provide, such as pagination, limits behavior, or response characteristics.

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, front-loads the core action, and then gives the intended use case. Every part earn its place with no unnecessary detail.

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?

The tool is simple, has a clear output schema, and annotations already cover safety. The description sufficiently explains why the agent would call it, though it may still wish for a bit more detail on required parameters given the 0% schema description coverage.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only clarifies the intent behind 'point_id' ('given point', 'specific chunk') but provides no explanation for 'collection' or 'limit', leaving those parameters underspecified for the agent.

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 uses a specific verb and resource: 'Finds points similar to a given point by ID.' This makes the operation clear. However, it does not explicitly distinguish itself from the similarly vector-based sibling tools like 'recommend' or 'search' beyond the mention of point ID.

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 provides clear usage context: 'Use this to explore more like this starting from a specific chunk the user is looking at.' This tells the agent when to select this tool, but it does not explicitly name alternatives or state when not to use it.

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

get_contextA
Read-only

The flagship retrieval tool: runs hybrid search, reranks, applies MMR for diversity, trims to a token budget, and returns a formatted context block with numbered citations — ready for the calling LLM to answer from directly. Prefer this over raw search_* tools whenever the goal is to answer a question, not just to inspect search results.

NameRequiredDescriptionDefault
queryYes
filtersNo
collectionYes
token_budgetNo

Output Schema

NameRequiredDescription
chunksYes
citationsYes
token_countYes
formatted_contextYes

TDQS

A4.6/5.0
Behavior5/5

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

Even though readOnlyHint and destructiveHint already communicate safety, the description adds valuable behavioral detail beyond annotations: it performs hybrid search, reranks, applies MMR, enforces a token budget, and structures output for direct LLM answering.

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 dense but efficient: the first sentence describes behavior and output, and the second provides actionable selection guidance. No filler is present.

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?

Combined with the output schema and read-only annotations, the description gives the agent enough understanding of the tool's purpose, behavior, and usage context. There is little risk of selecting the wrong retrieval tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to compensate, but it only meaningfully explains the token budget and implicitly the query. Filters and collection are left to name inference, which is not enough for fully reliable invocations.

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 names a concrete operation (hybrid retrieval with reranking and MMR) and a clear deliverable (a formatted context block with numbered citations), making it easy to distinguish get_context from the raw search_* siblings.

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 says to prefer this tool over raw search_* tools when the goal is to answer a question rather than inspect search results, giving both a clear when and a clear when-not signal.

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

get_documentA
Read-only

Retrieves the full original source document behind a citation, or a specific page/section range of it. Use this when the user wants more context than a single cited chunk provides.

NameRequiredDescriptionDefault
doc_idYes
page_endNo
collectionYes
page_startNo

Output Schema

NameRequiredDescription
doc_idYes
contentYes
source_pathYes
source_typeYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description goes beyond the input schema by clarifying the behavior of retrieving both the full document and partial page/section ranges, setting expectations about scope and output. It does not contradict the annotations.

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 carry complete functional intent with no redundancy. The main retrieval behavior is front-loaded, and the usage context is at the end, making it easy to scan and process.

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?

The tool has an output schema, so return values do not need to be explained. However, with an input schema that has zero property descriptions, the tool description does not fully compensate: it does not clarify what 'collection' refers to or how the agent obtains a valid doc_id. For a simple retrieval tool with read-only annotations this is acceptable but still leaves a clear gap.

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

Parameters2/5

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

Schema description coverage is 0%, so all parameter meaning should come from the description. It does explain the page_start/page_end semantics through 'page/section range,' but it leaves collection and doc_id entirely intuitive, with no explanation of how they relate to a citation or where the necessary values come from. This is inadequate with four parameters.

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 precise verb ('Retrieves'), a clear resource ('full original source document behind a citation', or a page/section range), and frames the tool in relation to citation context. This makes it easy for an agent to tell it apart from sibling retrieval tools like get_context or expand_context.

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 says when to use it: 'when the user wants more context than a single cited chunk provides.' It does not explicitly name an alternative tool or describe when not to use it, but the referenced use case gives solid guidance without requiring further inference.

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

healthA
Read-only

Reports Qdrant connectivity, which embedding model is loaded, the reranker's live status, server version, and the active transport. Use this first when something seems broken, or to confirm the server is reachable and correctly configured.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
versionYes
transportYes
embedding_modelYes
reranker_statusYes
qdrant_connectedYes

TDQS

A4.5/5.0
Behavior4/5

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

The description adds behavioral context beyond the read-only/destructive annotations by explaining that this is a diagnostics-only tool reporting status and configuration states. It does not state any side effects or requirements, but with readOnlyHint=true and no parameters, nothing more is strictly necessary.

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 compact, front-loaded with the tool's purpose, and wastes no words. The first sentence enumerates specific status items, and the second sentence gives a clean usage directive.

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 zero-parameter read-only health check with a provided output schema, the description provides everything needed: the exact data points reported and the situations in which to call it. No important context is missing.

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, so there is no schema burden at all. The description does not need to explain parameter semantics, and the baseline for zero-parameter tools is appropriately met.

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 ('Reports') and defines the resource scope: Qdrant connectivity, embedding model, reranker status, server version, and active transport. This makes it clear what the tool does and how it differs from other health-adjacent tools in the sibling list.

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 says when to use the tool: first when something seems broken, or to confirm the server is reachable and correctly configured. It does not explicitly name alternatives or exclusion conditions, but the usage context is clear enough for an agent.

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

ingest_directoryA

Recursively ingests every supported file under a local directory, with optional glob include/exclude patterns, as a background-trackable job. Use this for bulk ingestion of a folder; poll job_status for progress.

NameRequiredDescriptionDefault
pathYes
collectionYes
exclude_globNo
include_globNo

Output Schema

NameRequiredDescription
job_idYes
statusYes
collectionYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only indicate readOnly=false and destructive=false, so the description carries the behavioral burden. It adds useful context by stating that ingestion is a background-trackable job and that progress should be polled via job_status, which is not visible from the annotations or schema alone. It does not detail duplicate handling or error cases, but it covers the key async behavior.

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 and contains no filler. The core operation is front-loaded, and the follow-up guidance about polling job_status is placed at the end. Every sentence either clarifies behavior or directs the agent to the correct follow-up 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?

For this tool's complexity, the description gives enough to confidently invoke it: it identifies the target resource, optional filters, and the asynchronous tracking mechanism. An output schema exists, so return-value details need not be explained. The only notable gap is that 'collection' is a required parameter and receives no explanation beyond its name.

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 no descriptions for parameters; the description partially compensates by mentioning local directory, optional glob include/exclude patterns, and bulk ingestion. However, it does not explain the semantics of the required 'collection' parameter beyond the tool's general intent, and it does not specify glob syntax. It adds value but does not fully compensate for the 0% schema description coverage.

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 a specific verb ('recursively ingests'), a concrete resource ('every supported file under a local directory'), and a clear distinguishing scope: bulk directory ingestion. Given sibling tools like ingest_text, ingest_file, and ingest_url, this description makes the directory-based focus immediately obvious.

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 tells the agent when to use it: 'Use this for bulk ingestion of a folder; poll job_status for progress.' This provides a clear usage context. It does not explicitly name or exclude the sibling ingest tools, but the bulk-vs-single distinction is strongly implied.

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

ingest_fileA

Ingests a single local file (PDF, DOCX, XLSX, PPTX, MD, HTML, CSV, or TXT) into a collection, with format-specific quality processing. Use this for one file at a time; use ingest_directory for a whole folder.

NameRequiredDescriptionDefault
pathYes
collectionYes

Output Schema

NameRequiredDescription
doc_idYes
collectionYes
source_pathYes
chunks_createdYes
discard_reasonsYes
pages_discardedYes
duplicates_foundYes

TDQS

A4/5.0
Behavior3/5

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

The annotations already signal that this is a write operation that is not destructive. The description adds that ingestion involves format-specific quality processing, but it does not explain what this processing does, whether the collection must already exist, or whether an existing document is replaced or duplicated. The added context is modest rather than 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?

Two tight, front-loaded sentences: the main action and supported formats come first, and the single-file restriction is placed before the alternative tool. No redundant or filler wording is present.

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?

The core information for calling the tool is present: file type scope, one-file usage, and the destination collection. The output schema covers return expectations. It would be even better if it specified file path constraints, collection preconditions, or the nature of the quality processing, but the definition is not missing the critical invocation information.

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?

With 0% schema coverage, the description needs to define the parameters. It implicitly maps 'path' to a local file path and 'collection' to the destination collection, which helps, but it omits operational details such as whether the path must be absolute, whether the collection must exist, or how collection names are specified.

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 verb 'ingests' and the exact resource: a single local file from an explicit list of formats into a collection. The scope is narrowed to one-at-a-time ingestion, which also differentiates it from ingest_directory even though other sibling ingest tools are not named.

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?

Gives an explicit usage boundary: 'Use this for one file at a time' and names the folder-level alternative ingest_directory. It does not explicitly mention ingest_text or ingest_url as alternatives for non-file inputs, but the enumerated file formats plus 'local file' make the intended use reasonably clear.

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

ingest_textA

Ingests a piece of raw text directly, with optional metadata, without needing a source file. Use this for notes, pasted content, or anything the user dictates in chat rather than pointing at a file — the 'semantic memory' use case, done properly.

NameRequiredDescriptionDefault
textYes
metadataNo
collectionYes
source_labelNo

Output Schema

NameRequiredDescription
doc_idYes
collectionYes
chunks_createdYes

TDQS

A3.9/5.0
Behavior4/5

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

The description accurately characterizes a writing, non-destructive ingestion and adds behavioral context: raw text goes into the semantic memory path, no source file is required, and metadata is optional. ReadOnlyHint=false and destructiveHint=false are respected, with no contradiction. It could disclose what happens if the target collection does not exist, but the annotations already cover the basic safety profile.

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 short, front-loaded, and easy to scan. The only minor waste is the conceptual repetition of not needing a source file and 'rather than pointing at a file' in the same sentence, which makes it slightly less lean than it could be.

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?

It is complete enough for a fairly simple ingestion task, especially because the tool appears in a family of related tools and has an output schema. However, it lacks guidance about collection preconditions and the 'source_label' parameter, which leaves an agent to guess a necessary part of the request when it is not optional and another when it is.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate entirely for parameter meaning, but it only mentions raw text and optional metadata. The required 'collection' parameter is not explained (e.g., must it already exist?), and 'source_label' receives no semantic explanation at all. This is a real gap for a tool with 4 parameters.

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 identifies the action: ingesting raw text directly with optional metadata, and distinguishes itself from file-based ingestion by emphasizing 'without needing a source file.' It also names the key use case ('semantic memory') so an agent can separate it from sibling ingest tools without inspecting schemas.

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 tells the agent when to use it — for notes, pasted content, or text dictated in chat — and contrasts it with pointing at a file. It does not name the sibling tools that handle files, but the line 'rather than pointing at a file' sufficiently routes the agent toward ingest_file or ingest_directory as alternatives.

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

ingest_urlA

Fetches a web page and ingests its main content, stripped of navigation/cookie-banners/footers. Use this for documentation pages, articles, or any URL-addressable content the user wants in the RAG.

NameRequiredDescriptionDefault
urlYes
collectionYes

Output Schema

NameRequiredDescription
doc_idYes
collectionYes
source_pathYes
chunks_createdYes

TDQS

A4/5.0
Behavior4/5

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

The description adds useful behavioral context beyond annotations: the tool makes an external network fetch and 'strips navigation/cookie-banners/footers' from the ingest content. Annotations only indicate it is not read-only and not destructive, so this extra detail about enrichment behavior is valuable. It doesn't mention potential network limits or external-access caveats, but what is disclosed is accurate.

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: two sentences front-load the primary capability, then immediately follow with concrete use cases. No extra filler or redundant restatements of the tool name.

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 two-parameter tool, the description is mostly complete, and the output schema covers return-value details. However, the 'collection' parameter is never explained, which is a real completeness gap since collection is required. The behavioral caveats about fetching external URLs are also minimal, but the simplicity of the tool keeps this from being a worse score.

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

Parameters2/5

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

Schema description coverage is 0% for the two required parameters, so the description needed to compensate. It explains url semantically via 'Fetches a web page' but never explains the collection parameter—what it refers to, its format, or how it's related to the RAG. This leaves a required argument underdefined.

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 action (fetches a web page), resource (URL-addressable content), and outcome (ingests main content into the RAG). It also effectively distinguishes itself from sibling tools like ingest_text, ingest_file, and ingest_directory by focusing exclusively on URL sources.

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 gives clear applicability: 'Use this for documentation pages, articles, or any URL-addressable content the user wants in the RAG.' It doesn't explicitly name alternatives or exclusions, like 'prefer ingest_file for local files', but the URL-addressable scope makes the appropriate use case clear.

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

job_statusA
Read-only

Checks the progress of a background ingestion job started by ingest_directory. Use this to poll a long-running bulk ingest rather than assuming it finished — a job is only 'completed' once its processed/failed counters reconcile with what was expected.

NameRequiredDescriptionDefault
job_idYes

Output Schema

NameRequiredDescription
failedYes
job_idYes
statusYes
skippedYes
expectedYes
processedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: this is a polling operation, and 'completed' only means counters reconcile with expectations. That is valuable for an agent deciding when to stop polling.

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, no wasted words. The core purpose is front-loaded, and the second sentence adds essential polling behavior without redundancy.

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?

Given a single parameter, read-only annotations, and an existing output schema, this description is complete for an agent to call the tool. It explains the polling use case and the definition of completion, leaving no critical gap.

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 offers no description for job_id, so the description carries the burden. It establishes that job_id refers to a background ingestion job started by ingest_directory, which is useful, but it does not explicitly say how to obtain or format the ID. It is adequate for a single obvious parameter but not fully explicit.

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 ('checks') and resource ('progress of a background ingestion job started by ingest_directory'). This clearly identifies what the tool does and naturally distinguishes it from ingestion and search siblings.

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 says to use this for polling a long-running bulk ingest rather than assuming completion, and explains the completion condition. It does not list explicit alternative tools, but the 'started by ingest_directory' framing gives clear contextual guidance.

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

payload_index_createA

Creates a payload index on a collection field so it can be used as a fast search filter (e.g. date, author, type). Use this when the wizard's filter question or a user request names a field that needs to be filterable.

NameRequiredDescriptionDefault
fieldYes
collectionYes
field_typeYes

Output Schema

NameRequiredDescription
fieldYes
createdYes
collectionYes
field_typeYes

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already communicate non-read-only and non-destructive behavior. The description additionally clarifies that creating an index enables fast filtering, but it does not disclose what happens if the index already exists or whether this affects existing data. This 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 two sentences, front-loads the core action, includes examples, and adds a practical usage condition. There is no fluff or repetition of schema details.

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?

The tool is a moderately simple three-parameter mutation and the description conveys its purpose and why to use it. However, because schema description coverage is 0%, the description should have provided more direct guidance on the value domains and how to populate the parameters correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden of explaining the parameters. It broadly refers to a field such as date, author, or type, but it does not explain the exact meaning of collection, how field_type should be chosen, or how the parameter values relate to each other.

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: 'Creates a payload index on a collection field' and gives the intended purpose ('fast search filter'). It does not just restate the tool name and it is clearly distinguished from collection creation and search tools.

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 gives an explicit trigger: use this when the wizard's filter question or a user request names a field that needs to be filterable. It provides clear context, though it does not explicitly say when not to use it or name an alternative tool.

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

profile_listA
Read-only

Lists saved configuration profiles (e.g. demo, work, project X). Use this to see what profiles already exist before creating a new one or switching.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
profilesYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate safety. It adds contextual value about saved profiles but discloses no extra behavioral traits such as rate limits or ordering. The description does not contradict the annotations.

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 short, focused sentences. The main action is front-loaded, examples are included for clarity, and there is no redundant filler.

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?

The tool is a simple list with no parameters and the output schema is already available, so the description fully covers what an agent needs: why to call it, what it returns, and when to use it.

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 no schema properties. With 0 params the baseline is 4; the description reinforces that the tool lists existing profiles but adds no specific parameter details, which 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 uses a specific verb and resource combination: "Lists saved configuration profiles," and adds concrete examples (demo, work, project X). It distinguishes itself from switching tools by stating its role as discovering what exists before creating or switching, which separates it from the sibling profile_use.

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 says to use it before creating a new profile or switching profiles. This provides clear context, though it does not name the alternative tool (e.g., profile_use) by name, so it gets a 4 rather than a 5.

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

profile_useA

Activates a saved profile, switching which collection and embedding configuration subsequent tool calls use. Use this to switch between separate RAG setups, e.g. from 'demo' to 'work'.

NameRequiredDescriptionDefault
nameYes

Output Schema

NameRequiredDescription
nameYes
activatedYes

TDQS

A4.1/5.0
Behavior4/5

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

The description adds useful behavioral context beyond the annotations: this is a stateful action that changes which collection and embedding configuration all subsequent tool calls will use. It does not contradict readOnlyHint=false or destructiveHint=false. It could disclose more about failures (e.g., unknown profile name) or reversibility, but the core behavior is clearly conveyed.

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 filler. The primary behavior is front-loaded, and the example follows naturally to clarify intended use.

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 one-parameter, stateful switching tool, this description is complete enough. It explains the effect, the use case, and provides an example; with an output schema present, no return-style documentation is needed.

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 0%, so the description must compensate. It implies the single `name` parameter is the identifier of a saved profile and provides real examples like 'demo' and 'work'. However, it never explicitly maps `name` to the parameter or states constraints such as whether the profile must pre-exist.

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 uses a specific verb and resource: it activates a saved profile and explains the effect is switching the active collection and embedding configuration for subsequent tool calls. It is clearly distinct from listing profiles or creating collections, though it does not explicitly name a sibling it should be distinguished from.

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 clearly tells the user when to use it: to switch between separate RAG setups, with a concrete 'demo' to 'work' example. It does not state when not to use it or name alternatives, but the intended usage context is unambiguous.

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

recommendA
Read-only

Recommends points using positive and negative example point IDs, via Qdrant's native recommendation API. Use this when the user can point at examples of what they want more or less of, rather than phrasing a text query.

NameRequiredDescriptionDefault
limitNo
negativeNo
positiveYes
collectionYes

Output Schema

NameRequiredDescription
resultsYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate a safe read-only and non-destructive operation, so the description does not need to restate that. It usefully adds that the tool invokes Qdrant's native recommendation API and explains the positive/negative example semantics. More behavioral detail such as pagination or ordering is not described, but that is acceptable given the annotations.

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 only two sentences: one states exactly what the tool does, and the second provides the main selection condition for when to use it. It is lean and front-loaded, with only a slight redundancy between 'recommends points' and 'point at examples'.

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?

For a 4-parameter read-only tool with an output schema and safe annotations, the description provides sufficient context: it names the mechanism, the expected input style, and the core positive/negative semantics. It stops short of exhaustively covering edge cases or alternative sibling routing, but the main operating context is fully represented.

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 0%, so the description has to carry meaning for the parameters. It gives good semantics for 'positive' as examples of what the user wants more of and 'negative' as what they want less of, and it establishes that these are point IDs. However, it does not explain the 'limit' or the 'collection' parameter, relying on the schema titles and defaults for those.

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 Recommends points using positive and negative example point IDs via Qdrant's native recommendation API. It distinguishes this from text-query search by explicitly noting the trigger intent is pointing at examples, not phrasing a query.

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 gives a clear when-to-use condition: 'Use this when the user can point at examples of what they want more or less of.' It also implies when not to use it by saying 'rather than phrasing a text query', but it does not name sibling alternatives explicitly.

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

search_hybridA
Read-only

Dense + sparse hybrid search with native RRF fusion — the recommended default search tool for most queries, since it handles both semantic meaning and exact keyword/ID matches well.

NameRequiredDescriptionDefault
limitNo
queryYes
filtersNo
collectionYes

Output Schema

NameRequiredDescription
resultsYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already establish this as a read-only, non-destructive operation. The description adds useful ranking behavior context, such as RRF fusion and support for semantic plus exact/ID matches, but does not mention pagination, result behavior, or how filters interact with the search.

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?

One focused, front-loaded sentence communicates the core algorithm, the tool's default status, and the key use case. Every phrase earns its place with no repetition or filler.

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 read-only tool with an output schema, the description captures purpose, algorithm, and default routing—enough for a basic invocation. However, with many search siblings and unclear param semantics, the description is not fully complete for choosing between search, rerank, multi-query, or find_similar in edge cases.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain 'collection', 'filters', or 'limit' semantics. It indirectly clarifies that 'query' is interpreted both semantically and as exact keyword/ID matches, which is useful but not enough to fully compensate for the 4 undocumented parameters.

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 names the operation ('search'), the mechanism ('Dense + sparse hybrid search with native RRF fusion'), and positions it as the recommended default search tool. This distinguishes it from sibling search tools even without naming them.

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 gives clear usage context: use it as the default for most queries because it covers both semantic and exact keyword/ID matching. It does not explicitly spell out when not to use it or which alternative to pick, so it stops short of a 5.

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

search_multi_queryA
Read-only

Runs several query reformulations (supplied by the calling LLM) and fuses their hybrid results into one ranking. Use this when a single query phrasing might miss relevant chunks — e.g. ambiguous or broad questions.

NameRequiredDescriptionDefault
limitNo
filtersNo
queriesYes
collectionYes

Output Schema

NameRequiredDescription
resultsYes

TDQS

A4.1/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds meaningful behavioral nuance: the caller supplies the reformulations, several queries are executed, and hybrid results are fused into a single ranking. This goes beyond purely restating the operation.

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 with no filler. The first sentence states how it behaves, the second gives a concrete use case with examples. Everything earned its place.

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?

With an output schema present, read-only annotations, and the core parameter (queries) explained, the description is mostly complete for an agent deciding to invoke it. The main gap is around filters and how they interact with the multiple query variants, but the overall tool usage is understandable.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden of explaining parameters. It usefully clarifies the 'queries' parameter as LLM-supplied reformulations and shows a combined result, but it does not explain 'collection', 'limit' scope, or 'filters'/format semantics or how filters apply across multiple queries at any extension.

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 operation: run multiple query reformulations and fuse their hybrid results into one ranking. This clearly differentiates it from single-query sibling tools like search and search_hybrid.

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 gives a selection rationale: 'Use this when a single query phrasing might miss relevant chunks — e.g. ambiguous or broad questions.' It lacks an explicit list of when-not-to-use or naming of alternative tools, so it does not reach the full 5.

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

search_rerankA
Read-only

Hybrid search followed by cross-encoder reranking over the top results, for maximum precision at the cost of extra latency. Use this when result quality matters more than speed, e.g. for a final answer rather than an exploratory search.

NameRequiredDescriptionDefault
limitNo
queryYes
filtersNo
collectionYes
rerank_top_nNo

Output Schema

NameRequiredDescription
resultsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish that this is read-only and non-destructive, so the description does not need to restate that. It adds useful behavioral context by naming the pipeline two stages and a key price/latency. This goes beyond the structured annotations and helps an agent understand operational trade-offs.

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: two sentences, no filler, no repetition of schema or annotations. The mechanism is described first, then the usage policy, so the most identifying information is front-loaded.

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?

For a read-only search tool with an output schema, this is mostly complete: the agent knows what happens and when to use it, and the output returns is already covered by the schema. It loses a point because the description does not clarify the precise meanings of several parameters, meaning an agent might still guess on limit versus rerank_top_n.

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

Parameters2/5

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

Schema description coverage is 0%, so the description is expected to compensate for the parameter semantics. It only gives a general sense of 'top results', which loosely hints at the role of limit and rerank_top_n, but does not clarify how filters, collection, limit, or rerank_top_n individually behave. The meaning of rerank_top_n, in particular, remains ambiguous.

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 a specific operation: hybrid search followed by cross-encoder reranking. It also communicates the value proposition, maximum precision at extra latency, making it easy to distinguish from sibling tools.

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 provides an when-to-use rule: use it when result quality matters more than speed. It also gives a counterexample ('exploratory search') to discourage misuse, making the selection criteria clear even without naming specific alternatives.

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

setup_answerA
Read-only

Records the user's answer to the current wizard question, validates it live (e.g. can Qdrant be reached, does an API key work), and returns either the next question or a null next step once all 8 questions are answered.

NameRequiredDescriptionDefault
answerYes
session_idYes

Output Schema

NameRequiredDescription
progressYes
validationYes
next_questionYes

TDQS

A3.5/5.0
Behavior1/5

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

Annotation contradiction: the description says 'Records the user's answer' which indicates a write/side-effect, while annotations declare readOnlyHint=true. That creates direct conflicting signals about whether this tool mutates session or wizard state. The description also shares validation behavior and returning a next step, but the contradiction dominates.

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 concise sentences front-load the core action and return behavior while giving relevant validation examples. No filler or redundant restating of the tool name or schema.

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?

Describes the flow (record, validate, return next question/null), mentions the 8-question limit, and indicates failure conditions via live validation. Because there is an output schema, return types need not be fully spelled out; a small gap is the missing detail on error behavior when riddances validation fails.

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

Parameters2/5

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

Schema description coverage is 0%. The description adds meaning only for one parameter: 'answer' picks the answer for the current wizard question. It does not explain session_id at all, its structure, or how it controls the wizard state. The description does not compensate for the total lack of schema descriptions.

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?

Describes a specific action (records the user's answer), a clear resource (the current wizard question), and the follow-up behavior (returns next question or null after all 8). This distinguishes it from sibling setup tools like setup_start or setup_apply, even without naming them.

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 clearly scopes use to an interactive 8-question wizard: call it when the user answers the current question, validate, then continue until the final answer is reached. It does not explicitly compare against alternatives like setup_start or setup_apply, so no exclusions are given.

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

setup_applyA

Executes the fully agreed wizard plan: creates the collection, indexes, and profile, ingests one example document, and runs a smoke-test search. Use this only after setup_answer has returned all 8 questions answered — never before the session is complete.

NameRequiredDescriptionDefault
session_idYes

Output Schema

NameRequiredDescription
reportYes
collectionYes
smoke_testYes
profile_nameYes
indexes_createdYes
example_doc_ingestedYes

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses the exact mutation surface: creating resources, ingesting a document, and running a smoke-test search, which aligns with readOnlyHint=false and destructiveHint=false. It does not state behavior on rerun or failure (e.g., whether resources already exist), but for a created resources this is a minor gap rather than a contradiction.

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 with no filler: the first lists the action plan, the second gives an unambiguous usage precondition. Every clause contributes to correct invocation, and the description is front-loaded with the operational effect.

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?

With an output schema present, the description doesn't need to explain return values, and it already covers what the plan does and when to run it. It could be more explicit about what identifies the session in parameters, but the description provides the key context an agent needs to avoid mis-use.

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 0%, so the description must compensate, but it never explicitly documents the 'session_id' parameter semantics. However, the mention of 'setup_answer' and 'session is complete' strongly implies session_id identifies the in-progress setup wizard, providing enough inference for a single self-descriptive parameter.

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 ('Executes'), a specific resource ('fully agreed wizard plan'), and enumerates the concrete side effects: creates collection, indexes, profile, ingests an example document, and runs a smoke-test search. This clearly distinguishes setup_apply from sibling tools like setup_start and setup_answer by positioning it as the final plan-execution step.

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 gives explicit conditional usage: 'Use this only after setup_answer has returned all 8 questions answered — never before the session is complete.' It names the prerequisite sibling and provides an exclusion condition, leaving no ambiguity about when the tool should be called.

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

setup_startA
Read-only

Starts a new conversational setup session and returns the first question, with options and a recommended default. Use this once, at the very beginning of guiding a user through configuring a new RAG — never mid-conversation once a session is already in progress.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
questionYes
session_idYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already communicate readOnlyHint=true and destructiveHint=false, so the safety burden is minimal. The description adds useful behavioral context: it is a one-time opener, returns the first question rather than an answer, and implies that later steps go through sibling tools. There is no contradiction with annotations because the 'session' is conversational, not a persistent data write.

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 with no wasted words. The first sentence delivers the core action and return value; the second provides the placement rule. The most decision-relevant information is fully front-loaded.

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 zero-parameter tool with an output schema and non-destructive annotations, the description is complete. It captures purpose, result, and sequencing constraints; nothing needed to call this tool correctly is missing.

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 input schema declares no parameters, so there is nothing for the description to add at the parameter level. The zero-parameter baseline of 4 applies, and the description correctly focuses on behavior instead.

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 'Starts a new conversational setup session' and specifies the concrete return value: 'the first question, with options and a recommended default.' This clearly disambiguates it from later-step siblings like setup_answer and setup_apply.

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?

Usage is explicitly scoped: 'Use this once, at the very beginning' and a strong when-not condition: 'never mid-conversation once a session is already in progress.' The agent knows exactly when this tool belongs in the flow.

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

snapshot_createA

Creates a point-in-time backup (snapshot) of a collection. Use this before a risky operation (bulk re-ingest, schema change) or on a routine backup cadence.

NameRequiredDescriptionDefault
collectionYes

Output Schema

NameRequiredDescription
collectionYes
created_atYes
snapshot_nameYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate the operation is not read-only and not destructive, and the description adds the useful context that the operation creates a safe point-in-time state. However, it does not disclose additional behaviors beyond the annotations, such as storage implications, performance impact, or whether the snapshot is immediate.

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: the first clearly defines the operation, and the second provides actionable context. There is no filler or redundancy.

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?

For a simple one-parameter tool with an output schema, the description is largely complete: it names the operation, target, and typical scenarios. It does not mention how to later restore a snapshot or whether the snapshot id is returned, but those are covered by snapshot_restore and the output schema respectively.

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

Parameters2/5

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

There is one required parameter, collection, with 0% schema description coverage, so the description should compensate with parameter guidance. The description only says the snapshot is 'of a collection', which adds almost nothing beyond the parameter name itself.

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 the exact operation (creates a point-in-time backup/snapshot) and the target resource (collection). It is clearly distinguishable from the related sibling snapshot_restore because it explicitly describes creation rather than restoration.

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 gives explicit when-to-use guidance: before risky operations like bulk re-ingest or schema changes, or as part of routine backup cadence. It does not state when not to use the tool or list alternative snapshot-related tools, which keeps it just shy of a 5.

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

snapshot_restoreA
Destructive

Restores a collection from a previously created snapshot, overwriting its current contents. Destructive — requires confirm_name to exactly match collection, and is blocked in read-only mode. Use only when the user has explicitly confirmed the overwrite.

NameRequiredDescriptionDefault
collectionYes
confirm_nameYes
snapshot_nameYes

Output Schema

NameRequiredDescription
restoredYes
collectionYes
snapshot_nameYes

TDQS

A4.7/5.0
Behavior5/5

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

The annotations already mark the tool as destructive and non-read-only, but the description adds valuable safety behavior: overwriting current contents, requiring an exact confirm_name match, being blocked in read-only mode, and requiring explicit user confirmation. This is strong behavioral disclosure beyond annotations.

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?

Three crisp sentences with no filler. The destructive warning and confirmation condition are foregrounded, and each sentence adds meaningful information.

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 an output schema available and annotations covering read-only and destructive hints, the description supplies the remaining operational context: overwrite behavior, confirmation requirement, and read-only blocking. An agent has enough to invoke this safely.

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 description coverage is 0%, so the description must carry the parameter semantics burden. It explains confirm_name's exact-match requirement and the collection target, and snapshot_name is implied as the previously created snapshot. All three required parameters are inferable, though not formally parameter-by-parameter documented.

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 action: restore a collection from a previously created snapshot and overwrite current contents. It is distinct from snapshot_create and collection_delete based on this description alone.

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?

States a clear guardrail: only use when the user has explicitly confirmed the overwrite. It also says read-only mode blocks the operation. It does not name contrasting use cases such as when snapshot_create or collection_delete would be more appropriate, so it falls just short of full explicit alternative guidance.

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

statsA
Read-only

Reports usage stats across all collections (or one, if named): point counts, document counts, disk size, and distribution by source type. Use this to answer 'how much do I have in my RAG' style questions.

NameRequiredDescriptionDefault
collectionNo

Output Schema

NameRequiredDescription
collectionsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond that: it is an aggregate reporting operation, scoped to all or one collection, and lists what the stats include. No unexpected side effects or hidden mutation behavior are implied.

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 tight sentences: the first gives scope, behavior, and outputs; the second gives the canonical use case. There is no filler, repetition, or unnecessary detail.

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?

Given the tool is simple (one optional parameter), read-only, and has an output schema, the description is complete enough for an agent to select and invoke it correctly. It covers the scoping behavior, the metrics, and the intended question type; no additional context is missing.

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 input schema only describes 'collection' as string/null with a default of null and provides no property description. The description compensates by supplying the essential semantics: omit it to get stats across all collections, or name one to restrict to a single collection. It leaves out name-format details, but for a single optional string parameter this is sufficient.

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 uses a specific verb ('reports') and resource ('usage stats across all collections'), lists concrete outputs (point counts, document counts, disk size, distribution by source type), and notes the optional single-collection scope. This clearly differentiates it from sibling tools like collection_list or collection_info, which are about listing or inspecting collections rather than aggregating usage.

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 gives a clear, actionable use case: answer 'how much do I have in my RAG' style questions. It also clarifies the all-versus-one-collection behavior for the optional parameter. However, it does not explicitly mention when not to use it or name alternative tools for related needs.

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. 33 tool updatesv0.1.0
    • First observedalias_set
    • First observedcollection_create
    • First observedcollection_delete
    • First observedcollection_info
    • First observedcollection_list
    • First observedconfig_get
    • First observeddocument_delete
    • First observeddocument_list
    • First observedestimate
    • First observedexpand_context
    • First observedfind_similar
    • First observedget_context
    • First observedget_document
    • First observedhealth
    • First observedingest_directory
    • First observedingest_file
    • First observedingest_text
    • First observedingest_url
    • First observedjob_status
    • First observedpayload_index_create
    • First observedprofile_list
    • First observedprofile_use
    • First observedrecommend
    • First observedsearch
    • First observedsearch_hybrid
    • First observedsearch_multi_query
    • First observedsearch_rerank
    • First observedsetup_answer
    • First observedsetup_apply
    • First observedsetup_start
    • First observedsnapshot_create
    • First observedsnapshot_restore
    • First observedstats

TDQS

A3.7/5.0

Scored across 33 tools

Disambiguation4/5

Most tools have clearly distinct roles, and the descriptions carefully separate collection lifecycle, ingestion, retrieval, and setup wizard operations. The search family is the main risk area: search, search_hybrid, search_rerank, search_multi_query, and get_context all overlap semantically, though their descriptions are precise enough to disambiguate with careful reading.

Naming Consistency3/5

The server uses readable lowercase snake_case throughout, but there is no single naming convention: object-first names like collection_list and document_list coexist with verb-first names like get_context and ingest_text, plus bare nouns such as health, stats, and job_status. Subfamilies are internally consistent, but the overall pattern is mixed.

Tool Count2/5

33 tools for a RAG build server is well past the 25+ 'too many' threshold. The tool count is inflated by an 8-tool search/retrieval family plus a setup wizard, profile system, and collection management layer, making the surface feel heavier than the core RAG job really requires.

Completeness4/5

The server covers the RAG lifecycle well: collection creation, ingestion from multiple sources, document management, snapshots, search, context assembly, setup wizardry, profiles, and health/stats. Minor gaps like no alias_delete or payload_index_delete are awkward but can be worked around without dead-ending an agent.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables RAG (Retrieval-Augmented Generation) capabilities with document processing, vector storage, and intelligent Q\&A using OpenAI embeddings and semantic search.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Automated RAG pipeline optimization and serving. It interviews users, builds and evaluates candidate configurations on their data, and registers the best ones as a fleet queryable via MCP.
    MIT