Skip to main content
Glama
ttpears

BookStack MCP Server

by ttpears

BookStack MCP 服务器

npm version npm downloads CI Node.js MCP License: MIT

一个 Model Context Protocol (MCP) 服务器,让 AI 助手能够全面访问您的 BookStack 文档——包括搜索、读取、创建和管理内容。

npx bookstack-mcp

功能特性

  • 20 个只读工具 + 18 个写入工具,全面覆盖 BookStack API

  • 书籍、章节、页面、书架、附件和评论——完整的 CRUD 操作

  • 支持回收站——恢复或永久删除已软删除的内容

  • 使用 Zod 进行类型安全的输入验证(自动转换字符串/数字参数,以实现广泛的客户端兼容性)

  • 所有响应中均包含嵌入式 URL 和内容预览

  • 为 HTML 编写的页面提供 Markdown 导出回退,确保 AI 客户端始终获得可用的内容

  • 默认禁用写入操作以确保安全

  • 适用于 Claude Desktop、Claude Code、LibreChat 以及任何兼容 MCP 的客户端

  • 支持 Stdio 和 Streamable HTTP 传输

Related MCP server: BookStack MCP Server

快速入门

从 npm 安装

npx bookstack-mcp

或克隆并构建

git clone https://github.com/ttpears/bookstack-mcp.git
cd bookstack-mcp
npm install && npm run build
npm start

环境变量

BOOKSTACK_BASE_URL=https://your-bookstack.com   # Required
BOOKSTACK_TOKEN_ID=your-token-id                # Required
BOOKSTACK_TOKEN_SECRET=your-token-secret        # Required
BOOKSTACK_ENABLE_WRITE=false                    # Optional, default false
BOOKSTACK_INSECURE_SKIP_TLS_VERIFY=false        # Optional, default false

安全警告: BOOKSTACK_INSECURE_SKIP_TLS_VERIFY=true 会禁用对 BookStack 发出请求的 TLS 证书验证。仅在受信任局域网内的自签名证书环境下使用——连接将容易受到中间人 (MITM) 攻击。启用此选项时,服务器会在启动时记录一条 WARNING 日志。

客户端配置

Claude Desktop

添加到您的 Claude Desktop 配置文件中:

{
  "mcpServers": {
    "bookstack": {
      "command": "npx",
      "args": ["-y", "bookstack-mcp"],
      "env": {
        "BOOKSTACK_BASE_URL": "https://your-bookstack.com",
        "BOOKSTACK_TOKEN_ID": "your-token-id",
        "BOOKSTACK_TOKEN_SECRET": "your-token-secret"
      }
    }
  }
}

LibreChat (stdio, 单用户)

添加到您的 librechat.yaml 中:

mcpServers:
  bookstack:
    command: npx
    args:
      - -y
      - bookstack-mcp
    env:
      BOOKSTACK_BASE_URL: "https://your-bookstack.com"
      BOOKSTACK_TOKEN_ID: "your-token-id"
      BOOKSTACK_TOKEN_SECRET: "your-token-secret"

LibreChat (Streamable HTTP, 推荐用于生产环境 / Docker)

将服务器作为长驻 HTTP 服务运行,并将 LibreChat 指向该 URL。这是多用户或容器化部署的正确设置方式。

以 HTTP 模式启动服务器:

MCP_TRANSPORT=http \
MCP_HTTP_PORT=8080 \
BOOKSTACK_BASE_URL=https://your-bookstack.com \
BOOKSTACK_TOKEN_ID=your-token-id \
BOOKSTACK_TOKEN_SECRET=your-token-secret \
npx bookstack-mcp

然后配置 LibreChat:

mcpServers:
  bookstack:
    type: streamable-http
    url: http://bookstack-mcp:8080/mcp

3.0.0 重大变更: 已弃用的 HTTP+SSE 传输 (GET /sse + POST /messages) 已被移除。位于 /mcp 的 Streamable HTTP 已经支持用于流式响应的 SSE,并且是当前 MCP 客户端中唯一的 HTTP 传输方式。如果您使用的旧版客户端需要旧版端点,请锁定版本至 bookstack-mcp@2.x。

HTTP 传输环境变量

变量

默认值

描述

MCP_TRANSPORT

stdio

设置为 http 以启用 HTTP 服务器

MCP_HTTP_PORT

8080

监听端口

MCP_HTTP_HOST

127.0.0.1

绑定地址。为安全起见,默认使用回环地址

MCP_HTTP_ALLOWED_HOSTS

(仅限回环)

用于 DNS 重绑定保护的 Host 请求头主机名白名单(逗号分隔)。绑定到非回环地址时必需

MCP_HTTP_PATH

/mcp

流式 HTTP 端点

当绑定到 0.0.0.0(例如在其他服务可访问的容器内)时,请将 MCP_HTTP_ALLOWED_HOSTS 设置为 LibreChat 将用于访问此服务器的主机名,例如 MCP_HTTP_ALLOWED_HOSTS=bookstack-mcp,bookstack-mcp.internal。

配置更改后请重启 LibreChat。

Claude Code (CLI)

推荐路径是使用 ttpears/claude-plugins 市场,它提供了本仓库的插件清单 (.claude-plugin/plugin.json):

/plugin marketplace add ttpears/claude-plugins
/plugin install bookstack-mcp@ttpears-plugins

然后在您的 shell 中设置 BOOKSTACK_* 环境变量,以便插件的 MCP 服务器能够进行身份验证:

export BOOKSTACK_BASE_URL=https://your-bookstack.com
export BOOKSTACK_TOKEN_ID=your-token-id
export BOOKSTACK_TOKEN_SECRET=your-token-secret

手动安装 (替代方案)

如果您不想使用市场,可以直接使用 claude mcp add 注册服务器。为每个变量重复使用 --env,将所有标志放在服务器名称之前,并使用 -- 标记 Claude Code 将要启动的命令的开始:

claude mcp add bookstack \
  --transport stdio \
  --scope user \
  --env BOOKSTACK_BASE_URL=https://your-bookstack.com \
  --env BOOKSTACK_TOKEN_ID=your-token-id \
  --env BOOKSTACK_TOKEN_SECRET=your-token-secret \
  -- npx -y bookstack-mcp

作用域决定了条目的写入位置:

作用域

存储位置

是否通过 git 共享

使用场景

local (默认)

~/.claude.json,仅限当前项目

否

在单个仓库中进行尝试

user

~/.claude.json,在每个项目中可用

否

您希望在所有地方使用 bookstack

project

仓库根目录下的 .mcp.json

是

整个团队都应该使用它

生成的配置条目如下所示(项目作用域在 .mcp.json 中,否则在 ~/.claude.json 中):

{
  "mcpServers": {
    "bookstack": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "bookstack-mcp"],
      "env": {
        "BOOKSTACK_BASE_URL": "https://your-bookstack.com",
        "BOOKSTACK_TOKEN_ID": "your-token-id",
        "BOOKSTACK_TOKEN_SECRET": "your-token-secret"
      }
    }
  }
}

关于提交 .mcp.json 的提示: Claude Code 会从当前 shell 中扩展 .mcp.json 中的 ${VAR} 和 ${VAR:-default} 引用。利用这一点可以避免将密钥提交到 git:在文件中设置 "BOOKSTACK_TOKEN_SECRET": "${BOOKSTACK_TOKEN_SECRET}",并让每位开发人员在他们的 shell 中导出该变量。

MCP 资源

书籍和页面也作为 MCP 资源公开,因此浏览资源的客户端(Claude Desktop、MCP Inspector 等)可以直接通过 @ 提及它们:

URI 模板

描述

bookstack://book/{id}

一本书,以 JSON 元数据形式返回

bookstack://page/{id}

一个页面,以 Markdown 加上 JSON 元数据块的形式返回

两个模板都支持 id 自动补全:当您输入时,服务器会搜索 BookStack 并返回匹配的 ID,这样您就不必手动记忆数字 ID。

可用工具

读取操作 (始终可用)

工具

描述

get_capabilities

服务器功能和配置

search_content

在所有内容中进行过滤搜索

search_pages

搜索页面(可选书籍过滤)

get_books / get_book

列出或获取书籍详情

get_pages / get_page

列出或获取完整页面内容

get_chapters / get_chapter

列出或获取章节详情

get_shelves / get_shelf

列出或获取书架详情

get_attachments / get_attachment

列出或获取附件详情

get_comments / get_comment

列出或获取页面评论 (BookStack v25.11+)

get_recycle_bin

列出回收站中的项目

export_page

将页面导出为 HTML、PDF、Markdown、纯文本或 ZIP

export_book

导出整本书

export_chapter

导出章节

get_recent_changes

最近更新的内容

写入操作 (需要 BOOKSTACK_ENABLE_WRITE=true)

工具

描述

create_book / delete_book

创建或删除书籍

create_chapter / delete_chapter

创建或删除章节

create_page

创建新页面 (HTML 或 Markdown)

update_page

更新内容、重命名或移动到不同的书籍/章节

delete_page

删除页面(可从回收站恢复)

create_shelf / update_shelf / delete_shelf

管理书架

create_attachment / update_attachment / delete_attachment

管理附件

create_comment / update_comment / delete_comment

管理页面评论 (v25.11+)

restore_deleted / permanently_delete

恢复或永久销毁回收站中的项目

BookStack API 设置

  1. 以管理员身份登录 BookStack

  2. 前往 设置 (Settings) > 用户 (Users) > 编辑您的用户

  3. 确保用户拥有 访问系统 API (Access System API) 权限

  4. 在 API 令牌 (API Tokens) 部分,创建一个新令牌

  5. 复制令牌 ID 和令牌密钥

安全性

  • 写入操作默认禁用

  • 生产环境请使用 HTTPS

  • 安全存储 API 令牌(切勿提交到 git)

  • 考虑使用具有有限权限的专用 BookStack 用户

开发

npm run dev          # Hot reload with tsx
npm run type-check   # Type checking only
npm run build        # Production build

许可证

MIT

Available Tools

17 tools
export_bookExport BookC

Export an entire book in various formats

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBook ID
formatYesExport format

TDQS

C2.9/5.0
Behavior2/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 states the action ('Export') but doesn't mention whether this requires authentication, affects system state, has rate limits, or what the output looks like (e.g., file download vs. text return). This leaves significant gaps for a tool that likely generates files.

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, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to scan and understand quickly.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is insufficient. It doesn't explain the export behavior (e.g., file generation, download mechanism, or content structure), which is critical given the complexity of exporting an entire book in multiple formats.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters (id and format with enum values). The description adds no additional parameter semantics beyond what's in the schema, such as explaining what 'zip' format includes or how book IDs are obtained.

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 verb ('Export') and resource ('an entire book'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like export_chapter or export_page, which export smaller components rather than the entire book.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like export_chapter for partial exports or get_book for metadata retrieval. It mentions 'various formats' but doesn't specify which formats are best for different use cases.

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

export_chapterExport ChapterC

Export a chapter in various formats

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesChapter ID
formatYesExport format

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions 'various formats' but doesn't disclose behavioral traits like whether this is a read-only operation, if it requires authentication, rate limits, or what happens during export (e.g., file creation, download). The description is minimal and lacks critical context for a mutation-like tool.

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 a single, efficient sentence with no wasted words. It's front-loaded with the core action. However, it could be more informative without sacrificing brevity.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool that likely performs an export operation. It doesn't explain return values, error conditions, or behavioral aspects like side effects. For a tool with 2 parameters and potential complexity, this is inadequate.

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

Parameters3/5

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

Schema description coverage is 100%, with clear parameter documentation (id as Chapter ID, format as Export format with enum). The description adds no additional meaning beyond the schema, such as explaining format implications or id constraints. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose3/5

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

The description 'Export a chapter in various formats' clearly states the action (export) and resource (chapter), but it's vague about scope and doesn't differentiate from siblings like export_book or export_page. It doesn't specify what 'export' entails (e.g., file generation, download link).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like export_book or export_page. It doesn't mention prerequisites (e.g., needing chapter access) or exclusions (e.g., not for attachments). Usage is implied by the name but not explicitly stated.

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

export_pageExport PageB

Export a page in various formats (PDF/ZIP provide direct BookStack download URLs)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPage ID
formatYesExport format

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It discloses that PDF/ZIP formats 'provide direct BookStack download URLs', which adds useful context about output behavior. However, it lacks details on permissions, rate limits, side effects, or what happens with other formats. For a tool with no annotations, this is minimal disclosure.

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, efficient sentence with zero waste. It front-loads the core action ('Export a page in various formats') and adds a clarifying note about specific formats. Every word earns its place, making it highly concise and well-structured.

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

Completeness3/5

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

Given 2 parameters with full schema coverage and no output schema, the description is adequate but has gaps. It covers the basic purpose and hints at format-specific behavior, but lacks details on permissions, error cases, or output structure. For a tool with no annotations and no output schema, it's minimally complete but could be more informative.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents both parameters (id and format with enum). The description adds marginal value by noting 'PDF/ZIP provide direct BookStack download URLs', which hints at format-specific behavior but doesn't explain parameter semantics beyond the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

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 verb 'Export' and resource 'a page', specifying it works with 'various formats'. It distinguishes from siblings like 'export_book' and 'export_chapter' by focusing on pages, but doesn't explicitly contrast with them. The purpose is specific and actionable.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'export_book' or 'export_chapter' is provided. The description mentions 'PDF/ZIP provide direct BookStack download URLs', which hints at behavioral differences, but doesn't give explicit usage context or prerequisites. It's left to the agent to infer based on tool names.

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

get_attachmentGet Attachment DetailsC

Get details of a specific attachment including download links

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAttachment ID

TDQS

C2.9/5.0
Behavior2/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 mentions retrieving 'download links' but doesn't specify authentication needs, rate limits, error handling, or whether the operation is read-only (implied by 'Get' but not explicit). This leaves gaps for a tool that likely involves data access.

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, efficient sentence that front-loads the core purpose ('Get details of a specific attachment') and adds a useful detail ('including download links') without any wasted words. It is appropriately sized for a simple tool.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'details' include beyond download links, potential return formats, or error cases. For a tool with one parameter but no structured output info, more context is needed to guide effective 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?

The schema description coverage is 100%, with the single parameter 'id' documented as 'Attachment ID' with a numeric type and minimum value. The description adds no additional meaning beyond this, such as format examples or context about valid IDs, so it meets the baseline for high schema coverage.

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 verb ('Get') and resource ('details of a specific attachment'), specifying it includes download links. It distinguishes from 'get_attachments' (plural) by focusing on a single attachment, but doesn't explicitly contrast with other sibling tools like export functions.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'get_attachments' for multiple attachments or export tools for downloading content. The description implies usage for retrieving details of a specific attachment but offers no context about prerequisites or exclusions.

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

get_attachmentsList AttachmentsC

List attachments (files and links) with filtering and sorting

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoPagination offset
countNoNumber of results to return
sortNoSort field
filterNoFilter criteria

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose whether this is a read-only operation, potential rate limits, authentication requirements, or what happens with large result sets beyond the schema's pagination hints. The mention of 'filtering and sorting' is minimal and doesn't explain implementation constraints.

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, efficient sentence with zero wasted words. It front-loads the core purpose ('List attachments') and succinctly adds key features ('files and links' and 'with filtering and sorting'). Every element earns its place.

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

Completeness2/5

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

For a tool with 4 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain return values, error conditions, or behavioral nuances like how filtering works (the 'filter' object has no schema). The context signals indicate complexity (nested objects, 100% schema coverage), but the description fails to compensate for missing structured data.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented in the schema itself. The description adds marginal value by implying 'filtering and sorting' map to the 'filter' and 'sort' parameters, but doesn't provide additional semantics like filterable fields, sort options, or usage examples beyond what the schema offers.

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 verb ('List') and resource ('attachments'), specifying they include 'files and links'. It distinguishes from sibling 'get_attachment' (singular) by implying a collection operation. However, it doesn't explicitly differentiate from other list-like siblings like 'get_books' or 'get_chapters' beyond the resource type.

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

Usage Guidelines2/5

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

The description mentions 'with filtering and sorting', which implies usage for refined queries, but provides no explicit guidance on when to use this tool versus alternatives like 'search_content' or 'get_recent_changes'. No prerequisites, exclusions, or comparative context are stated.

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

get_bookGet Book DetailsC

Get detailed information about a specific book

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBook ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'Get detailed information' but doesn't disclose behavioral traits like whether this is a read-only operation, if it requires authentication, what format the information returns in, or any rate limits. This leaves significant gaps for an agent.

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, efficient sentence with zero waste. It's appropriately sized for a simple lookup tool and front-loads the core purpose without unnecessary elaboration.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, how errors are handled, or any behavioral context. For a tool with siblings and potential complexity, this minimal description leaves too much undefined.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents the single 'id' parameter. The description adds no additional meaning beyond implying it's for a 'specific book', which the schema already covers with its 'Book ID' description. Baseline 3 is appropriate as the schema does the heavy lifting.

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 verb 'Get' and resource 'detailed information about a specific book', which is specific and actionable. However, it doesn't distinguish this tool from similar siblings like 'get_books' (plural) or 'get_chapter', leaving some ambiguity about scope.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_books', 'get_chapters', and 'search_content', there's no indication whether this is for single-book lookup, what context warrants its use, or any prerequisites.

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

get_booksList BooksC

List available books with advanced filtering and sorting

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoPagination offset
countNoNumber of results to return
sortNoSort field (e.g., 'name', '-created_at', 'updated_at')
filterNoFilter criteria

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral disclosure. It mentions 'advanced filtering and sorting' but doesn't describe pagination behavior (implied by offset/count parameters), rate limits, authentication requirements, error conditions, or what 'available books' means (e.g., published vs. all).

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?

Extremely concise single sentence with zero wasted words. Front-loaded with core purpose ('List available books') followed by key capabilities. Every word earns its place.

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

Completeness2/5

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

For a 4-parameter tool with no annotations and no output schema, the description is insufficient. It doesn't explain what constitutes 'available books', how results are structured, error handling, or practical usage patterns. The mention of 'advanced filtering' is vague without examples of filter criteria.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds marginal value by mentioning 'advanced filtering and sorting' which aligns with the 'filter' and 'sort' parameters, but doesn't provide additional semantic context beyond what's in the schema descriptions.

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 verb ('List') and resource ('books') with additional context about capabilities ('advanced filtering and sorting'). It distinguishes from siblings like 'get_book' (singular) and 'search_content' (broader search), but doesn't explicitly differentiate from 'get_shelves' or other list-like tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'search_content' or 'get_shelves'. The description mentions 'advanced filtering and sorting' but doesn't specify when this is preferable to simpler list operations or broader searches available among siblings.

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

get_capabilitiesGet BookStack CapabilitiesB

Get information about available BookStack MCP capabilities and current configuration

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves information, implying it's a read-only operation, but doesn't clarify aspects like authentication requirements, rate limits, error handling, or what specific 'capabilities' and 'configuration' details are returned. For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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 a single, clear sentence: 'Get information about available BookStack MCP capabilities and current configuration.' It is front-loaded with the core purpose, has no redundant words, and efficiently conveys the essential information without waste.

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

Completeness3/5

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

Given the tool has no parameters and no output schema, the description is minimally complete—it states what the tool does. However, without annotations or an output schema, it lacks details on behavioral traits (e.g., what 'capabilities' include) and return values. For a tool with zero parameters, this is adequate but leaves room for improvement in clarifying the output.

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 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to explain parameters, as there are none. It appropriately focuses on the tool's purpose without unnecessary parameter details, earning a high score for this dimension.

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's purpose: 'Get information about available BookStack MCP capabilities and current configuration.' It specifies the verb ('Get') and resource ('BookStack MCP capabilities and current configuration'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_books' or 'get_shelves', which focus on content retrieval rather than system capabilities.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for usage, or comparisons to sibling tools like 'get_books' or 'search_content'. Without such information, an agent might struggle to decide when this tool is appropriate.

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

get_chapterGet Chapter DetailsC

Get details of a specific chapter

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesChapter ID

TDQS

C2.9/5.0
Behavior2/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 states 'Get details' but doesn't specify what details are returned, if it's a read-only operation, error conditions, or performance traits. This is inadequate for a tool with zero annotation coverage.

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, efficient sentence with no wasted words. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'details' include, return format, or error handling. For a tool that likely returns structured data, this leaves significant gaps in understanding its behavior.

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

Parameters3/5

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

The input schema has 100% description coverage, with the parameter 'id' documented as 'Chapter ID'. The description adds no additional meaning beyond this, such as format examples or constraints. Baseline 3 is appropriate since the schema does the heavy lifting.

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 verb ('Get') and resource ('details of a specific chapter'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_chapters' (plural) or 'get_page'—it's clear but lacks sibling distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a chapter ID) or compare to siblings like 'get_chapters' for listing chapters or 'get_page' for page details, leaving usage context unclear.

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

get_chaptersList ChaptersC

List chapters, optionally filtered by book

ParametersJSON Schema
NameRequiredDescriptionDefault
book_idNoFilter by book ID
offsetNoPagination offset
countNoNumber of results to return

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose whether this is a read-only operation, pagination behavior (implied by offset/count but not explained), rate limits, authentication needs, or what the return format looks like (since no output schema exists).

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, efficient sentence with zero wasted words. It's front-loaded with the core purpose and includes the key optional filtering feature. Every word earns its place.

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

Completeness2/5

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

For a list tool with 3 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what 'chapters' means in this context, how results are ordered, what fields are returned, or error conditions. The agent must rely entirely on the schema for parameter details and guess at behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds minimal value by mentioning 'optionally filtered by book', which aligns with the book_id parameter but doesn't provide additional context beyond what the schema already states.

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 verb 'List' and resource 'chapters', with optional filtering by book. It distinguishes from sibling tools like get_chapter (singular) and get_books, but doesn't explicitly differentiate from get_pages or search_content which might overlap in functionality.

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

Usage Guidelines2/5

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

The description mentions optional filtering by book, but provides no guidance on when to use this tool versus alternatives like get_chapter (for a specific chapter), get_pages (for pages within chapters), or search_content (for more complex queries). No prerequisites, exclusions, or context for selection are provided.

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

get_pageGet Page ContentC

Get full content of a specific page

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPage ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool retrieves content but lacks details on permissions required, error handling (e.g., for invalid IDs), rate limits, or output format (e.g., text, HTML, metadata). This is inadequate for a tool that presumably interacts with a content system, leaving key operational traits unspecified.

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, efficient sentence that front-loads the core purpose ('Get full content of a specific page') with zero wasted words. It avoids redundancy and is appropriately sized for a simple retrieval tool, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the tool's simplicity (one parameter, no output schema, no annotations), the description is incomplete. It fails to address behavioral aspects like authentication needs, error cases, or output structure, which are critical for reliable invocation. While concise, it doesn't provide enough context for an agent to use the tool effectively beyond basic parameter passing.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'id' parameter documented as 'Page ID' with a numeric type and minimum value. The description adds no additional parameter semantics beyond implying the ID identifies a 'specific page'. Since the schema fully covers the parameter, the baseline score of 3 applies, as the description doesn't enhance understanding of the parameter's use or constraints.

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 action ('Get full content') and resource ('of a specific page'), making the purpose immediately understandable. It distinguishes from siblings like 'get_pages' (plural) and 'search_pages' by specifying retrieval of a single page's full content. However, it doesn't explicitly differentiate from 'export_page' which might serve a similar purpose, preventing a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid page ID), exclusions (e.g., not for partial content), or comparisons to siblings like 'get_pages' for lists or 'export_page' for formatted exports. This leaves the agent to infer usage from context alone.

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

get_pagesList PagesC

List pages with content previews, word counts, and contextual information

ParametersJSON Schema
NameRequiredDescriptionDefault
book_idNoFilter by book ID
chapter_idNoFilter by chapter ID
offsetNoPagination offset
countNoNumber of results to return
sortNoSort field
filterNoAdditional filter criteria

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool returns 'content previews, word counts, and contextual information,' which hints at read-only behavior, but doesn't clarify pagination details (implied by offset/count parameters), rate limits, authentication needs, or error handling. For a list operation with multiple parameters, this is insufficient.

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 a single, efficient sentence that front-loads the core purpose. It avoids redundancy and wastes no words, though it could be slightly more structured by separating purpose from output details. Overall, it's appropriately concise for a list tool.

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

Completeness3/5

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

Given the complexity (6 parameters, no annotations, no output schema), the description is minimally adequate. It states what the tool does but lacks details on usage context, behavioral traits, and output format. Without annotations or output schema, more guidance on return values and operational constraints would improve completeness.

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 description coverage is 100%, so the schema fully documents all 6 parameters. The description adds no specific parameter semantics beyond implying that results include 'content previews, word counts, and contextual information,' which relates to output rather than input. This meets the baseline for high schema coverage but doesn't enhance understanding of parameters.

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's purpose: 'List pages with content previews, word counts, and contextual information.' It specifies the verb 'List' and resource 'pages,' and mentions the returned data attributes. However, it doesn't explicitly differentiate from sibling tools like 'get_page' (singular) or 'search_pages,' which could cause confusion.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_page' (singular), 'search_pages,' and 'get_chapters,' there's no indication of whether this is for bulk listing, filtered queries, or general browsing. This lack of context makes it hard for an agent to choose appropriately.

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

get_recent_changesGet Recent ChangesC

Get recently updated content with contextual previews and change descriptions

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by content typeall
limitNoNumber of recent items to return
daysNoNumber of days back to look for changes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose permissions needed, rate limits, pagination behavior, or what 'contextual previews' and 'change descriptions' entail. The description is vague about operational traits.

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, efficient sentence with zero waste. It's appropriately sized and front-loaded with the core purpose.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral constraints, leaving significant gaps for an AI agent to understand how to use it effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents parameters. The description adds no parameter-specific information beyond implying filtering by content type and recency, which is already covered by the schema. Baseline 3 is appropriate when schema does the heavy lifting.

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 verb ('Get') and resource ('recently updated content') with additional features ('contextual previews and change descriptions'). It distinguishes from most siblings by focusing on recent changes rather than specific content retrieval or exports, though it doesn't explicitly differentiate from 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 Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like search_content or get_pages. The description implies it's for recent changes but doesn't specify scenarios, prerequisites, or exclusions.

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

get_shelfGet Shelf DetailsC

Get details of a specific book shelf including all books

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesShelf ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions retrieving details and books, but fails to specify if this is a read-only operation, requires authentication, has rate limits, or what the return format looks like (e.g., JSON structure, error handling). This is a significant gap for a tool with no annotation coverage.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly, which is ideal for conciseness.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'details' include beyond books, how the data is structured, or any behavioral aspects like permissions or errors. For a tool that retrieves data with one parameter, more context is needed to guide the agent effectively.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'id' parameter clearly documented as 'Shelf ID' with a numeric type and minimum value. The description adds no additional semantic context beyond implying it's for a 'specific' shelf, which aligns with the schema but doesn't provide extra value like format examples or usage tips.

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 verb 'Get' and resource 'details of a specific book shelf including all books', making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'get_shelves' (plural) or 'get_book', which might retrieve similar book-related data, leaving room for ambiguity in sibling distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't clarify if this should be used instead of 'get_shelves' for a single shelf or how it relates to 'get_book' for individual book details, leaving the agent to infer usage from context without explicit direction.

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

get_shelvesList ShelvesC

List available book shelves (collections) with filtering and sorting

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoPagination offset
countNoNumber of results to return
sortNoSort field
filterNoFilter criteria

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'filtering and sorting' but doesn't elaborate on how these work, what the response format looks like, whether there are rate limits, or if authentication is required. This is inadequate for a tool with 4 parameters and no output schema.

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, efficient sentence with zero waste. It's appropriately sized and front-loaded, clearly stating the tool's purpose and key features without unnecessary elaboration.

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

Completeness2/5

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

Given the complexity (4 parameters, no output schema, and no annotations), the description is incomplete. It lacks details on behavioral traits, response format, usage context relative to siblings, and doesn't compensate for the absence of annotations or output schema. This is a significant gap for a tool that likely returns structured data.

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 description coverage is 100%, so the schema already documents all parameters (offset, count, sort, filter) with descriptions. The description adds marginal value by implying filtering and sorting capabilities, but doesn't provide additional syntax, format details, or examples beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.

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's purpose with a specific verb ('List') and resource ('available book shelves (collections)'), and mentions capabilities ('filtering and sorting'). However, it doesn't explicitly distinguish this tool from its sibling 'get_shelf' (singular) or other list-like tools like 'get_books' or 'get_chapters', which would be needed for a score of 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_shelf' (for single shelf retrieval), 'search_content', or 'search_pages' (which might overlap in functionality), nor does it specify prerequisites or exclusions for usage.

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

search_contentSearch BookStack ContentC

Search across BookStack content with contextual previews and location info

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query. Use BookStack advanced search syntax like {type:page} or {book_id:5}
typeNoFilter by content type
countNoNumber of results to return (max 500)
offsetNoNumber of results to skip for pagination

TDQS

C2.9/5.0
Behavior2/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. While it mentions 'contextual previews and location info' as output characteristics, it doesn't address important behavioral aspects like authentication requirements, rate limits, error conditions, pagination behavior beyond the offset parameter, or what happens with empty results.

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, efficient sentence that communicates the core functionality without unnecessary words. It's appropriately sized and front-loaded with the essential information.

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

Completeness2/5

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

For a search tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what the search results look like (beyond mentioning 'previews and location info'), doesn't address search limitations or performance characteristics, and doesn't help differentiate from sibling tools.

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 100% schema description coverage, the baseline is 3. The description doesn't add any parameter-specific information beyond what's already in the schema descriptions, so it doesn't enhance parameter understanding beyond the structured documentation.

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's purpose as searching across BookStack content with contextual previews and location info, which is a specific verb+resource combination. However, it doesn't explicitly differentiate from its sibling 'search_pages' tool, which appears to be a more specific search variant.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'search_pages' or other get_* tools. There's no mention of prerequisites, limitations, or comparative use cases that would help an agent choose appropriately.

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

search_pagesSearch PagesC

Search specifically for pages with optional book filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query for pages
book_idNoFilter results to pages within a specific book
countNoNumber of results to return
offsetNoPagination offset

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic action ('search') without mentioning permissions, rate limits, pagination behavior (implied by 'offset' but not explained), or what happens on errors. For a search tool with 4 parameters and no annotations, this is a significant gap in transparency.

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, efficient sentence with zero waste. It's front-loaded with the core purpose and includes a key constraint ('optional book filtering'), making it easy to parse quickly. Every word earns its place.

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

Completeness2/5

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

Given the tool's complexity (4 parameters, no output schema, no annotations), the description is incomplete. It lacks details on return values, error handling, and behavioral traits. While the schema covers parameters well, the overall context for safe and effective use is insufficient, especially for a search operation that might involve pagination and filtering.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by implying that 'book_id' is for filtering, but it doesn't provide additional context like search syntax or result ordering. This meets the baseline for high schema coverage.

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's purpose: 'Search specifically for pages with optional book filtering'. It specifies the verb ('search'), resource ('pages'), and scope ('with optional book filtering'), making the intent unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'search_content' or 'get_pages', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides minimal guidance: it mentions 'optional book filtering' but doesn't explain when to use this tool versus alternatives like 'search_content' or 'get_pages'. There's no context about prerequisites, exclusions, or specific scenarios where this tool is preferred, leaving the agent with insufficient direction.

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. 17 tool updatesv2.1.1
    • First observedexport_book
    • First observedexport_chapter
    • First observedexport_page
    • First observedget_attachment
    • First observedget_attachments
    • First observedget_book
    • First observedget_books
    • First observedget_capabilities
    • First observedget_chapter
    • First observedget_chapters
    • First observedget_page
    • First observedget_pages
    • First observedget_recent_changes
    • First observedget_shelf
    • First observedget_shelves
    • First observedsearch_content
    • First observedsearch_pages

TDQS

B3.3/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have clearly distinct purposes targeting specific resources like books, chapters, pages, attachments, and shelves, with clear action distinctions (get vs. list vs. export). However, search_content and search_pages have some overlap in purpose, as both handle search operations, which could cause minor confusion for an agent.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as get_book, export_page, and search_content. All tools use snake_case with clear, descriptive verbs, making the set predictable and easy to navigate.

Tool Count4/5

With 17 tools, the count is slightly high but reasonable for a content management system like BookStack, covering resources like books, chapters, pages, shelves, and attachments. It feels comprehensive without being overwhelming, though it borders on the heavier side.

Completeness5/5

The tool surface provides complete CRUD-like coverage for the BookStack domain, including retrieval (get/list), export, search, and management of attachments and recent changes. There are no obvious gaps, and agents can perform full lifecycle operations on all core resources.

Maintenance

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers