Skip to main content
Glama
zvyen1314-bot

Conversational Experience Router

Conversational Experience Router

License: MIT Node.js MCP

简体中文 | English

An open experience layer for conversational AI. It routes user intents — "I'm bored", "help me organize this idea", "I want to chat about something" — into experiences that can start right away.

Claude is the first AI host; other MCP-compatible or similar-protocol hosts can be added later.

Features

  • Intent to experience: discover and recommend experience modules from the current intent and user-approved interest signals.

  • Explicit consent: before launching, issue a one-time, short-lived consent token for the chosen module; the experience starts only after the user confirms.

  • Stateful sessions: each experience runs as a short session, with continue, submit-event, and finish.

  • Extensible: add a module by dropping it into experiences/; no core changes.

  • Verifiable registry: Ed25519 module signing, trusted publishers, permission/risk display, and a version-history index.

  • Public topics foundation: public topics, optional discussion rooms, reporting, moderation, and blocking — no automatic private messaging or real-person matching.

  • Local-first: the experience web server listens on localhost only and is account-free.

Related MCP server: CouchLoop EQ

Built-in modules

  • social-pulse: public topics and potential conversation directions (demo data for now; real matching and private messaging are a later phase).

  • three-minute-mystery: a three-minute text deduction game.

  • thought-garden: turn scattered ideas into a core thought, assumptions, and next steps.

Install and run

Requires Node.js 20 or newer.

npm install
npm run build

Then:

node dist/index.js

The MCP service talks over stdio and also starts a localhost-only web server and public-topics HTTP API at http://127.0.0.1:4317 by default. If the port is taken, an available port is chosen automatically and returned in the launch_experience entrypoint field; set EXPERIENCE_PORT to pin the port.

Connect to Claude

Claude Desktop

Add this to Claude Desktop's MCP config, replacing the path with your local absolute path:

{
  "mcpServers": {
    "experience-router": {
      "command": "node",
      "args": [
        "C:\\path\\to\\conversational-experience-router\\dist\\index.js"
      ]
    }
  }
}

Claude Code

claude mcp add experience-router -- node C:\\path\\to\\conversational-experience-router\\dist\\index.js

Then, for example:

I'm bored and I have three minutes — find me something I can start right now.

Workflow

  1. discover_experiences: recommend modules from intent and interest signals.

  2. prepare_experience_launch: issue a one-time, short-lived consent token for the chosen module.

  3. launch_experience: start the experience with the confirmed token.

  4. Continue or end via continue_experience / submit_experience_event / finish_experience.

Tool list

Tool

Purpose

discover_experiences

Recommend modules from the current intent and user-approved interest signals

list_public_modules

Show module versions, permissions, risk, publisher, and signature status

create_context_envelope

Wrap user-selected shared context into a portable object

prepare_experience_launch

Issue a one-time, short-lived consent request for the chosen module

launch_experience

Start a stateful experience with the confirmed token

get_consent_status

Query consent state and scope; never returns the token

revoke_consent

Revoke an unused experience consent

continue_experience

Read current experience session state

submit_experience_event

Submit an answer, hint, restart, or end event

finish_experience

End an experience session

create_experience_draft

Create a private module draft from a safe template

discover_public_topics

Discover public topics without reading full conversation history

create_public_topic

Create a public topic

join_public_room / get_public_room

Join or read a public discussion room on demand

post_public_message

Post in a public discussion room

report_public_content

Report a public topic or message

list_public_reports / review_public_report

View and process the local moderation queue

block_public_actor / unblock_public_actor

Block or restore a public participant

Developers: write a module

A module does not modify the core router. Drop a module directory into experiences/ and restart the service to auto-load it:

experiences/
  my-module/
    manifest.json
    module.mjs

manifest.json describes module identity, version, capabilities, risk, and memory boundaries; module.mjs exports two lifecycle functions:

export default {
  async start(context) {
    return { round: 1, score: 0 };
  },
  async handleEvent(context, state, event) {
    return { state: { ...state }, status: "active" };
  }
};

Validate locally:

npm run validate-module -- ./experiences/my-module

Scaffold a new module:

npm run create-module -- --id focus-sprint --name "Focus Sprint" --purpose "Turn a vague task into one next step" --category reflection --capabilities reflection --reads selected_excerpts
npm run validate-module -- ./experiences/focus-sprint

The scaffold writes manifest.json, module.mjs, and a module README; it refuses to overwrite an existing directory unless --force is passed.

Import an externally produced module without executing it — copy and validate the manifest first:

npm run import-module -- --source ./path/to/my-module
npm run validate-module -- ./experiences/my-module

import-module only copies manifest.json, module.mjs/module.js, an optional signature.json, and a README; it never runs external code. validate-module imports the module to check its lifecycle exports, so review it first.

Sign a module and build the public registry:

npm run create-publisher-key -- --key-id example-main --out-dir ./keys --trust-file ./keys/trusted-keys.json
npm run sign-module -- --module ./experiences/my-module --private-key ./keys/example-main.private.pem --key-id example-main
npm run verify-module -- --module ./experiences/my-module --trusted-keys ./keys/trusted-keys.json
npm run build-registry-index -- --root ./experiences --output ./registry/index.json --trusted-keys ./keys/trusted-keys.json

signature.json covers the canonical manifest digest and the entry-code digest. The registry distinguishes trusted, signed, unsigned, and invalid; set EXPERIENCE_TRUSTED_KEYS at runtime so public discovery can identify trusted publishers.

Run tests:

npm test

The current runtime supports local controlled-js modules and is meant for code the developer has reviewed. Remote GitHub install, a remote registry service, persistent moderation, and sandboxed execution are not implemented yet; the router never auto-executes code from an untrusted repository.

Public protocols

