Skip to main content
Glama
donliggett

mcp-context-window

mcp-context-window

一个为本地模型提供外部上下文缓冲区的 MCP 服务器:可持久化的会话记忆,模型可以向其中写入笔记;以及大型文档,模型可以分页浏览而无需一次性完整加载。

基于 MCP TypeScript SDK v2 构建,针对 2026-07-28 协议修订版。通过 stdio(LM Studio、Claude Desktop 或任何派生本地进程的宿主)或 Streamable HTTP 运行。


先读这个:MCP 服务器能做什么、不能做什么

没有任何 MCP 服务器能查看或修改你的上下文窗口。 MCP 严格遵循请求/响应模式——宿主调用工具,工具给出回答。服务器永远看不到对话内容,无法在消息到达模型之前拦截它们,也无法裁剪任何内容。LM Studio 在内部自行执行截断,不会就此事咨询任何服务器。

所以这不是自动滑动窗口,任何将其宣传为滑动窗口的产品都在误导你。它实际是:一个模型主动分页访问的存储区,将大部分材料保留在窗口之外,只取回所需的部分。对于 8k token 的本地模型来说,这确实非常强大——但它的生效是因为模型主动调用它,而不是因为它拦截了任何东西。

实际后果是:模型必须配合。 这里的工具描述写得具有指令性,context_guide 会返回预期的工作流程。如果你的模型忽略了这些,请在系统提示中明确说明。

一个相关说明:MCP Sampling——即允许服务器请求客户端 LLM 生成文本的机制——已在 2026-07-28 规范中弃用,官方建议"改为直接与 LLM 提供商 API 集成"。因此,本服务器自行调用 OpenAI 兼容端点。这也使其与宿主无关:同一套代码可适用于 LM Studio、Ollama、llama.cpp 或 vLLM。


Related MCP server: membot

两大部分

会话——长任务中的工作记忆

工具

用途

context_open

开始或恢复一个命名会话;显示已存储的内容

context_append

记录一个事实、决策或死胡同。固定绝不能丢失的内容

context_recall

取回最相关的条目,打包进 token 预算

context_compact

将旧条目折叠为摘要以释放预算

context_status

会话已满程度,以及是否需要压缩

context_update

固定、取消固定或删除一个条目

context_list_sessions

从之前的工作中查找会话 id

文档——太大而无法一次性阅读的材料

工具

用途

doc_ingest

加载文本或文件;分块存储,几乎不占用上下文

doc_outline

结构图:块索引、标题、大小、可选摘要

doc_search

通过关键词找到相关块并逐字返回

doc_window

按顺序读取块范围;游标自动前进

doc_summarize

总结一个范围,或整个文档

doc_list / doc_forget

管理已存储的内容

另有 context_guide,向模型解释工作流程。


快速开始

npm install
npm run build
npm test
node dist/index.js --ingest-root ./sources

或交互式探索:

npx @modelcontextprotocol/inspector node dist/index.js

LM Studio

通过 Program → Install → Edit mcp.json 编辑 ~/.lmstudio/mcp.json(Windows 上为 C:\Users\<you>\.lmstudio\mcp.json),然后重新加载 LM Studio。

{
  "mcpServers": {
    "context": {
      "command": "node",
      "args": [
        "/absolute/path/to/mcp-context-sliding/dist/index.js",
        "--ingest-root", "/absolute/path/to/your/project",
        "--budget", "4000"
      ]
    }
  }
}

这两个路径必须是绝对路径。 宿主以不可预测的工作目录将服务器作为子进程派生,因此相对路径无法解析。在命令行中,由于你控制工作目录,像 --ingest-root ./sources 这样的相对路径没有问题。

在 Windows 上,要么使用正斜杠(C:/Users/you/projects),要么将反斜杠加倍,因为单个 \ 在 JSON 字符串中是转义字符。

将 --budget 设置为模型上下文长度的大约一半。它是本服务器打包召回内容的目标值,不是 LM Studio 强制执行的限制。

--ingest-root 是让 doc_ingest 能够读取文件的配置。不设置它,服务器只接受内联文本——这是安全的默认值,因为一个仅凭模型一句话就打开任意路径的服务器是个隐患。

Docker

docker build -t mcp-context-window:latest .
{
  "mcpServers": {
    "context": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "--init",
        "-v", "mcp-context-data:/data",
        "-v", "/absolute/path/to/your/project:/ingest:ro",
        "-e", "CTX_INGEST_ROOTS=/ingest",
        "--add-host", "host.docker.internal:host-gateway",
        "mcp-context-window:latest", "--stdio"
      ]
    }
  }
}

这里有两个容易踩的坑:-i 是必需的,否则 JSON-RPC 握手永远不会发生;命名卷也是必需的,否则每次重启都会静默丢弃所有已存储的会话。从容器内部看,localhost 就是容器本身,因此 LLM 基础 URL 默认为 host.docker.internal。Docker 还要求 -v 绑定挂载的宿主机一侧必须是绝对路径。


会话的实际流程

context_open        session_id "refactor-auth"
context_append      "Goal: replace session cookies with JWT" (pinned)
context_append      "auth/middleware.ts:42 assumes a cookie is present"
context_append      "Decision: keep cookie support behind a flag for one release"
...
context_status      → 3200/4000 tokens — approaching budget
context_compact     → folds 14 old entries into one 380-token summary
context_recall      "cookie flag decision" → returns the pinned goal + the decision

以及一个文档:

doc_ingest      file_path "logs/build-failure.log"  → doc_kx91, 240 chunks
doc_search      "OutOfMemory"                       → 3 chunks, 1400 tokens
doc_window      from 118 to 121                     → the surrounding context

日志从未进入模型的上下文。三次有针对性的读取就完成了。


配置

标志

环境变量

默认值

含义

--data-dir <dir>

CTX_DATA_DIR

平台数据目录

状态存储位置

--ingest-root <dir>

CTX_INGEST_ROOTS

(无)

允许 doc_ingest 在此处读取文件。可重复。

--llm-base-url <url>

CTX_LLM_BASE_URL

http://localhost:1234/v1

OpenAI 兼容端点

--llm-model <id>

CTX_LLM_MODEL

(已加载的模型)

留空则使用当前已加载的模型

--llm-timeout <ms>

CTX_LLM_TIMEOUT_MS

120000

本地模型可能很慢

--no-llm

CTX_LLM_ENABLED=false

启用

仅使用抽取式摘要

--budget <n>

CTX_BUDGET

4000

默认召回/窗口预算

--chunk-tokens <n>

CTX_CHUNK_TOKENS

800

目标块大小

--chunk-overlap <n>

CTX_CHUNK_OVERLAP

80

块之间的重叠

--token-ratio <n>

CTX_TOKEN_RATIO

0.27

冷启动时每字符 token 数估算

--stdio / --http

CTX_TRANSPORT

stdio

传输方式

--host / --port

CTX_HTTP_HOST / CTX_HTTP_PORT

127.0.0.1 / 3001

HTTP 绑定

--audit / --no-audit

CTX_AUDIT

开启

每次调用在 stderr 输出 JSON 日志


设计说明

Token 计数针对你的实际模型进行校准。 不存在通用的分词器——Llama、Qwen 和 GPT 的分词方式各不相同——捆绑一个分词器会体积庞大且对你加载的模型不准确。因此服务器先进行低成本估算,再测量真实值:它向你的端点发送两个不同长度的样本,设置 max_tokens: 1,取两者报告的 usage.prompt_tokens 之间的斜率。斜率抵消了聊天模板的固定开销,得出每字符的真实边际成本。结果会被缓存,因此只有第一次运行是未校准的,而且它在后台运行,启动永远不会因模型可能尚未加载而阻塞。

估算值刻意偏高。低估会导致窗口溢出,截断这个服务器存在的意义就是要保护的上下文。

摘要功能降级而非失败。 如果端点不可达或没有加载模型,它会回退到抽取式摘要——TF-ISF 句子评分——这种方式即时、确定性,且在结构上不可能产生幻觉,因为它只能选择真实存在的句子。失去对已存储上下文的访问比得到更粗糙的摘要更糟糕。失败后客户端会短暂退避,因此 200 块的文档不会等待 200 次独立的 TCP 超时。

存储采用追加式 JSONL。 崩溃最多损坏最后一行,加载时会跳过该行而不是导致致命错误。用 tail 查看文件即可观察记忆的累积。压缩将原始条目标记为已取代而不是删除,因此即使压缩丢弃了重要内容,仍可从日志中恢复。

分块遵循文档结构,而非固定偏移——标题、段落和围栏代码块保持完整,每个块携带其所属的标题路径。只有真正大于整个块的块才会被硬切分。

检索采用 BM25 加时效性,不需要嵌入模型。这无需加载任何额外内容,不占用主模型旁边的 VRAM,而且是确定性的——当全部意义在于模型所见内容的可预测性时,这一点至关重要。标识符按整体和拆分两种方式索引,因此 getUserName 可以通过"user name"找到。

限制

  • 模型必须实际调用这些工具。没有任何自动机制。

  • 关键词搜索会漏掉嵌入模型能捕捉到的同义改写。

  • 在首次校准成功之前,token 计数只是估算值。

  • 两种传输方式均无认证;HTTP 因此绑定到回环地址。

  • doc_ingest 读取 UTF-8 文本。它不是 PDF 或 DOCX 提取器。

许可证

MIT

Available Tools

15 tools
context_appendA

Record something worth remembering into the session. Use this as you go — after discovering a fact, making a decision, or hitting a dead end — rather than trying to hold it all in your reply. Keep each entry self-contained: it may be read back much later without the surrounding conversation. Set pinned for facts that must never be dropped during compaction, such as the goal or a hard constraint.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNonote (default), decision, user, assistant, system
tagsNoShort labels to group entries
textYesThe content to remember, written to stand alone
pinnedNoAlways survives compaction and is always included in recall
session_idYesSession identifier. Reuse the same string across a task to accumulate memory.

TDQS

A4.4/5.0
Behavior4/5

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

Since there are no annotations, the description carries the behavioral disclosure burden. It adds useful context: entries may be read back later without surrounding conversation, and pinned entries survive compaction. It does not cover output behavior or other side effects, but the key memory-semantics are disclosed.

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 four sentences with no filler. The core purpose is front-loaded, and each remaining sentence adds essential guidance about cadence, self-containment, and pinning.

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 five-parameter tool with no output schema and no annotations, the description covers purpose, when to use it, and behavioral nuances. Minor missing context is explicit routing away from context_update, but the schema handles parameter details adequately.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining that text must stand alone and that pinned entries are protected from compaction, both of which clarify how to use the corresponding 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 opens with a specific action and resource: 'Record something worth remembering into the session.' It clearly communicates an append/write behavior and is readily distinguishable from sibling tools like context_recall, context_compact, and context_update.

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 concrete triggers for use — 'after discovering a fact, making a decision, or hitting a dead end' — and explains the intent of recording incrementally. However, it does not explicitly state when not to use this tool or name the alternative for updating existing entries, such as context_update.

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

context_compactA

Fold older entries into a single summary to free budget, keeping the most recent entries verbatim. Call this when context_status or context_append warns that the session is over budget. Pinned entries are never compacted. The originals are kept on disk and can be recovered, so this is safe to run. Use dry_run first to see what would happen.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoReport what would be compacted without doing it
session_idYesSession identifier. Reuse the same string across a task to accumulate memory.
keep_recentNoHow many of the newest entries to leave untouched (default 10)
target_tokensNoRough size of the summary produced (default 400)

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It covers key traits: pinned entries are never compacted, originals are kept on disk and recoverable, and dry_run is recommended for previewing. These are non-obvious behavioral details that an agent needs to know before calling, and they are clearly stated. The safety/reversibility disclosure is particularly strong.

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 four sentences, all essential. It front-loads the core action, then the trigger, then safety, then a recommendation. There is zero fluff; every sentence earns its place. It is compact and efficient, matching the tool's own purpose.

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

Completeness4/5

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

Given the tool's complexity (4 params, 1 required, no output schema) and the rich schema descriptions, the description is nearly complete. It covers when to use, what it does, safety, and workflow advice. The only minor gap is that it doesn't mention error conditions or the exact nature of the summary, but those are not critical for an agent to call it correctly. The description complements the schema well, earning a 4.

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 100%, so the baseline is 3 per the rubric. The description adds some contextual meaning (e.g., 'keeping the most recent entries verbatim' hints at keep_recent), but it does not elaborately explain each parameter beyond what the schema already documents. The schema descriptions for each parameter are thorough, so the description's additional value is marginal but present. This aligns with the baseline for high 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 opens with a precise verb and object: 'Fold older entries into a single summary to free budget.' It immediately distinguishes the tool from siblings by specifying the compaction behavior and the criteria for what stays verbatim. This is highly specific and leaves no ambiguity about the tool's function.

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 states the trigger: 'Call this when context_status or context_append warns that the session is over budget.' It also advises using dry_run first. This gives an agent a clear, actionable condition for when to invoke the tool, and provides a safety step. No alternatives are listed, but the trigger is so specific that it satisfies the dimension.

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

context_guideA

Explain how to use this server effectively — the intended workflow for sessions and documents. Call this once if you have not used these tools before.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description at least implicitly acknowledges it's a read-only introductory aid, but does not detail output format or what happens if called repeatedly. Some prior exposure to the tool family or server is needed to appreciate its purpose.

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 short and direct, delivering both purpose and when-to-use in two sentences, front-loading the core message without extra bulk.

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 zero-parameter tool, the description covers purpose and usage. It doesn't mention any potential side effects or the exact content, but given the simplicity, it is largely complete.

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

Parameters4/5

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

The tool has zero parameters, and the schema provides high coverage (100%), so the baseline is high. The description appropriately focuses on the tool's behavior rather than parameter details, which are irrelevant here.

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?

Description clearly states the tool explains how to use the server and the intended workflow, combining guidance with a recommendation to call it once for new users. It distinguishes itself from siblings by being meta-guidance about the tool family, not a specific operation.

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 tool explicitly tells the agent when to call it ('if you have not used these tools before') and its purpose in onboarding. It distinguishes from siblings because they perform specific operations, while this provides overarching usage guidance.

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

context_list_sessionsA

List stored sessions, newest first. Use this to find a session id from earlier work when you do not remember it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

There are no annotations, so the description carries the behavioral burden. It discloses that the tool lists stored sessions in newest-first order and implies a read-only operation. This is adequate for a simple, parameter-free listing tool, though it does not explicitly state side effects or return format.

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 fluff. The first states the action and ordering, the second gives a practical use case. Every sentence contributes 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?

For a zero-parameter list tool, the description covers everything an agent needs: what it lists, the ordering, and why to call it. Nothing essential is missing because there is no complex schema, security concern, or ambiguity requiring further disclosure.

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 exposes zero parameters, so there is no parameter-level ambiguity to resolve. The description does not need to add parameter meaning because there are none, earning the baseline score for a tool with no 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 states the tool's action ('List stored sessions') and a distinguishing detail ('newest first'). It also names the concrete use case of finding a session id, making its purpose unambiguous and distinct from the doc_* 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?

It provides a specific scenario where the tool should be used: finding a session id from earlier work. It does not mention exclusions or alternatives, but the context is concrete enough for an agent to recognize when this listing tool is appropriate.

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

context_openA

Start or resume a named memory session. Call this ONCE at the beginning of any task that will run long enough to risk losing earlier details, then reuse the same session_id for every later call. Returns what is already stored, so resuming a session after a restart tells you what you previously knew.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoHuman-readable label for this session
session_idNoReuse an existing id to resume, or omit to have one generated

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well. It discloses that the tool both starts and resumes, that it returns previously stored content, and that resuming after a restart surfaces prior knowledge. These are non-obvious behavioral details beyond what the name or schema alone could convey.

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 sentences with no filler: the core action is front-loaded, followed by a concrete usage condition and a behavioral outcome. Every sentence contributes essential information an agent needs before calling the tool.

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?

Despite lacking an output schema and annotations, the description explains what the tool returns when resuming, when it should be called, and how to manage session_id. This is sufficient for an agent to select and invoke the tool correctly in a long-running task workflow.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real operational meaning to session_id by stating it must be reused consistently across calls. It reinforces the schema's existing description without restating it verbatim, adding value for the agent's invocation strategy.

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 phrase, 'Start or resume a named memory session,' which precisely identifies the resource and action. This clearly distinguishes it from siblings like context_append, context_recall, and context_list_sessions without requiring the reader to infer meaning.

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 explicit when-to-use guidance: call once at the beginning of long-running tasks and reuse the same session_id for later calls. It does not explicitly name alternatives or state when not to use it, but the context is clear enough for an agent to decide correctly.

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

context_recallA

Retrieve the most relevant stored entries for a query, packed to fit a token budget. This is the main way to get memory back into your working context: ask for what you need rather than reading the whole session. Pinned entries are always included. Omit the query to get the most recent entries instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of entries
queryNoWhat you are looking for. Omit for most-recent ordering.
session_idYesSession identifier. Reuse the same string across a task to accumulate memory.
budget_tokensNoMaximum tokens of entries to return

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses useful traits: results are 'packed to fit a token budget,' pinned entries are always included, and omitting the query switches to most-recent ordering. These go beyond the schema and help an agent predict 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?

Four sentences with no filler. The primary action is front-loaded, followed by usage context and two key behavioral caveats. Every sentence 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 4-parameter tool with no annotations and no output schema, the description covers the main use case, query omission, pinned entries, and token budgeting. It does not specify the return shape or how limit and budget_tokens interact, but it is largely sufficient for an agent to invoke the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying query omission behavior ('Omit the query to get the most recent entries instead') and explaining the token-budget intent behind budget_tokens. It does not detail the interaction between limit and budget_tokens, but it compensates beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Retrieve the most relevant stored entries for a query.' It also distinguishes itself from siblings by calling itself 'the main way to get memory back into your working context' and contrasting with 'reading the whole session.'

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 states when to use the tool: when you need memory back into context, ask for what you need rather than reading the whole session. It also explains the no-query variant for recent entries. However, it does not explicitly name alternatives or state when not to use this tool versus siblings like context_open or doc_search.

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

context_statusA

Report how full a session is, what is pinned, and whether compaction is advisable. Cheap to call — use it to decide whether you need to compact before adding more.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession identifier. Reuse the same string across a task to accumulate memory.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description must carry behavioral disclosure. It does mention the tool is cheap to call contaminating performance traits)Skip it also lists what it reports (fullness, pinned items, compaction advice). However, it does not explicitly state that it is a read-only operation with no side effects, nor does it mention any error conditions or output format. For a read-only status tool, the read-only nature is implied but not stated, and that is an omission given the description carries the full burden without 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, no filler. The first sentence states exactly what the tool reports (fullness, pinned items, compaction advice) and the second provides the usage context. Front-loaded and every word 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?

The description clearly covers what the tool reportsheb, when to use it, and that it is cheap. Since no output schema is defined, the description compensates by listing the key diagnostic outputs. The only minor gap is precisely how the response is structured (e.g., numeric vs. textual), but for a status/decision support tool, this is sufficient.

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 single parameter session_id is fully described in the schema (100% coverage) with a clear explanation about reusing the same ID for memory accumulation. The tool description itself does not add specific details about the parameter beyond what the schema already provides, so a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool reports session fullness, pinned items, and compaction advisability. It names a specific verb ('report') and resource (session status), and distinguishes it from siblings like context_compact and context_append by focusing on status inspection rather than mutation.

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 call it ('use it to decide whether you need to compact before adding more') and characterizes the call as cheap, signaling it's a low-cost diagnostic step. This is clear guidance with a specific decision context, making alternatives obvious.

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

context_updateA

Pin, unpin, or delete a single entry by its id. Pin what must survive compaction; delete what turned out to be wrong, so it stops polluting recall.

ParametersJSON Schema
NameRequiredDescriptionDefault
deleteNoRemove the entry from recall
pinnedNoSet or clear the pin
entry_idYesEntry id, as shown in recall output
session_idYesSession identifier. Reuse the same string across a task to accumulate memory.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations available, the description carries the burden of disclosure. It explicitly mentions that pinning affects compaction survival and that deletion removes from recall, which are non-obvious behavioral consequences. It does not specify edge cases like simultaneous pin+delete, but this is acceptable for a simple mutation tool.

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 zero wasted words. The action verb and primary resource are front-loaded, and the purpose/effect follows immediately. It is perfectly sized for quick comprehension.

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 tool with two required and two optional booleans, the description adequately covers what the tool does and why. It doesn't mention the session_id parameter, but the schema's description ('Reuse the same string across a task to accumulate memory') covers that. There is no output schema, so no return-value description is needed. The only minor gap is a lack of explicit mention of unpinning behavior when pinned=false, but that is inferred.

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 covers all four parameters with descriptions, so the baseline is 3. The description adds meaningful context by explaining the purpose of each action beyond the schema's dry definitions ('survive compaction', 'stops polluting recall'), which helps agents understand the semantic intent of the boolean flags.

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

Purpose5/5

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

The description clearly states the action (pin, unpin, or delete) on a specific resource (a single entry by id), with a concise rationale for each. It distinguishes itself from siblings like context_compact and context_recall by focusing on single-entry mutation rather than bulk operations or retrieval.

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 provides clear guidance on when to pin versus delete ('Pin what must survive compaction; delete what turned out to be wrong'), which serves as an implicit usage test. It does not explicitly contrast with sibling tools like context_compact, but the context is sufficient for most agent decisions.

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

doc_forgetA

Permanently delete an ingested document and everything derived from it. Use when a document is stale or was ingested by mistake.

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYesDocument id returned by doc_ingest

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden of transparency. It discloses the destructive and irreversible nature ('permanently delete') and the scope ('everything derived from it'), which are critical side effects. It does not mention permissions or errors, but it covers the most important behavioral aspects for a deletion tool.

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 concise sentences with no redundancy. The primary action is front-loaded, and the usage guidance is appended cleanly, making it easy to parse quickly.

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 simple deletion operation with one parameter and no output schema, the description fully covers what the tool does, when to use it, and the nature of the parameter. Nothing essential is missing for an agent to correctly invoke 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 single parameter doc_id is described as 'Document id returned by doc_ingest', which adds context on how to obtain a valid value. Since schema coverage is 100% and the description reinforces the source, it goes beyond a bare identifier definition.

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

Purpose5/5

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

The description clearly states the action ('permanently delete') and the target ('an ingested document and everything derived from it'). It distinguishes itself from sibling tools like doc_ingest, doc_search, and doc_list by focusing on deletion and its cascading effect.

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 provides use cases: 'Use when a document is stale or was ingested by mistake.' This gives clear guidance on when to invoke this tool versus other document operations, with no ambiguity.

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

doc_ingestA

Load a large text into the store and split it into addressable chunks. Use this INSTEAD OF reading a big file into your context: the content stays on disk and you page through it with doc_outline, doc_search and doc_window. Accepts inline text, or a file path if the server was started with an ingest root. Returns a document id.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoThe content, passed inline
titleNoLabel for the document
doc_idNoReuse a specific id, replacing any document already stored under it
file_pathNoRead from this file instead. Requires --ingest-root to be configured.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral transparency burden and does it well: it reveals the key non-obvious behavior that content stays on disk rather than being loaded into context, and that it is split into addressable chunks. It also discloses the return value (a document id) and the ingest-root requirement. One smaller behavior, doc_id replacement removing existing stored content, is only present in the schema rather than the description, so the transparency is very good but not perfect.

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: purpose in sentence one, usage guidance and alternatives in sentence two, input modes in sentence three, and the return value in sentence four. The most critical facts are front-loaded, and there is no filler or repetition.

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 moderately complex tool with no annotations and no output schema, the description covers the full contract an agent needs: what the tool does, why it should be used, what the preconditions are, and what it returns. It also positions the tool within the wider workflow of doc_outline, doc_search and doc_window. Nothing essential for a correct invocation is missing.

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

Parameters3/5

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

The input schema already has 100% description coverage with clear, self-explanatory parameter descriptions, so the structured data is doing most of the work. The description adds a conceptual cross-reference between inline text and file_path as alternative input modes, but this largely restates what the schema already says. Descriptively, it provides little beyond the schema baseline.

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 opens with a specific, unambiguous action: 'Load a large text into the store and split it into addressable chunks.' It clearly distinguishes the tool from alternatives by saying it should be used instead of reading a large file into context, and it names the complementary paging tools (doc_outline, doc_search, doc_window). An agent can immediately understand what this tool does and how it fits with its 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?

'Use this INSTEAD OF reading a big file into your context' gives an explicit, direct rule for when this tool is the right choice. The description also explains the follow-up workflow, stating content stays on disk and is paged through with doc_outline, doc_search and doc_window, and it clarifies the file_path precondition regarding the ingest root.

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

doc_listA

List ingested documents with their ids, sizes and read positions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. 'List' implies a read-only operation and the description states what is returned, but it does not mention ordering, pagination, session scoping, or how 'read positions' are calculated. 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?

One short sentence with no filler. The action verb is front-loaded and the sentence conveys the tool's purpose and output in a compact, scannable way.

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 parameterless listing tool, the description is largely complete: it states scope ('ingested documents') and return fields. However, there is no output schema and no clarification of what 'read positions' means, leaving minor ambiguity. Still, an agent can likely invoke it correctly without additional 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?

The tool has zero parameters, so there is nothing to document beyond the schema. The description focuses on output rather than inputs, which is appropriate here. The baseline of 4 for zero-parameter tools is 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 uses a specific verb ('List') and resource ('ingested documents') and names the exact return fields (ids, sizes, read positions). This clearly differentiates it from sibling tools like doc_search, doc_summarize, or doc_ingest.

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

Usage Guidelines3/5

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

The use case is implied by the verb 'List' but there is no explicit guidance on when to choose this tool over siblings such as doc_outline or doc_window. No alternatives, exclusions, or prerequisites are mentioned.

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

doc_outlineA

Show the structure of an ingested document: every chunk with its index, heading and size. Call this right after doc_ingest to decide what is worth reading. Set summarize to also generate a one-line summary per chunk — more useful, but it runs the summarizer once per chunk, so it is slow on large documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYesDocument id returned by doc_ingest
summarizeNoGenerate and cache a short summary for each chunk
max_chunksNoOnly outline the first N chunks

TDQS

A4.2/5.0
Behavior3/5

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

Annotations are absent, so the description carries the full burden. It does disclose the performance cost of the summarize flag ('runs the summarizer once per chunk... slow on large documents'), which is a behavioral trait. However, it does not state whether the operation is read-only or has side effects (e.g., caching is mentioned only in the schema, not here), nor does it address error behavior for invalid doc_id. For a no-annotation tool, this is a moderate disclosure, hence a 3.

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 extremely concise: two sentences total. The first sentence front-loads the core purpose and output contents, while the second gives workflow context and a cost warning. Every clause earns its place, with no repetition or filler. Structure is ideal for quick agent consumption.

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 that there is no output schema and no annotations, the description must explain behavior and expected outputs. It covers the main purpose, when to call it, and the summarization cost. It explicitly lists the output components (chunk index, heading, size) and hints at the workflow. It does not describe the exact return format (e.g., list vs. map) or error cases, but for a simple outline tool this is largely sufficient. A 4 reflects that it is nearly complete without going overboard.

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 already documents all three parameters with descriptions (100% coverage), so the baseline is 3. The description adds a performance note about the summarize parameter, which goes beyond the schema's simple 'generate and cache a short summary'. However, it does not add any meaning to doc_id or max_chunks beyond what the schema provides. The added value is limited but present, so a 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Show the structure of an ingested document' and enumerates exactly what the result contains ('every chunk with its index, heading and size'). It clearly distinguishes its role from siblings like doc_summarize (whole-document summary) and doc_search by framing it as a structural overview. The purpose is unambiguous and fully stated in the first sentence.

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 an explicit when-to-use instruction: 'Call this right after doc_ingest to decide what is worth reading.' This tells the agent the exact workflow position and decision purpose. It also implies not to use it for other tasks and provides a trade-off for the summarize option. This is direct, actionable guidance that prevents misuse.

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

doc_summarizeA

Summarize a whole document or a range of its chunks. Use this to get the gist of something too large to read, before deciding which parts to pull verbatim. The whole-document summary is cached, so asking again is free.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoLast chunk index (inclusive)
fromNoFirst chunk index (inclusive)
doc_idYesDocument id returned by doc_ingest
refreshNoIgnore the cached whole-document summary
target_tokensNoRough length of the summary (default 500)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses a useful non-obvious behavior: the whole-document summary is cached, making repeat calls cheap. It doesn't explicitly state read-only side effects, but the summarization framing implies a non-destructive 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?

Three tightly written sentences, each serving a distinct purpose: what it does, when to use it, and an optimization note. The core action is front-loaded, and there is zero fluff.

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

Completeness4/5

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

Adequate coverage for a summarizer—description covers the action, use case, and a performance trait. It could mention the return format or error behavior, but no output schema exists, and the agent has enough to call it correctly. Slightly more detail on the default target_tokens would have made it a 5.

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

Parameters4/5

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

Schema coverage is 100%, so all parameters are documented. The description adds contextual value by explaining the caching model ('cached, so asking again is free'), which clarifies the refresh parameter's purpose and the cost model. This goes beyond the schema's field-level 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?

States a specific verb ('Summarize') and a clear resource ('a whole document or a range of its chunks'), and frames it as a gist-gathering step before verbatim retrieval, which differentiates it from sibling tools like doc_search or doc_outline. The language 'get the gist' clarifies exactly what problem it solves.

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?

Provides a clear use case: 'Use this to get the gist of something too large to read, before deciding which parts to pull verbatim.' This implies when to use it (large documents) and hints at alternatives for verbatim extraction, though it doesn't name them explicitly. Lacks an explicit when-not-to-use, so not a 5.

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

doc_windowA

Read a range of chunks verbatim. This is the sliding window: ask for chunks 0-2, then 3-5, and so on, keeping each read inside your budget. Omit from/to to continue from where the last window left off — the read cursor is stored server-side, so sequential paging works without you tracking position.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoLast chunk index (inclusive)
fromNoFirst chunk index (inclusive)
resetNoMove the cursor back to the start
doc_idYesDocument id returned by doc_ingest
budget_tokensNoStop before exceeding this many tokens

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It reveals important stateful behavior: the read cursor is stored server-side, so sequential paging works without the agent tracking position. It also explains budget behavior and the verbatim read nature, which is strong for a read tool.

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 three sentences with no filler. It front-loads the core purpose, then adds the operational pattern and cursor behavior in a compact, readable way. Every sentence 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?

The tool has moderate complexity due to its server-side cursor and budget parameter, and the description covers these well. There is no output schema, but the description does not need to fully specify return format because the read semantics and paging behavior are clear. Minor gaps like error behavior or what happens on a fresh cursor are acceptable.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining how from/to relate to sliding-window reads, and by clarifying that omitting them continues from the server-stored cursor. This extra context justifies an above-baseline score.

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: 'Read a range of chunks verbatim.' This clearly distinguishes doc_window from siblings like doc_search, doc_summarize, and doc_outline, which do not provide verbatim chunk reads. The sliding-window framing further clarifies its unique role.

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 practical usage context: it explains the sliding-window pattern, how to stay within budget, and how to continue paging by omitting from/to. It does not explicitly name alternatives or state when not to use this tool, 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.

Tool Schema Changelog

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

  1. 15 tool updatesv1.0.0
    • First observedcontext_append
    • First observedcontext_compact
    • First observedcontext_guide
    • First observedcontext_list_sessions
    • First observedcontext_open
    • First observedcontext_recall
    • First observedcontext_status
    • First observedcontext_update
    • First observeddoc_forget
    • First observeddoc_ingest
    • First observeddoc_list
    • First observeddoc_outline
    • First observeddoc_search
    • First observeddoc_summarize
    • First observeddoc_window

TDQS

A4.3/5.0

Scored across 15 tools

Disambiguation5/5

The tools are cleanly divided into context/session memory tools and document ingestion tools, with each serving a distinct operation: append, recall, compact, status, update, ingest, outline, window, search, summarize, list, and forget. Even the two retrieval-style tools, context_recall and doc_search, are clearly scoped to different stores by their descriptions.

Naming Consistency4/5

All names are lowercase snake_case and consistently grouped with context_ and doc_ prefixes, mostly following a verb-action pattern. Minor deviations exist: context_status and doc_window use nouns as commands, but the overall convention is readable and predictable.

Tool Count5/5

At 15 tools, the server is at the upper edge of a well-scoped set, but every tool maps to a distinct and useful operation across two related subdomains. There are no redundant utilities, and the count feels justified for the stated context-window and document-management purpose.

Completeness4/5

The server covers the core session lifecycle (open/resume, append, recall, compact, status, update, list) and the document lifecycle (ingest, outline, read, search, summarize, list, forget). The main gap is the absence of an explicit session deletion or close tool, though agents can still work around this by leaving sessions unused.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides persistent session memory for AI assistants, enabling them to store, search, and retrieve conversation summaries across sessions via the Model Context Protocol.
    10
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides a persistent, versioned, and searchable context store for AI agents with local embedding and hybrid search.
    285 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides a unified context layer for Cursor's agent with lossless token savings and verifiable memory, enabling efficient code exploration and cross-session continuity.
    6 npm
    1
    MIT