Skip to main content
Glama

OpenFic MCP

English · 中文 · Tool catalog / 工具清单

OpenFic MCP is a standalone Model Context Protocol server for OpenFic. It communicates only through OpenFic's public HTTP API. It does not read the database or import OpenFic backend code.

English

What you need

  • A reachable OpenFic 0.9.2 backend. It may run locally, in Docker, on a server, or behind the OpenFic desktop application.

  • Python 3.12+ and uv.

  • Any MCP client that can launch a local command through stdio.

OpenFic and this MCP do not need to share a machine, folder, or container. The MCP only needs to reach the OpenFic HTTP address.

Install

Clone or download this repository, then create a local configuration file:

git clone https://github.com/handsomer89/Openfic-MCP.git
cd Openfic-MCP
uv sync --extra dev
cp .env.example .env

On Windows PowerShell, use this copy command instead:

Copy-Item .env.example .env

Edit .env to point to OpenFic.

OpenFic location

Example configuration

Same computer, default port

OPENFIC_BASE_URL=http://127.0.0.1:8000

Another computer, Docker host, reverse proxy, or server

OPENFIC_BASE_URL=http://openfic.example:8000 and OPENFIC_ALLOW_NON_LOOPBACK=true

Keep OPENFIC_API_PREFIX=/api/v1 unless your OpenFic deployment uses a different API prefix.

Connect an MCP client

Use the following process configuration in your MCP client. Replace the directory with the absolute path to this repository; on Windows, use the absolute path to uv.exe when uv is not on PATH.

{
  "command": "uv",
  "args": ["run", "--directory", "/absolute/path/to/Openfic-MCP", "openfic-mcp"]
}

This server uses stdio: the client starts it as a child process, sends MCP messages over standard input, and receives responses on standard output. Restart the client after changing .env or its MCP configuration. Vendor-specific examples are in docs/client-config.md.

Call openfic_health after connecting. A healthy OpenFic 0.9.2 backend is ready for the supported tools below.

Permissions and deletion safety

The default configuration is read-only:

OPENFIC_MCP_READ_ONLY=true
OPENFIC_MCP_WRITE_SCOPES=

To enable only the write groups you need, change the file and restart the MCP client:

OPENFIC_MCP_READ_ONLY=false
OPENFIC_MCP_WRITE_SCOPES=chapters,characters,notes

Available groups are projects, volumes, chapters, characters, notes, and worldbooks. Write tools are registered only for selected groups.

delete_chapter, delete_character, delete_note, delete_note_category, and delete_worldbook_entry are irreversible. Each requires its write group and the explicit argument confirm=true. There are intentionally no project, volume, or whole-worldbook deletion tools.

Read a project's worldbook without an ID

OpenFic's upstream project-worldbook lookup can create an empty worldbook when none exists. This MCP deliberately avoids that endpoint. To enable safe project-based worldbook reading, configure known relationships locally:

OPENFIC_PROJECT_WORLDBOOKS={"project-id":"world-info-id"}

Restart the client and use read_project_worldbook(project_id). It returns the configured worldbook and entry bodies without creating anything.

Docker and desktop apps

  • OpenFic in Docker: set OPENFIC_BASE_URL to an address reachable from the MCP process. If both containers are on the same Docker network, use the OpenFic service name and port. If MCP runs on the host, use the Docker-published host address and port.

  • OpenFic desktop application: point the MCP at the same backend URL used by the app. Some desktop applications choose a new local port at each launch; update OPENFIC_BASE_URL and restart the MCP client when that happens.

  • MCP in Docker: compose.mcp.yml builds a stdio MCP container for an MCP-capable host to launch. It is not an unauthenticated public API service.

The optional HTTP MCP transport has no authentication. Do not expose it to a LAN or the internet; stdio is the recommended transport.

Verify and troubleshoot

uv run ruff check .
uv run mypy src
uv run pytest

Windows users can also run ./scripts/check-openfic.ps1 to test the configured OpenFic endpoint.

Problem

Fix

openfic_health cannot connect

Check that OpenFic is running and that OPENFIC_BASE_URL, port, and API prefix are correct. Set OPENFIC_ALLOW_NON_LOOPBACK=true only for a trusted non-local address.

Tools do not appear

Confirm the client starts this repository's openfic-mcp command, then restart the client.

Write tools do not appear

Set OPENFIC_MCP_READ_ONLY=false, add the required write group, and restart the client.

Deletion is rejected

Use the exact item ID and pass confirm=true.

Chapter update conflicts

Read the chapter again and pass its latest updated_at as expected_updated_at.

Project worldbook cannot be read

Add OPENFIC_PROJECT_WORLDBOOKS and restart the client.

Never commit .env. It can contain private server addresses and local permission choices; commit .env.example instead.

Related MCP server: OpenProject MCP

中文

使用条件

  • 可访问的 OpenFic 0.9.2 后端:可以在本机、Docker、服务器,或 OpenFic 桌面应用所使用的后端中运行。

  • Python 3.12+ 与 uv

  • 任意能通过 stdio 启动本地命令的 MCP 客户端。

OpenFic 与 MCP 不必在同一台设备、目录或容器中;MCP 只需要能访问 OpenFic 的 HTTP 地址。

安装与连接

克隆或下载本仓库后,安装依赖并创建本地配置:

git clone https://github.com/handsomer89/Openfic-MCP.git
cd Openfic-MCP
uv sync --extra dev
cp .env.example .env

Windows PowerShell 请改用:

Copy-Item .env.example .env

编辑 .env。本机默认 OpenFic 使用:

OPENFIC_BASE_URL=http://127.0.0.1:8000

若 OpenFic 在另一台设备、Docker 宿主机、反向代理或服务器上,填写可访问的实际地址,并显式允许非本机地址:

OPENFIC_BASE_URL=http://openfic.example:8000
OPENFIC_ALLOW_NON_LOOPBACK=true

在你所用 MCP 客户端中配置以下进程。将目录改为本仓库的绝对路径;若系统找不到 uv,请将 command 改为 uvuv.exe 的绝对路径。

{
  "command": "uv",
  "args": ["run", "--directory", "/Openfic-MCP 的绝对路径", "openfic-mcp"]
}

本服务使用 stdio:客户端将它作为子进程启动。修改 .env 或客户端配置后,必须重启 MCP 客户端。不同客户端的配置示例见 docs/client-config.md。连接后先调用 openfic_health 检查 OpenFic 状态与版本。

权限与删除保护

默认只读:

OPENFIC_MCP_READ_ONLY=true
OPENFIC_MCP_WRITE_SCOPES=

需要写入时,只开放实际需要的类别并重启客户端:

OPENFIC_MCP_READ_ONLY=false
OPENFIC_MCP_WRITE_SCOPES=chapters,characters,notes

可选类别:projects(项目)、volumes(卷)、chapters(章节)、characters(角色)、notes(笔记)、worldbooks(世界书)。只有已开放类别的写入工具会出现。

delete_chapterdelete_characterdelete_notedelete_note_categorydelete_worldbook_entry 都不可恢复;每次调用必须同时开放对应类别,并传入 confirm=true。本 MCP 没有项目、卷或整本世界书的删除工具。

让 AI 直接读取项目世界书

OpenFic 上游的“按项目获取世界书”接口可能在世界书不存在时创建空数据。本 MCP 不调用该接口。请在本地 .env 中登记已有映射:

OPENFIC_PROJECT_WORLDBOOKS={"项目ID":"world_info_id"}

重启客户端后使用 read_project_worldbook(project_id);它会读取已配置世界书与条目正文,不会创建世界书。

Docker 与桌面应用

  • Docker 中的 OpenFic: OPENFIC_BASE_URL 填写 MCP 进程能够访问的地址。两个容器处于同一 Docker 网络时,可填写 OpenFic 服务名和端口;MCP 运行在宿主机时,填写 Docker 映射到宿主机的地址与端口。

  • OpenFic 桌面应用: MCP 与桌面应用连接同一个后端即可编辑同一份数据。若桌面应用每次启动时动态分配本机端口,请同步更新 OPENFIC_BASE_URL 并重启 MCP 客户端。

  • Docker 中的 MCP: compose.mcp.yml 构建的是由 MCP 宿主启动的 stdio 容器,不是需要对外暴露端口的无认证服务。

可选 HTTP MCP 传输没有认证,不应暴露到局域网或公网;推荐使用默认 stdio

验证与排错

uv run ruff check .
uv run mypy src
uv run pytest

Windows 可额外运行 ./scripts/check-openfic.ps1 检查当前 .env 指向的 OpenFic。

问题

处理方式

openfic_health 无法连接

检查 OpenFic 是否运行、地址/端口/API 前缀是否正确;仅在可信的非本机地址上设为 OPENFIC_ALLOW_NON_LOOPBACK=true

客户端没有工具

确认客户端启动的是本仓库的 openfic-mcp,然后重启客户端。

没有写入工具

设置 OPENFIC_MCP_READ_ONLY=false、加入所需类别,并重启客户端。

删除被拒绝

使用正确的条目 ID,并传入 confirm=true

更新章节冲突

重新读取章节,并将最新 updated_at 作为 expected_updated_at 传入。

不能按项目读取世界书

设置 OPENFIC_PROJECT_WORLDBOOKS 后重启客户端。

请勿提交 .env;它可能包含私有服务器地址和本地权限选择。应提交 .env.example 作为配置模板。

Tool catalog / 工具清单

Area / 分类

Tool / 工具名

Purpose / 用途

System / 系统

openfic_health

Check OpenFic status and version / 检查 OpenFic 状态与版本

Projects / 项目

list_projects, get_project, get_project_summary

List, inspect, and summarize projects / 列出、读取与汇总项目

Projects / 项目

create_project, update_project

Create and update projects / 创建与修改项目

Volumes / 卷

list_volumes, get_volume

List and inspect volumes / 列出与读取卷

Volumes / 卷

create_volume, update_volume

Create and update volumes / 创建与修改卷

Chapters / 章节

list_chapters, get_chapter, search_chapters

Read outline, body, and search text / 读取目录、正文与搜索

Chapters / 章节

create_chapter, update_chapter, move_chapter

Create, update, and move chapters / 创建、修改与移动章节

Chapters / 章节

delete_chapter

Delete one chapter; requires confirm=true / 删除单章;需 confirm=true

Summaries / 摘要

list_chapter_summaries, list_long_term_summaries

Read chapter and interval summaries / 读取章节与区间摘要

Characters / 角色

list_characters, get_character, search_characters

List, inspect, and search characters / 列出、读取与搜索角色

Characters / 角色

create_character, update_character, delete_character

Create, update, delete one character; deletion requires confirm=true / 创建、修改、删除单个角色;删除需确认

Notes / 笔记

list_notes, get_note, search_notes

Read note tree, body, and search / 读取笔记树、正文与搜索

Notes / 笔记

create_note, update_note, delete_note

Create, update, delete one note; deletion requires confirm=true / 创建、修改、删除单条笔记;删除需确认

Notes / 笔记

create_note_category, update_note_category, delete_note_category

Create, rename, delete one category; deletion requires confirm=true / 创建、重命名、删除分类;删除需确认

Worldbooks / 世界书

get_worldbook, read_project_worldbook

Read by ID or configured project / 按 ID 或已配置项目读取

Worldbooks / 世界书

list_worldbook_entries, get_worldbook_entry, search_worldbook_entries

List, read, and search entries / 列表、读取与搜索条目

Worldbooks / 世界书

create_worldbook_entry, update_worldbook_entry, delete_worldbook_entry

Create, update, delete one entry; deletion requires confirm=true / 创建、修改、删除单个条目;删除需确认

Available Tools

22 tools
get_chapterB

Get a chapter, optionally limiting returned body characters.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_charsNo
chapter_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavioral traits, but it only adds the max_chars limiting behavior. It does not state whether the operation is read-only, how errors are handled, or any other constraints, leaving the agent with limited understanding.

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, concise sentence that directly states the primary action. There is no redundancy or wasted words, making it easy to parse quickly.

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

Completeness3/5

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

For a simple retrieval tool with an output schema, the description is functional but sparse. It covers the core operation (getting a chapter) and the optional param, but lacks comparison to sibling tools or edge-case context, making it adequate but not comprehensive.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies max_chars as a limiter on returned body characters, but leaves chapter_id undefined and the term 'body' ambiguous, providing minimal added value over the raw 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 'Get' and a clear resource 'chapter', making the tool's purpose immediately obvious. It distinguishes from sibling tools like list_chapters and search_chapters, which focus on enumeration or querying.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as list_chapters or search_chapters. The mention of 'optionally limiting returned body characters' is a parameter feature, not a usage guideline, leaving the agent without any contextual direction.

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

get_characterC

Get a character including its description.

ParametersJSON Schema
NameRequiredDescriptionDefault
character_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it only notes that the result includes a description. It does not disclose read-only status, error behavior, or authentication requirements, which is a significant gap for a tool invocation.

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

Conciseness3/5

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

The description is a single concise sentence with no wasted words, but it is under-specified. It prioritizes brevity over actionable detail, so while it is structurally fine, it does not fully earn its place due to missing important 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?

The tool is simple with one required parameter and an output schema, but the description does not provide enough contextual information for an AI agent to select it appropriately among many sibling character tools, nor does it clarify behavior beyond the minimal 'get.'

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

Parameters1/5

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

The input schema has zero description coverage for character_id, and the tool description does not explain what the parameter represents or how to format it. The name 'character_id' is self-evident, but the description adds no additional meaning to compensate for the lack of schema 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 action ('Get') and the resource ('a character'), including a hint about content ('including its description'). However, it does not explicitly distinguish this from sibling tools like list_characters or search_characters, though the singular phrasing and required character_id imply a single record fetch.

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 usage guidance is provided. The description does not mention when to use this tool over list_characters or search_characters, nor does it state any prerequisites or alternatives.

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

get_noteB

Get a note including its content.

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided. The description states the tool performs a read operation and returns content, but it does not disclose error behavior, authorization, or whether the content is full text versus a summary. Still, 'including its content' adds some clarity beyond the tool name.

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 one short sentence, front-loaded with the verb and resource, and contains no filler or redundant wording. Every word earns its place.

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

Completeness3/5

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

The tool is simple with one parameter and an output schema, but the description lacks any hint about how note_id is obtained or when this tool is preferred over list_notes/search_notes. It is minimally adequate.

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

Parameters2/5

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

The input schema has one required parameter, note_id, with 0% schema description coverage. The description does not explain note_id or its format; it only relies on the schema's title 'Note Id' and the tool's purpose.

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 the specific verb 'Get' with the resource 'note' and explicitly notes 'including its content,' which differentiates this from sibling list_notes/search_notes (which likely return metadata or search results). It clearly states what the tool does.

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 about when to choose get_note over list_notes or search_notes, and no exclusions or alternatives are mentioned. The intended usage is only implied by the name and the phrase 'including its content.'

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

get_projectB

Get details of a single OpenFic project.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits, but it only states a read operation. It does not mention authorization needs, error behavior, or how 'details' differ from 'summary'. This is minimal and lacks 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, front-loaded sentence without redundant words. It is appropriately sized for the tool's simplicity.

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?

Though the tool is simple and has an output schema, the description lacks usage context and differentiation from get_project_summary. It is barely adequate for a basic get operation but not fully complete given the sibling tools.

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

Parameters2/5

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

The input schema provides only a parameter name 'project_id' with no description, and schema coverage is 0%. The description does not elaborate on the parameter format, how to obtain the ID, or any constraints, failing to compensate for the missing schema details.

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 verb ('Get') and resource ('details of a single OpenFic project'), distinguishing it from list_projects (plural) and get_project_summary (summary vs. details). The scope is specific and unambiguous.

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 siblings like get_project_summary or list_projects. There is no mention of context, prerequisites, or exclusions, leaving the agent to infer usage.

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

get_project_summaryB

Get a compact project summary, including description and writing statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. It only states basic functionality ('Get a compact project summary') and does not mention read-only nature, response format, or any potential limitations or side effects. The word 'compact' is vague but not a meaningful behavioral 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 sentence that is front-loaded and free of extraneous words. It conveys the core purpose and key content details efficiently, earning a perfect score.

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

Completeness3/5

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

Given the simplicity of the tool (one parameter for a simple get operation) and the presence of an output schema, the description is minimally adequate. However, it lacks usage differentiation from get_project and does not clarify parameter semantics, leaving gaps for an agent deciding between sibling tools.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not mention project_id. While the parameter name is self-explanatory, the description fails to explicitly state that a project_id must be provided or how it is used, placing the full burden on the agent to infer from the parameter name alone.

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 ('Get') and resource ('project summary') with detail ('compact', 'including description and writing statistics'). It clearly distinguishes from sibling tools like get_project or list_projects by indicating a summarized view, not a full project detail or list.

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 about when to use this tool vs. alternatives. It does not mention that get_project should be used for full details, or that this is the right choice when only a summary/stats are needed. The agent receives no decision context.

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

get_volumeB

Get details of a single OpenFic volume.

ParametersJSON Schema
NameRequiredDescriptionDefault
volume_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden for behavioral disclosure. However, it does not state that the operation is read-only, nor does it mention potential errors, authentication, or any side effects. The verb 'get' implicitly suggests read-only, but the description adds no explicit behavioral context beyond the name.

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, coherent sentence with no superfluous words. It is front-loaded and easily parseable, making it 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 the tool's low complexity (one parameter) and the presence of an output schema, the description is minimally adequate but lacks context about how to obtain a volume_id and what constitutes 'details'. It does not reference sibling tools or error behavior, leaving some gaps for a complete understanding.

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

Parameters2/5

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

The input schema has one parameter (volume_id) with no description, and the tool description does not mention the parameter at all. Schema description coverage is 0%, so the description fails to compensate by explaining where the ID comes from or its format. The parameter is self-explanatory by name alone, but the description adds no value.

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 function with a specific verb ('Get') and resource ('details of a single OpenFic volume'). It distinguishes itself from sibling tools like 'list_volumes' by specifying 'single', making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description provides no explicit guidance on when to use this tool or alternatives. Usage is only implied by the tool's name and the presence of sibling tools like 'list_volumes'. There is no mention of when not to use it or any recommended workflow.

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

get_worldbookC

Get a worldbook by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
world_info_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, but 'Get' only implies a read operation. It does not disclose behavior such as error handling, authentication needs, or whether the result includes associated entries.

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, front-loaded sentence with no redundant or filler content. It is appropriately sized for a simple lookup 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?

The simple one-parameter interface and existing output schema mean the basic purpose is covered, but the lack of usage guidance and behavioral notes leaves gaps in an agent's ability to choose correctly among sibling tools.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description only refers to 'its ID' without explaining the world_info_id parameter's format, source, or relationship to worldbook entries. This adds minimal semantic value beyond the parameter name.

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 states a clear action ('Get') and resource ('worldbook'), with a specific retrieval criterion ('by its ID'). It differentiates from list/search siblings but does not address similar sibling 'read_project_worldbook', so it's clear but not fully disambiguated.

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_worldbook_entry' or 'read_project_worldbook'. There are no prerequisites, exclusions, or contextual hints.

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

get_worldbook_entryC

Get a worldbook entry including content.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosure. 'Get' implies a non-mutating read, and 'including content' tells the agent the response includes the full entry content, which is useful. However, it does not disclose error behavior (e.g., not found) or any other context that would be helpful.

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, concise sentence with no wasted words. It is syntactically clear and front-loads the verb and resource. However, it is minimal and could be slightly more structured, though it is not verbose.

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 param) and the presence of an output schema, the description does not need to detail return values. However, it lacks guidance on when to use the tool and does not explain the entry_id parameter, making it incomplete for an agent to select and invoke confidently.

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

Parameters1/5

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

The schema has only one parameter (entry_id) with no description (0% coverage). The description does not mention the parameter at all, nor does it explain that the entry is retrieved by its ID. This leaves the agent without any additional meaning beyond the parameter name itself.

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

Purpose4/5

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

The description uses a specific verb ('Get') and resource ('worldbook entry'), and adds 'including content' to distinguish from list-only tools. However, it does not explicitly differentiate from siblings like list_worldbook_entries or search_worldbook_entries beyond implying retrieval by ID.

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. The description does not mention that this should be used when you already have an entry_id, nor does it reference sibling tools like search_worldbook_entries or list_worldbook_entries.

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

list_chaptersA

Get a project's volume/chapter outline without chapter bodies.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/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 full burden. It explicitly discloses that chapter bodies are excluded, which is critical behavioral information. However, it does not mention pagination, filtering, or access requirements, but for a simple list operation this is sufficient.

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 entire description is a single sentence with no filler. It front-loads the action and resource, then adds a crucial qualifier. Zero wasted words.

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

Completeness4/5

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

The tool is simple (one parameter, output schema present). The description covers purpose and scope, and the output schema handles return format. It does not mention whether the outline is a flat list or hierarchical, but that's an edge case. Overall, sufficiently complete for a straightforward list tool.

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 only parameter, project_id, is self-explanatory from its name and schema type. The description does not add meaning beyond saying 'a project's', but the schema already provides adequate detail for a single standard identifier. Schema coverage is 0%, but minimal compensation is needed here.

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

Purpose5/5

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

The description uses specific verb 'Get' and clearly identifies the resource as 'project's volume/chapter outline', distinguishing it from tools like get_chapter which would return full content. The phrase 'without chapter bodies' further specifies scope, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description implies when to use this tool (when you need an outline, not the full text) and differentiates it from content-retrieval tools. It does not explicitly name sister tools or state exclusions, but the scope qualifier 'without chapter bodies' provides clear usage context.

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

list_chapter_summariesA

List generated chapter summaries. Use page_size=50 to read recent chapter-summary context before writing.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
queryNo
page_sizeNo
volume_idNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It only restates the function and offers a parameter tip, without explaining pagination behavior, filtering semantics, or any side effects. The agent gets little insight into how the tool actually behaves.

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 short sentences: the first states the purpose, the second offers a practical usage tip. Every word earns its place, and it is well-structured and front-loaded.

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?

While an output schema exists, the description lacks guidance on using the filter parameters and what 'generated' implies. It is sufficient for a simple call but incomplete for a full understanding of the tool's capabilities, especially given the 0% schema description coverage.

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

Parameters2/5

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

The schema has 5 parameters with 0% description coverage. The description only mentions page_size with a specific value recommendation, but does not explain the meaning of query, volume_id, or project_id. This is inadequate compensation for the schema gap.

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

Purpose5/5

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

The description 'List generated chapter summaries' clearly states the action (list) and the resource (generated chapter summaries), distinguishing it from sibling tools like list_chapters or list_long_term_summaries. This is specific and unambiguous.

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

Usage Guidelines4/5

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

The description provides a concrete usage scenario: 'Use page_size=50 to read recent chapter-summary context before writing.' This tells the agent when to use the tool (before writing) and how to configure it, though it does not explicitly mention alternatives or exclusions.

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

list_charactersA

List characters in an OpenFic project.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. 'List' implies a read-only operation, which is helpful, but it does not mention pagination, ordering, or other behavioral details that could be relevant for a listing 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?

One short, front-loaded sentence with no wasted words. Perfectly concise for a simple list tool.

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

Completeness4/5

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

For a simple tool with one required parameter and an output schema present, the description is adequate. It could mention pagination or return details, but the output schema may cover that.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explicitly explain the project_id parameter. Although the parameter name is self-explanatory, the description fails to compensate for the schema gap.

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

Purpose5/5

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

The description uses a specific verb 'List' plus the resource 'characters' and scope 'in an OpenFic project,' clearly distinguishing it from sibling tools like get_character and search_characters.

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 usage is implied by the tool name and description, but there are no explicit statements about when to use this over alternatives. No exclusions or preconditions are mentioned.

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

list_long_term_summariesA

List generated long-term (interval) summaries. Use page_size=100 to read all available interval context before writing.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
queryNo
page_sizeNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It implies a read-only operation and suggests using it to gather context. However, it does not disclose pagination behavior, permissions, or the nature of 'generated' summaries, leaving some room for ambiguity.

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

Conciseness5/5

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

Two sentences, each earning its place. The first states purpose, the second gives a key usage tip. No redundant information; front-loaded and compact.

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

Completeness3/5

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

For a list tool with 4 parameters and no annotations, the description is thin. It provides one useful tip but does not clarify the required project_id or the query filter. However, an output schema exists, so return values are covered elsewhere. Overall, adequate but with gaps.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It only mentions page_size, giving it meaning ('to read all available interval context'). No explanation is provided for project_id, page, or query, leaving most parameters semantically unexplained.

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

Purpose5/5

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

The description clearly states a specific action ('List') and resource ('generated long-term (interval) summaries'). This distinguishes it from sibling tools like list_chapter_summaries by specifying the 'long-term (interval)' type. The purpose is immediately clear.

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 explicit usage guidance: 'Use page_size=100 to read all available interval context before writing.' This gives a clear scenario (before writing) and a specific parameter recommendation. It does not explicitly name alternatives, but the context is actionable.

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

list_notesA

Get a project's note/category tree without note bodies.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/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 full burden. It discloses a key behavioral trait: the return excludes note bodies, which is critical for setting expectations. It also indicates a tree structure, implying hierarchy. This is meaningful disclosure beyond the schema, though it does not cover permissions or other side-effect info.

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

Conciseness5/5

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

The description is a single sentence with no redundant words. Every term ('project', 'note/category tree', 'without note bodies') carries meaningful information, demonstrating excellent conciseness and front-loaded structure.

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 low complexity (one parameter) and the presence of an output schema, the description is fairly complete. It explains the main output scope and the exclusion of bodies, which is sufficient for an agent to select and invoke the tool. It lacks some context about alternatives, but that is partially addressed elsewhere.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only implies that project_id identifies the project via the phrase 'a project's', which adds minimal meaning over the parameter name itself. There is no format guidance, example, or elaboration, so the parameter semantics are barely enhanced.

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

Purpose5/5

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

The description clearly states a specific verb ('Get') and resource ('a project's note/category tree'), with a key differentiator ('without note bodies') that distinguishes it from sibling tools like get_note or search_notes. This is exactly the kind of specific verb+resource+scope that merits a top score.

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

Usage Guidelines3/5

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

The description implies usage by saying 'without note bodies', suggesting this is for structural viewing rather than content retrieval. However, it does not explicitly name alternatives or state when not to use it, so the guidance is implied rather than explicit.

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

list_projectsC

List OpenFic projects with pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 bears the full burden of behavioral disclosure. It only mentions that the tool lists with pagination, which is already implied by the schema parameters. It does not disclose whether authentication is needed, whether the list is scoped to accessible projects, or any rate limits or sorting behaviors.

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, front-loaded sentence with no wasted words. It effectively communicates the core function and pagination feature, earning a high score for conciseness and structure.

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's simplicity (two optional parameters) and the presence of an output schema, the description is minimally viable but not complete. It lacks usage guidance, behavioral details, and any interaction with sibling tools, leaving gaps that a more thorough description could fill.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the meaning or constraints of the 'page' and 'page_size' parameters beyond the generic word 'pagination'. It fails to compensate for the schema's total lack of field descriptions, leaving users without details on defaults, boundaries, or result formats.

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

Purpose4/5

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

The description uses a specific verb 'List' and a clear resource 'OpenFic projects', making its purpose obvious. It is distinguishable from sibling tools like get_project (single project) and list_volumes/list_chapters (different resources), though it does not explicitly name alternatives or scope constraints beyond pagination.

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 such as get_project or search tools. There are no explicit when-to-use or when-not-to-use instructions; the context is neither stated nor implied beyond the basic action of listing projects.

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

list_volumesA

List volumes of an OpenFic project in display order.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations provided, so the description carries the full burden. It discloses the ordering behavior ('display order'), but does not explicitly mention read-only nature, permissions, or error behavior. While 'list' implies safety, the description adds only minimal behavioral context beyond the tool name.

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

Conciseness5/5

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

The description is a single sentence that directly conveys the function and a distinguishing detail. No redundant words or unnecessary information.

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

Completeness4/5

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

The tool is simple (one parameter) and an output schema exists, so return values need not be explained. The description is sufficient for understanding what the tool does and the ordering behavior. It could mention edge cases or that it lists all volumes, but these are largely implied by the name and verb.

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

Parameters2/5

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

Schema description coverage is 0%, but the description does not explain the project_id parameter beyond the schema's name and type. It only mentions 'an OpenFic project' without clarifying that project_id is the identifier to use. The description fails to compensate for the lack of schema descriptions, even though there is only one parameter.

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

Purpose5/5

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

The description clearly states the tool lists volumes of an OpenFic project, using a specific verb ('List') and resource ('volumes'). It also adds a distinguishing detail ('in display order') that differentiates it from sibling tools like get_volume, which retrieves a single volume.

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 usage is implied: it is used when you need to list all volumes for a given project. However, it provides no explicit comparison to alternatives (e.g., get_volume for a single volume) or exclusions, so it falls short of clear guidance.

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

list_worldbook_entriesA

List worldbook entries without their content bodies.

ParametersJSON Schema
NameRequiredDescriptionDefault
world_info_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/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 full burden of behavioral disclosure. It adds the important detail that content bodies are excluded, which is a meaningful behavioral trait. Though it doesn't mention pagination or authentication, 'list' implies a safe read operation, and the description is transparent about its main limitation.

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, compact sentence ('List worldbook entries without their content bodies.') that is front-loaded with the verb and resource. It contains no redundant words or filler, achieving maximum efficiency.

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

Completeness3/5

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

The tool is simple with one parameter and an output schema, so the description covers the core function and the content-body omission. However, the unexplained parameter creates a gap that leaves the description incomplete. A brief note about what 'world_info_id' represents would elevate it to full completeness.

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

Parameters1/5

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

The schema description coverage is 0%, and the description does not explain 'world_info_id' at all. It neither states what this ID refers to nor how it might be obtained. Since there is only one required parameter, the lack of any semantic guidance leaves the agent without essential information for correct invocation.

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 ('List') and resource ('worldbook entries'), with the key qualifier 'without their content bodies'. This distinguishes it from get_worldbook_entry (which presumably includes content) and search_worldbook_entries (which searches). The purpose is unambiguous and specific.

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 phrase 'without their content bodies' implies this tool is for enumerating entries when content is not needed, contrasting with fetching a full entry. However, no sibling alternatives are explicitly named, and there is no explicit 'when not to use' guidance, 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.

openfic_healthA

Check whether the local OpenFic API is available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description clearly states the tool's sole behavior: checking availability. Since there are no annotations, the description carries the full burden, and it does so adequately for a simple read-only check. No hidden side effects or additional behaviors are implied.

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

Conciseness5/5

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

The description is a single, clear sentence with no extraneous words. It is perfectly concise and front-loaded with the verb and subject.

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 health check with an output schema, the description is fully complete. It states exactly what the tool does, and the output schema handles return details. No further context is required.

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 the baseline is 4. The description adds no parameter information because none is needed; the schema already exhaustively covers the empty parameter set.

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 ('Check') and clearly identifies the resource ('local OpenFic API availability'). It is distinct from sibling tools, which all focus on data retrieval rather than system health.

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 purpose statement makes the usage context clear: use this tool when you need to verify API availability. No exclusions are needed because there are no alternative tools for this specific health check.

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

read_project_worldbookA

Read a project's configured worldbook and full entry contents without needing a world_info_id. It never creates a worldbook; configure the project mapping locally first.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
max_entriesNo
max_content_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explicitly labels the operation as 'Read' and states it 'never creates a worldbook', making the non-mutating nature clear. It also mentions the prerequisite of local mapping configuration, adding useful behavioral context beyond a simple 'read' label.

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 exactly two sentences, with the first sentence stating the action and scope, and the second adding a key constraint. There is no filler or redundancy; every word earns its place.

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

Completeness3/5

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

The description covers purpose, a prerequisite, and non-mutating behavior, and an output schema exists to handle return values. However, it lacks any guidance on the two optional parameters, leaving users to guess at their semantics. This is a minimum viable description with clear gaps around parameter usage.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not compensate by explaining the parameters. It does not describe what max_entries or max_content_chars control, nor how they affect the output. The parameter names are somewhat self-explanatory, but the description adds no semantic meaning, so it fails to offset the complete lack of schema descriptions.

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

Purpose5/5

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

The description uses a specific verb ('Read') and resource ('project's configured worldbook') and immediately clarifies that it operates without a world_info_id, which distinguishes it from sibling tools like get_worldbook or list_worldbook_entries. It states exactly what the tool does in one sentence.

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 implies when to use this tool: when you have a project_id and want the project's worldbook entries without needing a world_info_id. It also provides a prerequisite (configure the project mapping locally first) and an explicit exclusion (never creates a worldbook), giving clear usage context even though no alternative sibling tool is named directly.

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

search_chaptersB

Search chapter contents and return matching chapters and lines.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
project_idYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description gives only a high-level summary. It does not disclose search behavior, pagination, ordering, or limitations. The output schema exists, but the description still fails to explain operational details such as project scoping or result handling.

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, well-formed sentence that front-loads the action with no wasted words. It is appropriately concise.

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?

Even though an output schema exists, the description is too sparse for a tool with no annotations. It lacks critical context about project scoping, query semantics, and the role of max_results, making it inadequate for a complete understanding of the tool's behavior.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any of the parameters (project_id, query, max_results). It adds no meaning beyond the schema's property names and types.

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 searches chapter contents and returns matching chapters and lines, using a specific verb and resource. It differentiates from sibling search tools like search_characters and search_notes by targeting chapter contents specifically.

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?

Usage must be inferred from the description—search when you need to find content within chapters. No explicit when-to-use, exclusions, or alternatives are mentioned, so guidance is only implied.

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

search_charactersC

Search character names and descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
project_idYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/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 only states that it searches names and descriptions, but does not mention that it performs a read-only operation, returns matching entries, or has any limitations like pagination or case sensitivity. The description adds minimal behavioral context beyond the obvious.

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

Conciseness3/5

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

The description is a single, concise sentence with no irrelevant content. However, it is under-specified for a tool with three parameters and no annotations. While brevity is a virtue, here it sacrifices essential context that could be provided without excessive length.

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?

Although an output schema exists, eliminating the need to describe return values, the description still fails to explain required parameters, usage context, or how it relates to other search tools. It is a bare-bones statement that is insufficient for an agent to invoke the tool confidently.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It partially explains the 'query' parameter by indicating it searches names and descriptions, but it completely ignores 'project_id' (a required parameter) and 'max_results' (with a default). This leaves the agent without crucial information about how to properly invoke the tool.

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

Purpose4/5

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

The description 'Search character names and descriptions' clearly identifies the action (search) and resource (characters), making the tool's purpose easy to grasp. However, it does not explicitly distinguish it from sibling search tools like search_notes or search_chapters, nor does it mention the project scoping implied by the required project_id parameter.

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?

There is no guidance on when to use this tool versus alternatives such as list_characters or search_chapters. The description offers no context about prerequisites, typical use cases, or situations where another tool would be more appropriate.

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

search_notesC

Search note contents and return matching lines.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
project_idYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden but only says it returns matching lines. It does not disclose whether it searches all notes in a project, case sensitivity, pagination behavior, or any limitations.

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

Conciseness3/5

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

The description is a single concise sentence and front-loads the purpose. However, it is under-specified, lacking detail on scope or parameters, which limits its usefulness.

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?

An output schema exists, so return format is covered, but the description fails to explain search scope, parameter roles, or how it relates to sibling search tools. The tool is not fully specified for an agent to invoke correctly.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning for the parameters 'query', 'project_id', or 'max_results'. Agents must infer semantics solely from parameter names.

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 searches note contents and returns matching lines, with a specific verb and resource. It distinguishes from sibling search tools (e.g., search_chapters, search_worldbook_entries) by targeting notes specifically.

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 the sibling search tools. The description implies it is for notes but does not mention alternatives, exclusions, or context such as project scope.

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

search_worldbook_entriesC

Search entries in a worldbook.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo
world_info_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, but it fails to disclose search behavior (e.g., case sensitivity, fields searched, pagination). It merely restates the purpose without additional behavioral context.

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

Conciseness4/5

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

The description is extremely concise and front-loaded, with no wasted words. However, its brevity borders on under-specification, so it is efficient but not necessarily effective.

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 three parameters, no annotations, and a sibling set, the description is far too sparse. It relies entirely on the schema, which lacks semantic detail, making the overall context incomplete.

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

Parameters1/5

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

The schema has 0% description coverage, and the description adds no param meaning. 'query' and 'world_info_id' are left ambiguous, and 'max_results' is only vaguely implied.

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 'Search entries in a worldbook' uses a specific verb and resource, clearly identifying the operation. However, it does not differentiate from siblings like list_worldbook_entries, so it is clear but not explicitly distinguished.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as list_worldbook_entries or get_worldbook_entry. The description offers no context for selection.

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. Dates show when Glama detected each change.

  1. 22 tool updatesv0.1.0
    • First observedget_chapter
    • First observedget_character
    • First observedget_note
    • First observedget_project
    • First observedget_project_summary
    • First observedget_volume
    • First observedget_worldbook
    • First observedget_worldbook_entry
    • First observedlist_chapter_summaries
    • First observedlist_chapters
    • First observedlist_characters
    • First observedlist_long_term_summaries
    • First observedlist_notes
    • First observedlist_projects
    • First observedlist_volumes
    • First observedlist_worldbook_entries
    • First observedopenfic_health
    • First observedread_project_worldbook
    • First observedsearch_chapters
    • First observedsearch_characters
    • First observedsearch_notes
    • First observedsearch_worldbook_entries

TDQS

B3.4/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: list/get/search are consistently separated, and worldbook tools are differentiated by purpose (by ID vs project-configured). No two tools appear to do the same thing.

Naming Consistency5/5

All tools follow a clear verb_noun pattern (list_, get_, search_, read_, openfic_health being the only exception, but that is a distinct health check). The naming is consistent and predictable.

Tool Count4/5

22 tools is slightly above the typical range, but each tool earns its place given the breadth of entity types (projects, volumes, chapters, summaries, characters, notes, worldbooks). The count is reasonable for the scope.

Completeness4/5

The read-only surface covers all major entities with list/get/search variants, leaving no obvious dead ends for reading. Write operations (create/update/delete) are absent, but the server appears intentionally read-only for context provision, so only minor gaps like search_projects exist.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Local MCP server that exposes Scrivener projects to AI clients, enabling project creation, binder navigation, document read/write, and metadata updates without opening Scrivener.
    158
    1
    AGPL 3.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    A local MCP server exposing the OpenAI platform REST API as tools for file management, fine-tuning, inference, images, audio, batch processing, and organization usage/costs.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/handsomer89/Openfic-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server