The project fixes five public protocol surfaces:

  • Experience Manifest: module identity, version, capabilities, risk, and read/write scope.

  • Context Envelope: user-selected context fields that can migrate between hosts.

  • Consent Policy: the read/write scope a module is currently allowed. The actual bearer token is bound to the current host and session, and can only be reissued, not migrated.

  • Module Signature: an Ed25519 signature object covering the manifest and entry-code digests.

  • Experience Registry / Public Topics: public module index, version history, public topics, rooms, and moderation objects.

Call create_context_envelope to build the context, then pass the returned envelope to prepare_experience_launch. Full fields and JSON examples are in docs/protocol.md.

Security and boundaries

  • The router never auto-reads conversation history and never fetches phone or account data without call parameters; the host should only pass interest signals the user explicitly agreed to share.

  • The one-time, short-lived consent token issued by prepare_experience_launch is the user control point. It is bound to one module and invalidates after use; experience sessions expire after 10 minutes by default.

  • create_experience_draft only produces a declarative draft and never executes user-uploaded native code.

  • controlled-js modules still run in the same Node.js process as the MCP server; signatures detect tampering but are not a sandbox.

  • Public topics and rooms are currently in-memory and account-free; reporting requires an explicit moderation action. Real-person matching, private messaging, and dating recommendations are not provided.

  • This is a prototype, not a full social platform or an AI phone operating system.

Project structure

src/
  catalog.ts       built-in module manifests and matching
  index.ts         MCP stdio server and tool registration
  runtime.ts       consent tokens, experience sessions, and event state
  registry.ts      module registration and discovery
  signature.ts     module signing and digest verification
  public-topics.ts public topics, rooms, and moderation state
  module-api.ts    module lifecycle API
  protocol.ts      Manifest, Context Envelope, and Consent Policy protocols
  types.ts         shared types
  web.ts           local experience web server and session API
experiences/       built-in modules (manifest + module.mjs)
scripts/           module create, import, sign, and registry commands
docs/              protocol and roadmap

License

MIT


Conversational Experience Router

English | 简体中文

一个面向对话式 AI 的开放体验层。它把用户说出的「我很无聊」「帮我整理这个想法」「我想找点话题聊」等意图,路由到可以立即开始的体验模块。

Claude 是首个接入的 AI 宿主,未来可扩展到其他支持 MCP 或类似工具协议的宿主。

特性

  • 意图到体验:根据当前意图和用户明确授权的兴趣线索,发现并推荐体验模块。

  • 显式授权:启动体验前,为选定模块生成一次性、限时的授权令牌,用户确认后才启动。

  • 有状态会话:每个体验以短会话运行,支持继续、提交事件、结束。

  • 可扩展:新增模块只需放进 experiences/ 目录,无需改动核心代码。

  • 可验证注册表:支持 Ed25519 模块签名、可信发布者、权限/风险展示和版本历史索引。

  • 公开话题基础能力:支持公开话题、可选讨论房间、举报、审核和拉黑,不自动私信或真人匹配。

  • 本地优先:体验网页只监听本机,不依赖账号。

内置模块

  • social-pulse:公共话题与潜在聊天方向推荐(当前为演示数据,真人匹配与私信属后续阶段)。

  • three-minute-mystery:三分钟文字推理小游戏。

  • thought-garden:把散乱想法整理成核心想法、假设和下一步。

安装与运行

需要 Node.js 20 或更高版本。

npm install
npm run build

构建后运行:

node dist/index.js

MCP 服务通过 stdio 与宿主通信,同时启动一个只监听本机的体验网页和公开话题 HTTP API,默认地址为 http://127.0.0.1:4317。端口被占用时会自动选择一个可用端口,并通过 launch_experience 的 entrypoint 字段返回实际地址;也可用环境变量 EXPERIENCE_PORT 指定端口。

接入 Claude

Claude Desktop

把下面的条目加入 Claude Desktop 的 MCP 配置文件,并将路径改为本机项目的绝对路径:

{
  "mcpServers": {
    "experience-router": {
      "command": "node",
      "args": [
        "C:\\path\\to\\conversational-experience-router\\dist\\index.js"
      ]
    }
  }
}

Claude Code

claude mcp add experience-router -- node C:\\path\\to\\conversational-experience-router\\dist\\index.js

重启宿主后即可使用。例如对 Claude 说:

我很无聊,只有三分钟,给我找点可以马上开始的东西。

使用流程

  1. discover_experiences:根据意图和兴趣线索推荐模块。

  2. prepare_experience_launch:为选定模块生成一次性、限时的授权令牌。

  3. launch_experience:用户确认后,用授权令牌启动体验。

  4. 通过 continue_experience / submit_experience_event / finish_experience 继续或结束会话。

工具列表

工具

作用

discover_experiences

根据当前意图和用户同意提供的兴趣线索推荐模块

list_public_modules

展示模块版本、权限、风险、发布者和签名状态

create_context_envelope

将用户明确选择共享的上下文封装为可迁移对象

prepare_experience_launch

为已选模块生成一次性、限时授权请求

launch_experience

使用用户确认后的授权令牌启动有状态体验

get_consent_status

查询授权状态和权限范围,不返回 token

revoke_consent

撤销尚未使用的体验授权

continue_experience

读取当前体验会话状态

submit_experience_event

提交答案、提示、重启或结束事件

finish_experience

结束一个体验会话

create_experience_draft

用安全模板创建私人模块草稿

discover_public_topics

发现公开话题,不读取完整对话历史

create_public_topic

创建公开话题

join_public_room / get_public_room

按需加入或读取公开讨论房间

post_public_message

在公开讨论房间发言

report_public_content

举报公开话题或消息

list_public_reports / review_public_report

查看和处理本地审核队列

block_public_actor / unblock_public_actor

拉黑或恢复公开参与者

开发者:写一个模块

模块不需要修改核心路由器。把一个模块目录放进 experiences/,重启服务后会自动加载:

experiences/
  my-module/
    manifest.json
    module.mjs

manifest.json 描述模块身份、版本、能力、风险和记忆边界;module.mjs 导出两个生命周期函数:

export default {
  async start(context) {
    return { round: 1, score: 0 };
  },
  async handleEvent(context, state, event) {
    return { state: { ...state }, status: "active" };
  }
};

本地校验模块:

npm run validate-module -- ./experiences/my-module

也可以用脚手架快速创建一个可校验模块:

npm run create-module -- --id focus-sprint --name "Focus Sprint" --purpose "把模糊任务拆成一个可执行的下一步" --category reflection --capabilities reflection --reads selected_excerpts
npm run validate-module -- ./experiences/focus-sprint

脚手架会生成 manifest.json、module.mjs 和模块 README;如果目录已经存在,命令会拒绝覆盖,除非显式加入 --force。

导入外部生成的本地模块时,可以先只复制并校验 manifest,不执行模块代码:

npm run import-module -- --source ./path/to/my-module
npm run validate-module -- ./experiences/my-module

import-module 只复制 manifest.json、module.mjs/module.js、可选的 signature.json 和 README;它不会导入执行外部代码。validate-module 会为了检查生命周期导出而加载模块,因此应在人工审阅之后运行。

为模块签名并生成公开注册表:

npm run create-publisher-key -- --key-id example-main --out-dir ./keys --trust-file ./keys/trusted-keys.json
npm run sign-module -- --module ./experiences/my-module --private-key ./keys/example-main.private.pem --key-id example-main
npm run verify-module -- --module ./experiences/my-module --trusted-keys ./keys/trusted-keys.json
npm run build-registry-index -- --root ./experiences --output ./registry/index.json --trusted-keys ./keys/trusted-keys.json

signature.json 覆盖规范化后的 manifest 和入口代码摘要。注册表会区分 trusted、signed、unsigned 和 invalid;运行服务时可设置 EXPERIENCE_TRUSTED_KEYS,让 MCP 的公开发现结果识别可信发布者。

运行测试:

npm test

当前支持本地 controlled-js 模块,适合开发者审阅后导入;远程 GitHub 安装、远程注册表服务、持久化审核和沙盒运行仍属于后续工作,当前不会自动执行陌生仓库中的代码。

公共协议

项目现在固定五层公共协议:

  • Experience Manifest:模块身份、版本、能力、风险和读写范围。

  • Context Envelope:用户明确选择共享、可在宿主之间迁移的上下文字段。

  • Consent Policy:当前模块允许读取和写入的范围。实际 bearer token 绑定当前宿主和会话,只能重新签发,不能直接迁移。

  • Module Signature:使用 Ed25519 覆盖 manifest 和入口代码摘要的签名对象。

  • Experience Registry / Public Topics:公开模块索引、版本历史、公开话题、房间和审核对象。

可以先调用 create_context_envelope 生成上下文,再把返回的 envelope 传给 prepare_experience_launch。完整字段和 JSON 示例见 docs/protocol.md。

安全与边界

  • 不会自动读取对话历史,也不会在没有调用参数的情况下获取手机或账户数据;宿主只应传入用户明确同意共享的兴趣线索。

  • prepare_experience_launch 生成的一次性、限时授权令牌是当前原型的用户控制点。令牌绑定具体模块、使用后立即失效;体验会话默认 10 分钟后过期。

  • create_experience_draft 只生成声明式草稿,不会执行用户上传的原生代码。

  • controlled-js 模块仍与 MCP 服务运行在同一 Node.js 进程;签名能发现篡改,但不能替代沙盒。

  • 公开话题和房间目前是本地内存、无账号服务;举报需要显式审核操作,暂不提供真人匹配、私信或约会推荐。

  • 本仓库是原型,不是完整社交平台,也不是 AI 手机操作系统。

项目结构

src/
  catalog.ts      内置模块 manifest 和匹配逻辑
  index.ts        MCP stdio server 和工具注册
  runtime.ts      授权令牌、体验会话和事件状态
  registry.ts     模块注册与发现
  signature.ts    模块签名和摘要验证
  public-topics.ts 公开话题、房间和审核状态
  module-api.ts   模块生命周期 API
  protocol.ts     Manifest、Context Envelope 和 Consent Policy 协议
  types.ts        共享类型
  web.ts          本地体验网页和会话 API
experiences/      内置模块(manifest + module.mjs)
scripts/          模块创建、导入、签名和注册表命令
docs/             协议和路线图

License

MIT

Available Tools

21 tools
block_public_actorBlock a public actorB

隐藏指定参与者在公开话题和房间中的内容,并阻止双方继续互动。

ParametersJSON Schema
NameRequiredDescriptionDefault
actor_idYes
blocked_actor_idYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the two main effects: content hidden in public topics/rooms and interaction blocked between both parties. However, it omits reversibility (the sibling unblock_public_actor suggests this can be undone), required permissions, and whether the block is one-way or mutual in enforcement terms.

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?

A single dense sentence that front-loads the action and its consequences with no filler. Slightly compact to the point that the two-ID relationship is glossed over, but structurally efficient.

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

Completeness3/5

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

For a two-parameter mutation tool with no annotations and no output schema, the description covers the observable effects but leaves gaps on parameter semantics, permissions, and reversibility. Adequate as a minimum viable definition, not complete.

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

Parameters2/5

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

Schema description coverage is 0% for two required parameters, so the description must compensate. It only vaguely refers to 'the specified participant' and 'both parties', never clarifying who actor_id is versus blocked_actor_id or whether the caller must be one of them. The distinction between the two IDs is left entirely to inference.

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?

States a specific action (block a public actor) and, importantly, its two concrete effects: hiding the participant's content in public topics and rooms, and preventing mutual interaction. That is more informative than the bare name, though it never distinguishes itself from siblings like report_public_content or unblock_public_actor.

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 when-to-use guidance at all. It does not say when blocking is preferable to report_public_content or review_public_report, nor does it mention the existing unblock_public_actor tool for reversing this action. The agent must infer usage entirely from the name.

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

continue_experienceContinue an experienceA

读取体验会话的当前状态,用于在对话或网页之间继续一次体验。

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYeslaunch_experience 返回的会话 id

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. "读取...当前状态" does convey that this is a non-mutating state read, which is useful given the name continue_experience could imply mutation. But it says nothing about whether reading resumes/activates the session, what happens on an invalid or expired session_id, or error 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?

A single, tightly written sentence that front-loads the action and resource before the usage context. There is no filler or redundancy.

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

Completeness3/5

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

For a one-parameter read tool with no annotations and no output schema, the description should ideally say what the returned state contains and how it should be used. "当前状态" is vague, so the agent knows the shape of the call but not the shape of the result.

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%; the single session_id parameter is already documented in the schema as the id returned by launch_experience. The description adds no syntax, format, or constraint detail beyond what the schema provides, so the baseline of 3 applies.

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 specific verb (读取) and resource (体验会话的当前状态), and clarifies that the purpose is resuming an experience across conversations or web pages. This differentiates it in spirit from launch_experience and finish_experience, though it never names a sibling explicitly.

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?

It gives a usage context — continuing an experience between conversations or web pages — which implies when to call it. However, it names no alternative tool and states no exclusion or precondition (e.g., what to do if the session is expired or was never launched).

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

create_context_envelopeCreate a portable context envelopeB

把用户明确选择共享的兴趣、时间和内容片段封装为可迁移的 Context Envelope。它不读取宿主的完整历史记录。

ParametersJSON Schema
NameRequiredDescriptionDefault
intentNo
localeNo
interestsNo
game_preferencesNo
selected_excerptsNo
social_preferenceNo
expires_in_minutesNo
available_time_minutesNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses a privacy-relevant behavior — scope is limited to explicitly selected material, not the host's complete history — but says nothing about what gets persisted, whether the envelope is durable or ephemeral, consent requirements, or side effects. This is meaningful but partial disclosure for an 8-param mutation-adjacent 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?

Two short sentences with no waste; the positive action is front-loaded and the 'does not read history' caveat follows immediately. Slightly terse given the parameter surface, but structurally sound.

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 8 undocumented parameters, no annotations and no output schema, the description covers only about half the surface. An agent can tell roughly what the tool does but not how to populate intent, locale, game_preferences or social_preference, nor what the resulting envelope contains.

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% across 8 parameters. The description names interests, time and content excerpts, which loosely maps to interests, available_time_minutes/expires_in_minutes and selected_excerpts, but intent, locale, game_preferences and social_preference remain undocumented in both schema and description. It compensates for only part of the gap.

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 specific verb+resource: packaging user-explicitly-selected interests, time and content excerpts into a portable Context Envelope. It also states a negative scope ('does not read the host's full history'), which helps distinguish it from full-history tools. It stops short of differentiating itself from siblings like create_experience_draft or create_public_topic.

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 when the tool applies (only when the user has explicitly opted to share context) and rules out one alternative behavior (reading full history). It never names a sibling tool or states explicit when-not conditions, so usage is implied rather than directed.

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

create_experience_draftCreate an experience draftB

用安全的声明式模板生成一个私人体验草稿。草稿只描述能力和边界,不执行用户提供的代码。

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes体验名称
purposeYes体验要帮助用户完成什么
categoryYes体验类别
interaction_styleYes体验希望以哪种界面承载
requested_capabilitiesNo希望使用的能力名称,而不是可执行代码

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does add a genuine behavioral disclosure – the draft is declarative, describes only capabilities and boundaries, and does not execute user code – which is valuable safety context, but it omits authorization requirements, draft persistence/lifecycle, and what the caller receives back.

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?

Two tight sentences that are front-loaded with the action and follow with the key constraint. No filler, though the second sentence partly restates the safety framing already implied by '声明式模板'.

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?

With 5 parameters, 4 required, no output schema, and no annotations, the description covers the purpose and safety stance but does not indicate what a successful call returns (draft id, status) or how the draft is subsequently used. Adequate but with clear gaps for a creation 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?

Schema coverage is 100%, so the baseline is 3. The line '只描述能力和边界,不执行用户提供的代码' reinforces the requested_capabilities semantics ('希望使用的能力名称,而不是可执行代码'), adding a little meaning, but the remaining parameters are left entirely to the schema.

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

Purpose4/5

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

The description states a specific verb and resource: generating a private ('私人') experience draft from a declarative template. The 'private' qualifier usefully separates it from public-create siblings like create_public_topic, though it does not name any alternative directly.

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 explicit when-to-use or when-not-to-use guidance. It never explains how this draft relates to the launch flow (prepare_experience_launch, launch_experience) that sibling tools imply, so the agent must infer the sequencing entirely.

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

create_public_topicCreate a public topicC

创建一个公开话题。发布前应向用户展示公开可见范围和内容审核规则。

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
tagsNo
titleYes
actor_idYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It does disclose two real behavioral traits — the content becomes publicly visible and a moderation-rules disclosure step is required beforehand — which is more than a plain restatement. However it is silent on permissions/actor authorization, whether the topic is immediately live or moderated first, reversibility, and error behavior.

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?

Two short sentences, zero filler, with the core action stated first and the precondition second. It is efficient and well front-loaded; the brevity is a symptom of under-specification rather than verbosity.

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 write tool that publishes publicly visible content, with no annotations, no output schema and 0% parameter coverage, the description does too little. It flags the moderation/visibility gate but omits parameter meaning, authorization expectations, what happens after success, and how moderators may act on the topic.

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% across four parameters (actor_id, title, body, tags) and the description says nothing about any of them — no hint about who actor_id is, how title/body lengths behave, or how tags affect discoverability or moderation. With no structured documentation to fall back on, this leaves the required inputs entirely unexplained.

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 first sentence gives a specific verb+resource (\"创建一个公开话题\" / create a public topic), so the agent can tell what will happen. It does not differentiate from the read-side sibling discover_public_topics or explain how a topic relates to rooms/messages, so it stops short of a 5.

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 second sentence supplies a genuine precondition: before publishing, the public visibility scope and content moderation rules must be shown to the user. That is useful implied-usage guidance, but it never says when to choose this over a sibling (e.g. post_public_message or prepare_experience_launch), nor any exclusion conditions.

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

discover_experiencesDiscover experiencesB

根据用户当前明确表达的意图,推荐可立即开始的体验模块。宿主应先准备授权并获得用户同意,再启动体验。

ParametersJSON Schema
NameRequiredDescriptionDefault
intentYes用户当前表达的需求或心情
max_resultsNo
known_interestsNo用户已经明确同意传给插件的兴趣线索

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that the host must prepare authorization and obtain user consent before launching, which is real behavioral context. However it never states that this tool itself only recommends (read-only) and does not itself launch or mutate, nor does it disclose rate limits or return characteristics.

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?

Two short sentences, purpose front-loaded ahead of the consent/host caveat. Efficient with no filler, though the second sentence mixes an operational precondition with the tool's own behavior.

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

Completeness3/5

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

For a 3-parameter, no-output-schema recommendation tool this is minimally adequate: purpose and the consent prerequisite are covered. It leaves gaps around what is returned and how results relate to the downstream launch tools, which an agent would need for sequencing.

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 67% — intent and known_interests are documented in the schema, while max_results relies only on default/range constraints. The description adds no syntax, format, or meaning beyond the schema, so the baseline 3 is appropriate.

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?

States a specific verb (推荐/recommend) and resource (体验模块/experience modules), plus the scoping condition that they be immediately startable and grounded in the user's explicit intent. It is distinguishable from siblings like launch_experience or prepare_experience_launch, though it does not name them directly.

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 phrase '用户当前明确表达的意图' implies the trigger condition (user has expressed an explicit intent) and the consent prerequisite is mentioned, but there is no explicit when-not guidance or named alternative tool. Usage is inferable rather than spelled out.

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

discover_public_topicsDiscover public topicsB

根据用户明确提供的兴趣发现公开话题;结果不包含私密匹配或自动私信。

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
actor_idNolocal-user
interestsNo
max_resultsNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose a meaningful scope trait — results exclude private matching and automatic direct messages — which is genuinely useful. But it says nothing about permissions, whether this is a safe read-only operation, result limits/pagination, or what happens for unknown actors.

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?

A single compact sentence, front-loaded with the resource and the governing input. No filler, though the negative clause could be tightened.

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 zero schema descriptions, no annotations, and no output schema, the description is too thin. It omits parameter meaning, return shape, and the boundary against sibling discovery tools, leaving an agent unable to call it 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% across 4 parameters, so the description must compensate. It only illuminates one concept — "interests" — and says nothing about query, actor_id, or max_results, leaving three parameters with no semantic guidance anywhere.

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 names a specific verb (discover) and resource (公开话题 / public topics), and adds a scoping condition (based on interests the user explicitly provided). It stops short of differentiating itself from close siblings such as discover_experiences or create_public_topic, leaving the agent to infer the distinction.

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?

"根据用户明确提供的兴趣" implies a precondition for use (the user must have stated interests), and the negative clause rules out private-match and auto-DM scenarios. However, there is no explicit when-to-use-vs-alternative guidance naming discover_experiences or create_public_topic, so usage remains implied rather than stated.

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

finish_experienceFinish an experienceC

结束一个体验会话并返回最终状态。

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

TDQS

C2.7/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 behavioral burden. It notes that a final state is returned but does not disclose whether ending a session is irreversible, what happens to in-progress state or submitted events, or what permissions are required for this mutation.

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?

A single compact sentence with the action front-loaded and no filler. It is appropriately sized, though it omits any detail that would make the brevity genuinely informative.

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 session-terminating mutation with no annotations, no output schema, and an undocumented parameter, the description is too thin. An agent lacks the information needed to know when this is safe or correct to invoke.

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 single parameter session_id has 0% schema description coverage and is never mentioned in the description. With low coverage the description is expected to compensate by explaining the parameter's origin or format, which it does not.

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 specific verb (结束/finish) and resource (体验会话/experience session), making the action distinguishable from siblings like launch_experience or continue_experience. It does not, however, explicitly contrast itself with those siblings.

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 call this tool versus alternatives such as continue_experience or submit_experience_event, and no prerequisites or preconditions are stated. Usage is only implied by the tool name.

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

get_public_roomRead a public discussion roomB

读取一个公开讨论房间及当前可见消息。被拉黑的参与者内容不会返回。

ParametersJSON Schema
NameRequiredDescriptionDefault
room_idYes
actor_idYes

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that content from blocked participants is not returned and that only currently visible messages are read, but it omits access/permission requirements, pagination, and whether the operation is strictly read-only.

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 compact sentences, front-loading the core read operation and then the visibility caveat. Every sentence earns its place with no waste.

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?

No annotations and no output schema, combined with 0% parameter coverage, leave important gaps. The description conveys the read purpose and one filtering rule but does not explain actor_id or access requirements, so an agent lacks enough context to call it 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% for two required parameters (room_id, actor_id). The description implies a room must be identified but never explains room_id, and it says nothing about actor_id, so it only partially compensates for the missing 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?

States a specific verb (读取) and resource (公开讨论房间及当前可见消息), making the operation clear. It does not differentiate from sibling tools like discover_public_topics or join_public_room, so 4 rather than 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?

No when-to-use or when-not-to-use guidance is given. It does not name alternatives such as join_public_room for joining or discover_public_topics for listing, leaving the agent to infer that this is simply the read-room tool.

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

join_public_roomJoin a public discussion roomC

按需加入某个公开话题的讨论房间;房间只支持公开发言,不开启私信。

ParametersJSON Schema
NameRequiredDescriptionDefault
actor_idYes
topic_idYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full behavioral burden. It does add one genuine constraint not present in the schema — the room permits only public speech and no private messaging — which is useful for an agent reasoning about disclosure. However, it omits idempotency (what happens if the actor is already in the room), authorization requirements, and any state changes caused by joining, leaving notable gaps for a mutation tool.

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

Conciseness4/5

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

A single compact sentence with no filler, and the core action is front-loaded before the behavioral caveat. It is under-specified rather than bloated, so conciseness itself is not the weakness.

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 two-required-parameter mutation tool with no annotations and no output schema, the description should cover prerequisites, post-join state, and parameter meaning. It supplies only the room's public-speech constraint, leaving the agent without enough to invoke it confidently in edge cases.

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

Parameters2/5

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

Schema description coverage is 0%, so both actor_id and topic_id are undocumented in the structured schema. The description only alludes to the topic (公开话题) and says nothing about actor_id, its format, or the relationship between the two required parameters, failing to compensate for the coverage gap.

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?

States a specific verb (加入/join) and resource (公开话题的讨论房间), so the agent knows the operation is joining a topic's discussion room. It does not, however, distinguish itself from the sibling get_public_room, which plausibly reads the same resource, so the boundary is left implicit.

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 phrase 按需 (as needed) gestures at on-demand use but gives no concrete condition, prerequisite, or alternative. With siblings like get_public_room, create_public_topic, and post_public_message in scope, the description never says when joining is the right call versus reading or posting.

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

launch_experienceLaunch an experienceA

使用 prepare_experience_launch 返回的一次性授权令牌启动体验,并创建一个有状态的本地会话。

ParametersJSON Schema
NameRequiredDescriptionDefault
consent_tokenYes用户确认后允许使用的授权令牌
experience_idYes准备授权时使用的模块 id

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the token is one-time (一次性) and that the call creates a stateful local session, but it omits failure modes, token-reuse behavior, and session lifecycle details an agent would need.

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?

A single, front-loaded sentence that combines the action with its prerequisite and side effect. No wasted words, though it could be slightly more explicit about the trigger condition.

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 two-parameter tool with full schema coverage and no output schema, the description supplies the missing workflow context (token provenance and session side effect). It is adequate, with only minor gaps around error and lifecycle 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 both parameters are already documented in the schema; the description only re-frames consent_token as a one-time authorization token. 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 names a specific verb and resource (启动体验 / launch an experience) and adds a concrete outcome (创建一个有状态的本地会话). It distinguishes itself from the sibling prepare_experience_launch by naming it as the token source, though it doesn't contrast with continue_experience or finish_experience.

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

Usage Guidelines4/5

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

It clearly establishes the prerequisite: the one-time token must come from prepare_experience_launch, implying the correct call order. No explicit when-not conditions are given, so it stops short of full routing guidance.

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

list_public_modulesList public experience modulesC

展示本地注册表中的公开体验模块,包括版本、权限、风险、发布者和签名状态。

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
max_resultsNo
require_trusted_signatureNo

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 the full burden of behavioral disclosure. It implies a read operation via '展示' but does not explicitly state read-only safety, side effects, authentication requirements, rate limits, or pagination behavior. The inclusion of field names is return-value context, not behavioral trait disclosure.

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 single sentence is front-loaded with the purpose and efficiently lists the fields returned. It avoids boilerplate or redundancy, though it could be slightly tighter by omitting some field enumerations if they were documented elsewhere.

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 three undocumented parameters, no annotations, and no output schema, the description is incomplete. It does not compensate for the 0% schema coverage or explain how the 'local registry' scope relates to the rest of the public experience workflow. An agent lacks enough context to invoke it confidently with correct parameters.

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% for three parameters, and the description mentions none of them. It does not explain what 'category', 'max_results', or 'require_trusted_signature' do, their defaults, or their allowed values. The description adds no meaning beyond the raw schema names.

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?

States a specific verb ('展示' / display) and resource ('公开体验模块' / public experience modules), and details the returned fields (version, permissions, risk, publisher, signature status). However, it does not differentiate itself from sibling tools like discover_experiences or list_public_reports, so an agent cannot tell when to choose this over alternatives without further inference.

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?

Provides no when-to-use, when-not-to-use, or alternative-tool guidance. The description only says what it lists, not under what conditions an agent should select it versus discover_experiences or other listing tools.

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

list_public_reportsList public moderation reportsC

读取本地公开内容审核队列,供明确授权的审核者处理。

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo

TDQS

C2.7/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 behavioral burden. It mentions authorization context but does not state whether this is read-only, whether data is cached locally, how many reports are returned, pagination behavior, or whether calling it has side effects. The one behavioral hint about authorization is useful but thin.

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 short sentence that front-loads the resource and audience. It is concise and has no filler, though it is arguably too brief to carry the needed behavioral detail.

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 listing tool with no annotations, no output schema, and a 0%-covered enum parameter, the description is incomplete. It omits return format, ordering, pagination, and filter semantics, which an agent needs to call it correctly.

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

Parameters2/5

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

Schema coverage is 0% and the single status parameter has an enum but no descriptions. The description does not explain the status filter, its allowed values, or whether omitting it returns all reports. With one parameter and zero coverage, the description should compensate but does not.

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 Chinese description states it reads the local public content moderation queue for explicitly authorized reviewers. This gives a verb (read/list) and resource (moderation queue), but it is vague about scope compared to the English title 'List public moderation reports'. Siblings like report_public_content, review_public_report, and list_public_modules are not distinguished, so an agent cannot easily route between queue-listing and report-reviewing tools.

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 context by limiting access to 'explicitly authorized reviewers' for the 'public moderation queue', but it does not say when to use this versus review_public_report or report_public_content. No explicit when-to-use or when-not-to-use guidance is provided.

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

post_public_messagePost in a public discussion roomB

在公开讨论房间发言。内容会进入公开审核队列,当前不提供私信。

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
room_idYes
actor_idYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations at all, the description carries the full burden. It does disclose a genuinely useful behavioral trait — posted content enters a public moderation queue, so delivery may be gated — but omits permission/auth requirements, whether posts can be edited or deleted, and any rate limits.

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?

Two short sentences with no filler, and the core action is front-loaded before the moderation caveat. It is terse rather than padded, though it is arguably too sparse for a three-parameter write 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?

For a write tool with no annotations, no output schema, and zero schema documentation, the description should do more. It covers the notable moderation-queue behavior but leaves actor identity, room resolution, and the response contract entirely unexplained.

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% across three required parameters, and the description compensates for none of it: it never explains what actor_id identifies, how room_id is obtained, or that body is capped at 2000 characters. The purpose sentence only loosely implies room and message.

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 first sentence states a specific verb (发言/post) and resource (公开讨论房间/public discussion room), so an agent can tell it apart from siblings like create_public_topic or join_public_room. It stops short of explicitly naming how it differs from those siblings, but the action is 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?

Usage is implied by the verb-plus-room framing, and the closing clause '当前不提供私信' rules out the private-messaging case. However, there is no explicit guidance on when to choose this over create_public_topic or join_public_room, and no prerequisites for posting are given.

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

prepare_experience_launchPrepare an experience launchA

为用户选择的体验模块生成一次性、限时授权请求。宿主应先向用户展示权限范围,得到明确同意后再调用 launch_experience。

ParametersJSON Schema
NameRequiredDescriptionDefault
experience_idYesdiscover_experiences 返回的模块 id
context_envelopeNo用户明确同意共享的 Context Envelope
requested_scopesNo从模块声明的权限中选择的最小范围

TDQS

A4.2/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 behavioral burden and delivers meaningful context: the authorization is one-time and time-limited, and explicit user consent is a precondition. It still omits what the returned request looks like, how long it lives, and whether it can be reused or must be regenerated, so it is strong but not exhaustive.

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, zero filler. The consent precondition is front-loaded and the follow-up call is named last, matching the order in which the agent must reason about them.

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 three-parameter consent-flow tool with a nested context_envelope and no output schema, the description covers purpose, precondition, and next step adequately. The main gap is return-value behavior — no output schema exists, yet the description does not explain what the generated authorization request contains or how it is handed to launch_experience.

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 experience_id, context_envelope, and requested_scopes are already documented in the schema. The description only alludes to scopes and the experience module at a conceptual level and adds no syntax, selection, or constraint detail beyond the schema. Baseline 3 applies 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.

Purpose5/5

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

States a specific verb and resource — generating a one-time, time-limited authorization request for the user-selected experience module — and names the sibling it precedes (launch_experience). An agent can distinguish this preparatory step from launch_experience without opening either schema.

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

Usage Guidelines4/5

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

Gives an explicit sequencing rule: the host must show scopes to the user, obtain explicit consent, then call launch_experience. This tells the agent both when to use this tool and what must happen before the follow-up call. It does not, however, mention alternatives such as get_consent_status or revoke_consent, so it stops short of full when-not guidance.

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

report_public_contentReport public contentB

举报公开话题或公开消息;举报进入审核队列,不会自动将内容判定为违规。

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
target_idYes
reporter_idYes
target_typeYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that the report goes into a review queue and does not automatically mark the content as violating, which clarifies the side effect and non-immediacy. It still omits permission requirements, duplicate-report behavior, and what the caller gets back.

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?

A single compact sentence pair, front-loaded with the action and immediately followed by the important outcome semantics. No filler or redundancy.

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?

With no annotations, no output schema, and 0% parameter description coverage, the description should do more, especially around the four required parameters and what happens after submission. It covers the action and the moderation-queue outcome adequately but leaves parameter and return expectations to inference.

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% across four required parameters. The description only indirectly implies target_type by naming topics and messages, and does not explain reporter_id, target_id, or the reason field's constraints (3-500 chars). It compensates only partially for a large documentation gap.

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 gives a specific verb+resource: report a public topic or public message (举报公开话题或公开消息). That is clearly distinguishable from moderation siblings such as review_public_report and list_public_reports. It stops short of naming an alternative or boundary explicitly, so it is clear but not maximally differentiating.

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 is implied by the verb 'report' and the outcome note that the report enters a moderation queue, which tells the agent this is a submission rather than a review action. However, there is no explicit when-to-use guidance, no statement of prerequisites, and no reference to siblings like review_public_report or block_public_actor.

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

review_public_reportReview a public content reportC

由审核者对公开内容举报作出驳回、隐藏或恢复决定。

ParametersJSON Schema
NameRequiredDescriptionDefault
decisionYes
report_idYes
reviewer_idYes

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. It implies a mutation with three outcomes, but never states whether hide/restore are reversible, what happens to the reported content or reporter, or any permission requirements. Only the bare decision set is disclosed.

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?

A single front-loaded sentence with no filler; the actor, resource, and outcome set all appear in one clause. It is appropriately terse for the operation, though the brevity leaves gaps rather than being wasteful.

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 three-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is too sparse. Side effects, authorization, reversibility, and expected outcomes are all missing, leaving the agent to guess at consequences.

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

Parameters3/5

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

Schema description coverage is 0%, three required parameters. The description partially compensates by naming the actor (审核者 → reviewer_id), the target (公开内容举报 → report_id), and the three decision values that match the enum. However, it adds no constraint details (length bounds, ID format) beyond what the schema already enforces.

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 names a specific verb (作出...决定 - makes a decision) and resource (公开内容举报 - public content report) carried out by a reviewer, and enumerates the three possible outcomes (驳回/隐藏/恢复). This clearly distinguishes it from siblings like report_public_content (filing) and list_public_reports (reading), though it never names those siblings explicitly.

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 invoke this tool versus report_public_content or list_public_reports, nor any stated preconditions such as required reviewer privileges or which decisions are permitted in which state. The agent must infer the workflow entirely from the name.

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

submit_experience_eventSubmit an experience eventC

向有状态的体验提交一个受限事件,例如答案、提示请求或重新开始。

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadNo
event_typeYes
session_idYes

TDQS

C2.7/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 behavioral burden. It hints that the operation targets a stateful session and that events are 'restricted' (受限), but does not disclose side effects, permission requirements, error behavior for invalid event/session combinations, or what state change occurs.

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?

A single front-loaded sentence with the action first, no filler, and an immediately useful example list. It is efficient, though its brevity is partly under-specification rather than economy.

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

Completeness2/5

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

With no annotations, no output schema, 0% schema coverage, an opaque nested payload object, and an undocumented enum value, the definition is too thin for an agent to call correctly. It should at least explain payload contents and the full set of valid event types.

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 there is a nested free-form 'payload' object plus an enum whose meaning is non-obvious. The description names three of the four enum values (answer, hint, restart) but omits 'finish', and says nothing about session_id or the shape of payload, leaving the schema largely unexplained.

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 gives a specific verb and resource ('向有状态的体验提交一个受限事件' = submit a restricted event to a stateful experience) and enumerates representative event examples (answer, hint request, restart). This distinguishes it reasonably from discovery/launch siblings, though it does not explicitly contrast with continue_experience or finish_experience.

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 when-to-use guidance is given. It never states the preconditions (an active session), nor when this should be chosen over continue_experience, finish_experience, or prepare_experience_launch, all of which are near neighbours. The event examples hint at context but do not constitute usage rules.

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

unblock_public_actorUnblock a public actorC

恢复查看和参与指定公开参与者内容的能力。

ParametersJSON Schema
NameRequiredDescriptionDefault
actor_idYes
blocked_actor_idYes

TDQS

C2.7/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 behavioral burden. It discloses the outcome (viewing and participation are restored) but says nothing about required permissions, idempotency when the actor is not blocked, or whether the action is reversible. This is thin for an unannotated mutation tool.

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

Conciseness4/5

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

A single sentence with no filler, and the operative effect is front-loaded. It is efficient, though its brevity contributes to the specification gaps captured elsewhere.

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 two-parameter mutation tool with no annotations, no output schema, and 0% schema coverage, the description is too sparse. It neither disambiguates the two identically-typed ID parameters nor covers permissions, side effects, or error conditions.

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

Parameters2/5

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

Schema description coverage is 0% for two required parameters, so the description must compensate and it does not. It refers only to a single 'specified public actor', leaving the crucial distinction between actor_id (the caller) and blocked_actor_id (the target being unblocked) completely unexplained.

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 specific verb-effect and resource: restoring the ability to view and participate in the content of a specified public actor. An agent can understand this is the inverse of block_public_actor, though the sibling relationship is only implicit and never named.

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 invoke this versus other tools, no mention of the counterpart block_public_actor, and no preconditions such as 'the actor must currently be blocked'. Usage must be inferred entirely from the name.

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. 21 tool updatesv0.5.0
    • First observedblock_public_actor
    • First observedcontinue_experience
    • First observedcreate_context_envelope
    • First observedcreate_experience_draft
    • First observedcreate_public_topic
    • First observeddiscover_experiences
    • First observeddiscover_public_topics
    • First observedfinish_experience
    • First observedget_consent_status
    • First observedget_public_room
    • First observedjoin_public_room
    • First observedlaunch_experience
    • First observedlist_public_modules
    • First observedlist_public_reports
    • First observedpost_public_message
    • First observedprepare_experience_launch
    • First observedreport_public_content
    • First observedreview_public_report
    • First observedrevoke_consent
    • First observedsubmit_experience_event
    • First observedunblock_public_actor

TDQS

B3.3/5.0

Scored across 21 tools

Disambiguation5/5

Each tool targets a clearly distinct resource and action: experience discovery/launch/session lifecycle, public topic/room operations, moderation, consent, and context envelopes are well separated. While there are several discovery and creation tools, their descriptions make the boundaries explicit, so an agent can reliably choose the right one.

Naming Consistency5/5

All 21 tools use consistent snake_case with a verb_noun pattern (e.g., discover_experiences, create_public_topic, get_public_room, launch_experience). The domain-specific prefixes like 'public' and 'experience' group related tools without breaking the predictable convention.

Tool Count3/5

21 tools is on the heavy side for a single MCP server, falling into the 16–25 range that the rubric describes as borderline. While the surface covers multiple sub-domains (experiences, public rooms, moderation, consent), some tools could potentially be consolidated without losing functionality.

Completeness4/5

The experience lifecycle (discover, prepare, launch, continue, submit event, finish, consent status, revoke) and public interaction/moderation workflows are well covered. Minor gaps exist, such as no tool to update or delete public topics/messages, and context envelopes have only a create operation with no retrieval or management counterpart.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers