Skip to main content
Glama

goofish-cli

闲鱼 CLI · 原生支持 MCP · 为 AI Agent 而生

Goofish (Xianyu) automation CLI · MCP-ready · Built for AI Agents

CI PyPI version Python License MCP GitHub stars

https://github.com/user-attachments/assets/ae20ae2f-ccdf-4d3e-a947-69182d4c4eff

goofish-cli 把闲鱼(Xianyu/Goofish)的核心运营能力抽成一套结构化命令, 同一份定义同时输出给四种消费者:

  • 👨‍💻 人类:goofish item get 12345 --format table

  • 🤖 AI Agent(Claude Code / Cursor / Codex):uvx goofish-cli → 自动注册成 MCP tool

  • 🧩 Claude Skills(v0.3):5 个内置 skill,goofish skills install 一行装到 ~/.claude/skills/

  • OpenClaw:ClawHub bundle 一次安装 MCP server + 5 个 skills

架构思想来自 opencli 的 single-registry 设计。


特别鸣谢


Related MCP server: xhs-mcp-light

✨ 核心特性

  • 🔐 17 个命令覆盖核心链路:发布、下架、查询、图片上传、AI 类目识别、默认地址、IM 收发 + 会话列表、skills 安装

  • 📡 真·实时 IM:WebSocket 长连 + 自动重连 + 三类事件分类输出

    • event=message(收到消息)· event=read(已读回执)· event=new_msg(轻量通知)

  • 🛡 内置风控护栏:账号与业务桶限流(经营 1 次/分钟、媒体 9 次/分钟)+ RGV587 自动熔断

  • 🧠 AI-first I/O:--format json/yaml/table/md/csv,给 LLM 喂 JSON、给人看表格

  • ⚡ 一次定义,三种入口:CLI / MCP / Skill 共享同一 registry

  • ✅ 真实端到端验证:每个命令都跑过真实账号


🚀 60 秒上手

# 1. 安装
pip install goofish-cli    # 或 uv pip install goofish-cli

# 2. 导入 cookie(从浏览器 DevTools → Application → Cookies 导出)
goofish auth login ~/Downloads/goofish-cookies.json

# 3. 验证登录态
goofish auth status
# → {"unb":"<masked-unb>","tracknick":"<masked-tracknick>","nick":"...","valid":true}

# 4. 干活
goofish item get 1045171414271
goofish message watch                               # 实时接收消息
goofish message send <cid> <toid> --text "在的"    # 发消息

不占用桌面的沙箱模式

需要运行中的本机 Docker Desktop / Docker Engine。安装支持沙箱的版本后,先在终端执行:

goofish sandbox --help
goofish sandbox start
# 手动打开输出的观察链接,默认 http://127.0.0.1:16080/vnc.html?autoconnect=1&resize=scale
goofish sandbox login  # 在虚拟桌面里扫码并确认

goofish sandbox run auth status --format json
goofish sandbox run search items '机械键盘' --limit 3

让 AI 客户端也使用沙箱时,将原有 goofish MCP 配置替换为:

{
  "mcpServers": {
    "goofish": {
      "command": "goofish",
      "args": ["sandbox", "mcp"]
    }
  }
}

客户端必须能找到 goofish 和 docker;桌面客户端找不到命令时,将 command 改为 command -v goofish 输出的绝对路径,并检查客户端 PATH 中是否有 Docker。Codex 使用 TOML,见 MCP 客户端配置。不要同时保留原来的本机 Goofish server;直接运行 uvx goofish-cli 仍使用本机模式。

首次启动会下载并构建镜像。Chromium 在容器虚拟桌面里常驻,登录态保存在独立卷;命令不会自动打开宿主机浏览器。平台要求验证时,执行 goofish sandbox browse --item-id <商品ID>,在观察页面人工完成。升级后用 stop、start --rebuild 更新镜像,状态卷保留。

如果 sandbox --help 不识别命令,当前安装的发行版尚未包含沙箱功能。源码安装、完整的登录/恢复步骤和限制见沙箱指南。


🧩 Claude Skills(v0.3 新增)

v0.3 起内置 5 个 Claude Skill,装完之后 Claude Code / Cursor 里的 Agent 在识别到 闲鱼任务就会自动加载对应 skill 的知识库,不再靠 zero-shot 试错。

# 装到 ~/.claude/skills/(默认)
goofish skills install

# 或者只看有哪些 skill,不拷贝
goofish skills install --list

# 或者装到自定义目录 + 覆盖已有的
goofish skills install --dest ./skills --force

5 个 skill 分工

Skill

什么时候激活

核心能力

goofish-overview

用户首次提闲鱼 / 问这工具能干啥

总入口,dispatch 到其他 4 个 skill

goofish-publish-item

发商品 / 上架 / 挂闲置

类目识别 → 标题 5 段式 → 风控扫描 → 图片检查 → 确认发布

goofish-reply-buyer

回消息 / 看未读 / 议价

拉未读 → 意图 5 分类 → 议价三档(小刀/大刀/屠龙刀)→ 用户确认发送

goofish-risk-guard

发布前 / 发送前 / 被限流了

违禁词表、外联词正则、发布红线、x5sec 恢复指引(被其他 skill 频繁引用)

goofish-shop-diagnosis

店铺没流量 / 曝光掉了

买家视角搜索 + 历史对比 → 归因清单 + 修复建议(纯读不写)

skill 的源文件在仓库的 skills/ 目录下(每个 skill 一个子目录,含 SKILL.md

  • references/*.md 知识库)。也可以走 Claude Code Plugin Marketplace 安装:

claude /plugin marketplace add fancyboi999/goofish-cli

OpenClaw / ClawHub

OpenClaw 2026.6.1 及以上可把本仓库作为 compatible bundle 加载。已发布到 ClawHub,安装:

openclaw plugins install clawhub:openclaw-goofish

# 登录态由用户在终端初始化,不交给 Agent 覆盖
uvx --from goofish-cli==0.6.0 goofish auth login --qr

openclaw plugins inspect goofish --json
openclaw gateway restart

本地开发无需发布:

openclaw plugins install -l .
openclaw plugins inspect goofish --json

重启后新会话会获得 5 个 skills,以及 goofish__auth_status、 goofish__item_get 等 MCP tools。bundle 默认不暴露需要操作者执行或会长期阻塞的 auth_login、auth_reset_guard、message_watch、skills_install。

运行 MCP server 需要 PATH 中有 uv。完整说明见 MCP 接入指南。


📟 命令详略与真实输出

$ goofish list-commands --format table

命令

说明

写操作

auth login

从 JSON 文件或 cookie 字符串导入登录态

❌

auth status

检查登录态是否有效

❌

auth reset-guard

手动解除风控熔断

❌

item get

查询闲鱼商品详情

❌

item publish

发布商品(自动识别类目 + 默认地址)

✅

item delete

下架/删除商品

✅

media upload

上传图片到闲鱼 CDN

✅

category recommend

AI 识别商品类目

❌

location default

获取默认发布地址

❌

message list-chats

会话列表(默认 HTTP + 短时 WS,补最近消息并按活动时间倒序)

❌

search items

搜索闲鱼商品(浏览器路径 Playwright + 系统 Chrome)

❌

item view

浏览器视角看商品详情(字段完整,抗风控;item get 的姊妹版)

❌

message history

拉取会话历史消息

❌

message send

发送文本/图片

✅

message watch

常驻 IM 长连(JSONL 输出)

❌

会话读取使用真实消息时间,而非会话创建时间:

goofish message list-chats --format json
goofish message history <cid> --limit 20 --timeout 30 --format json

list-chats 默认 --watch-secs 5,在一个已就绪的连接中补齐真人会话的最近消息页; --watch-secs 0 关闭 WS 会话发现,结果可能遗漏 HTTP 未返回的会话。 --timeout 限制摘要读取阶段。历史输出保留 cid、message_id 和毫秒时间 created_at, --limit 0 保留完整翻页行为,其他正数只读最近 N 条。

metadata_status 标明摘要是当前、为空、不完整或读取失败;无法确定的时间为 null。 has_more 只代表 HTTP 分页,enumeration_complete=false 表明短时同步不能证明全部历史会话已覆盖。 接口契约与异常边界见 会话同步。

{
  "unb": "<masked-unb>",
  "tracknick": "<masked-tracknick>",
  "nick": "闲鱼用户昵称",
  "valid": true,
  "h5_token_exp": "2026-04-21T20:30:00+08:00"
}
$ goofish message watch

实时输出(小号给主号发 3 条 + 主号读了所有消息):

{"event":"message","cid":"<masked-cid>","send_user_id":"<masked-user-id>","send_user_name":"小号昵称","send_message":"测试消息1"}
{"event":"message","cid":"<masked-cid>","send_user_id":"<masked-user-id>","send_user_name":"小号昵称","send_message":"测试消息2"}
{"event":"message","cid":"<masked-cid>","send_user_id":"<masked-user-id>","send_user_name":"小号昵称","send_message":"测试消息3"}
{"event":"read","cid":"<masked-cid>","msg_ids":["<masked-msg-id-1>","<masked-msg-id-2>","<masked-msg-id-3>"],"status":1,"ts":"<masked-timestamp>"}

事件

字段

message

cid · send_user_id · send_user_name · send_message · content_type

read

cid · msg_ids[] · status · ts

new_msg

cid · msg_id · ts(服务端只推指针,需 message history 拉正文)

自动跳过噪音:/s/para(对方正在输入)、contentType=8(会话激活心跳)。

$ goofish message send <masked-cid> <masked-user-id> \
    --text "在的 claude 测试成功 ✅" --item-id 1045171414271
{"ok": true, "mid": "<masked-message-id>", "cid": "<masked-cid>"}
goofish item publish "男士毛呢大衣 驼色长款" \
    "全新未拆封 原价 2999 现 999" ./a.png ./b.png 999 --format json

流程:上传图片 → 推荐类目 → 默认地址 → 提交。已有上传收据可通过 --images-json '[{"url":"https://example.alicdn.com/image.png","width":1024,"height":1024}]' 复用,省略本地图片参数;已确认类目和地址分别通过 --category-json、--location-json 传入对应工具返回的完整 DTO。

返回 item_id、status="accepted" 和 requires_readback=true;使用 goofish item get <item_id> 和自己的商品列表确认保存。失败也保留已上传图片和准备信息; submission_unknown 必须先核对商品列表,不自动重复发布。

发布与下架共用账号的 item.write 预算,默认 1 次/分钟;媒体上传独立计数,默认 9 次/分钟。一个多图商品只消耗一次商品预算。


🔌 接入 Claude Code(MCP)

以下为本机模式;需要隔离桌面时,使用上面的沙箱 MCP 配置,客户端位置见 MCP 接入指南。

在项目根目录 .mcp.json 配置:

{
  "mcpServers": {
    "goofish": {
      "command": "uvx",
      "args": ["goofish-cli"]
    }
  }
}

Claude 会自动把全部命令看成 tool:mcp__goofish__item_get / mcp__goofish__item_publish / mcp__goofish__message_watch... 你在对话里直接说"帮我看下 itemId=xxx 的详情",Claude 就会调用。


🎯 项目亮点

能力

说明

11 个核心 mtop 接口

发布/下架/查询/图片/类目/地址/IM 全覆盖

CLI + --format 多格式输出

json / yaml / table / md / csv,人机两用

MCP Server

uvx goofish-cli 一行接入 Claude Code / Cursor

WebSocket 批量 push 全量解码

一帧多条消息全部还原,不丢单

WebSocket 自动重连

断线自退避重连,长跑无感知

已读回执 / typing / 新消息通知分类

/s/sync 元事件结构化为三类 JSONL

全局限流 + 风控熔断

账号业务预算 + RGV587 自动熔断

回归验证

pytest + ruff check src tests

包分发

pip install goofish-cli / uvx goofish-cli


🗺 Roadmap

  • v0.1:12 个命令 + MCP + IM 三类事件

  • v0.2:goofish message list-chats(会话列表 + sessionType 分类:1 真人 / 3 系统 / 6 互动 / 23 通知;--watch-secs 支持合并 WS ackDiff(pts=0) 历史推送补齐 h5 接口漏掉的会话)

  • v0.2:浏览器自动化链路(吸纳 OpenCLI 精华)—— Playwright + 系统 Chrome 驱动 goofish search items / goofish item view,抗风控 & 完整字段

  • v0.2.3 / v0.2.4:session 自动续命(passport 快速进入)+ auth login --qr 扫码兜底

  • v0.3:Claude Skills 包装(5 个 skill:overview / risk-guard / publish-item / reply-buyer / shop-diagnosis)+ goofish skills install

  • v0.4:goofish message create-chat(主动与陌生用户建会话)

  • v0.4:goofish order(订单状态查询 / 发货)

  • v0.4:历史数据落盘(SQLite / JSONL),给 shop-diagnosis 做时序归因

  • v0.5:支持发视频消息


🛠 开发

git clone https://github.com/fancyboi999/goofish-cli
cd goofish-cli
uv venv --python 3.11
uv pip install -e ".[dev]"

uv run pytest                # 33 测全绿
uv run ruff check src tests  # 零告警

详细请看 CONTRIBUTING.md 和 docs/architecture.md。


⚠️ 合规声明

本工具仅用于用户自有账号的自动化运营。严禁:

  • 欺诈 / 刷单 / 虚假交易

  • 针对闲鱼平台的 SaaS 化转售

  • 违反闲鱼、淘宝、阿里巴巴用户协议的行为

工具不提供:绕过滑块验证、批量设备 ID 伪造、自动化规避封号。遇到风控请人工处理(见 docs/compliance.md)。


📜 License

Apache-2.0 © 2026 fancy。详见 LICENSE 和 NOTICE。

Available Tools

17 tools
auth_loginC

导入登录态(默认从本机浏览器 auto-detect;支持 Chrome/Edge/Brave/Safari/Firefox 等)

ParametersJSON Schema
NameRequiredDescriptionDefault
qrNo
rawNo
sourceNo
browserNoauto
qr_timeoutNo

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 behavioral burden. It discloses the default source (local browser auto-detect) and browser support, but says nothing about the credential-import being a sensitive/state-changing operation, whether it overwrites an existing session, what authentication or permissions are needed, or that a QR-code flow exists (implied only by the schema).

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 a parenthetical qualifier — no filler or redundancy. Its brevity is efficient, though for a five-parameter credential tool it borders on under-specification.

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 values need not be described. But with zero annotations, 0% parameter coverage, and a security-sensitive login-import operation, the description is far too thin to let an agent invoke this correctly or safely.

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 five parameters, so the description must compensate. It only clarifies browser (default auto-detect plus supported values) and leaves qr, raw, source, and qr_timeout entirely unexplained in both schema and description.

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: importing a login state (登录态), with the default acquisition path (auto-detect from the local browser). It is clear what the tool does, but it never distinguishes itself from auth_status or auth_reset_guard, which are the obvious adjacent siblings an agent must choose between.

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 it runs by default (auto-detect from the local browser) and enumerates supported browsers, which is useful context. However, it gives no explicit when-to-use vs auth_status/auth_reset_guard guidance, no prerequisites, and no indication of what happens if an existing session is already present.

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

auth_reset_guardB

手动解除风控熔断状态

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/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, and it discloses almost nothing. For a security-sensitive mutation that disables a protective mechanism, an agent needs to know about authorization requirements, whether the reset is permanent or temporary, and what side effects follow — none of which appear.

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 short phrase with zero filler, front-loading the action and target. It is appropriately sized for a zero-parameter tool, though it borders on under-specification rather than true conciseness.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. But for a zero-param, annotation-free mutation that resets a risk-control guard, the description omits the critical context an agent needs: authorization prerequisites, when this should be invoked, and consequences of the reset.

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 takes zero parameters, so there is no parameter semantics to document; the baseline for a parameterless tool applies. The description does not need to add anything here.

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

Purpose4/5

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

The description gives a specific verb+resource: manually clearing/releasing the risk-control circuit-breaker (guard) state. It is clearly distinct from sibling auth tools like auth_login and auth_status. However, it does not explicitly differentiate itself from those siblings or state the scope of what the reset affects.

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 word '手动' (manually) faintly implies use when automatic recovery has not occurred, but no explicit when-to-use condition, prerequisite, or alternative (e.g., checking state via auth_status first) is given. An agent cannot confidently decide when this action is warranted versus waiting.

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

auth_statusA

检查登录态是否有效,返回 unb / tracknick / 昵称

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns login-relevant fields, but it does not explicitly state whether the operation is read-only or what happens when the login state is invalid, leaving some behavioral 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?

The description is a single, front-loaded sentence with no filler. It directly states the action and the return values, making it highly concise and well-structured.

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

Completeness4/5

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

Given the tool's simplicity (0 params) and the presence of an output schema describing return values, the description is largely complete. It could be slightly enhanced by noting when to use it (e.g., before auth-dependent operations), but the core information is sufficient.

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

Parameters4/5

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

The tool has 0 parameters, so the baseline is 4. The description does not need to add parameter details, and the schema already has no properties. The description appropriately focuses on the return information.

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 resource ('登录态' / login state), and specifies the return fields (unb / tracknick / 昵称), which clearly distinguishes it from sibling auth tools like auth_login and auth_reset_guard.

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 that the tool is used to check login validity, but it does not provide explicit when-to-use context or mention alternatives such as auth_login or auth_reset_guard. No exclusions or prerequisites are stated.

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

category_recommendA

AI 识别商品类目,输入标题+图片返回 catId/catName

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
images_jsonNo[]

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 disclose behavioral traits, but it only states the basic recognition capability and return values. It does not mention whether the operation is read-only, how accuracy or error cases are handled, or any limitations or prerequisites (e.g., image format), leaving a significant transparency gap.

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 that front-loads the core purpose and immediately states inputs and outputs. Every word contributes value, with no redundancy or filler.

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

Completeness4/5

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

Given the simple two-parameter tool and the existence of an output schema (which handles return value structure), the description sufficiently covers the main input-output contract. It could add a note about the optionality of images or prerequisites, but for a basic classification tool it is nearly complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does add meaning by indicating that 'title' and 'image' are the semantic inputs, which the schema titles ('Title', 'Images Json') do not convey. However, it does not clarify that title is required while images_json is optional, nor does it explain the format of images_json beyond what the schema defaults suggest.

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

Purpose5/5

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

The description clearly identifies the tool's function: AI-based product category recognition, with explicit inputs (title and image) and outputs (catId/catName). This distinguishes it from sibling tools, which cover auth, item management, media upload, and messaging.

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 when a product title and image are available and a category is needed, but it does not explicitly say when to prefer this over alternatives or mention any exclusions. No sibling tool offers similar category functionality, so the context is adequate but not fully spelled out.

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

item_deleteB

下架/删除商品(写操作,受限流和风控护栏保护)

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/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 explicitly states '写操作' (write operation) and mentions rate limiting and risk control protections, which adds useful context about side effects and constraints. However, it does not disclose whether the deletion is permanent or reversible, or what consequences occur beyond the operation itself.

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 phrase that front-loads the core action and resource, followed by a brief note on operation type and protections. Every word earns its place, with no redundancy or filler. It is highly efficient and appropriately sized for a tool with one parameter.

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 delete/delist operation and the existence of an output schema, the description covers the basic purpose but lacks crucial contextual information. It does not mention whether the delete is soft (delist) or hard (permanent), what happens to associated data, or any side effects. It also provides no usage alternatives, making it incomplete for an agent to fully understand the tool's impact.

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 one required parameter, item_id, with 0% description coverage. The description does not explain the parameter's meaning or any special requirements. Although item_id is self-explanatory, the description provides no additional value beyond the schema, and the low coverage means the description should compensate but fails to do so.

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 '下架/删除' (delist/delete) and the resource '商品' (item/product), making the tool's purpose unmistakable. It also distinguishes from sibling tools like item_get, item_list, and item_publish by indicating it's a delete/delist operation, which is unique among the given 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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or scenarios where other tools like item_get or item_publish would be more appropriate. The only hint is that it's a write operation, but that's not explicit usage guidance.

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

item_getB

查询闲鱼商品详情(只读)

ParametersJSON Schema
NameRequiredDescriptionDefault
item_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?

The description includes the annotation '(只读)' (read-only), which is a useful behavioral hint, but with no annotations provided, it carries the full burden of disclosure. It does not mention authentication requirements, error behavior (e.g., item not found), rate limits, or any other side effects. The single read-only note is insufficient context for an agent to anticipate tool behavior fully.

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 communicates purpose and the read-only nature. It is front-loaded and contains no filler words, making it efficient for an agent 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?

Given the simple nature of the tool (one parameter, output schema exists) the description covers basic purpose, but lacks usage guidance and parameter context. The output schema presumably handles return values, but the description still leaves gaps around when to use the tool and what the item_id parameter means, making it minimally adequate but 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?

The input schema has only one parameter, item_id, but the description does not elaborate on what this ID represents, how to obtain it, or any validation rules. Since schema description coverage is 0%, the description should compensate, but it adds no additional semantic meaning beyond the parameter's name.

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

Purpose5/5

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

The description clearly states the tool's function: querying Xianyu item details (read-only). The verb '查询' (query) plus resource '商品详情' (item details) makes the purpose explicit. It also distinguishes from siblings like item_delete, item_publish, and item_list by specifying a read-only detail retrieval.

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 item_view or item_list. The description does not mention exclusions, prerequisites, or scenarios where this tool is preferred. Users are left to infer usage from the name alone.

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

item_listC

查看当前账号的在售商品(API 直签)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

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 carries the full behavioral burden. '查看' implies a read, but nothing is said about pagination behavior, auth/permission requirements (the 'API 直签' hint is unexplained), or result limits, despite a limit parameter defaulting to 50.

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 short sentence with the resource front-loaded and no padding. The parenthetical '(API 直签)' consumes space without conveying actionable information.

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?

An output schema exists, so return values need not be explained, and this is a simple read-only list tool. However, with zero annotations and no mention of pagination or scope limits, the description is only minimally sufficient.

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

Parameters3/5

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

One optional parameter (limit) with 0% schema description coverage; the description never mentions it. The parameter is self-explanatory from its name and default of 50, so the gap is minor, but the description adds no meaning beyond 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?

States a specific verb (查看/list) and resource (在售商品, on-sale items) scoped to the current account, which distinguishes it from search_items and item_get. The trailing '(API 直签)' is opaque jargon that adds no usable clarity, and there is no explicit differentiation from item_view.

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

Usage Guidelines2/5

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

No guidance on when to choose this tool over search_items, item_get, or item_view. The only implicit signal is the 'current account' scope. An agent must guess at the selection criteria.

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

item_publishC

发布商品(自动识别类目 + 默认地址),价格单位元

ParametersJSON Schema
NameRequiredDescriptionDefault
descYes
priceYes
titleYes
imagesNo
deliveryNo无需邮寄
post_priceNo
images_jsonNo[]
category_jsonNo
location_jsonNo
original_priceNo
can_self_pickupNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.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 full burden. It usefully discloses two behaviors an agent could not infer: category auto-detection and default-address use, plus the yuan price unit. However, it says nothing about permissions/auth, irreversibility of publishing, failure modes (e.g., duplicate titles), or what happens to category_json/location_json params when auto-detection is claimed.

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 single line is front-loaded and free of waste, with the two automatic behaviors and the price unit packed in compactly. For an 11-parameter mutation tool, however, this brevity crosses into under-specification rather than disciplined conciseness.

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

Completeness2/5

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

An output schema exists, so return values needn't be described. But for a mutation tool with 11 parameters, 0% schema coverage, and no annotations, the description leaves most of the calling contract (non-required params, delivery enum semantics, json field formats) undocumented.

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 11 parameters, so the description must compensate and largely fails. It clarifies the price unit (yuan) and implies category/location are optional due to auto-detection, but leaves images, delivery enum, post_price, original_price, can_self_pickup, and the *_json fields 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 description gives a clear verb+resource (publish an item) and adds meaningful scope: category is auto-detected and the default address is used. This is readily distinguishable from siblings like item_delete, item_get, and item_list by verb alone, though it never names them 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 explicit when-to-use or when-not-to-use guidance. The agent can infer that this creates a new listing, but nothing tells it how this relates to category_recommend or location_default, which the description implies are handled internally, nor any prerequisite or precondition.

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

item_viewB

浏览器视角查看商品详情(读取页面响应,含图片和卖家字段)

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full behavioral burden. It does disclose something useful beyond the name: the tool reads the live page response and returns image and seller fields. It says nothing about auth requirements, blocking/rate limits, failure modes when the page lacks the item, or whether the call is purely 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.

Conciseness4/5

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

A single compact sentence with the retrieval mechanism and return content front-loaded in a parenthetical. No filler, though the parenthetical could be split into a clearer when-to-use statement.

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?

An output schema exists, so return-value explanation is not strictly required, and the description still names the notable payload fields. The critical missing piece is routing versus item_get in a sibling set that contains both, plus any note on browser-fetch fragility.

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?

Only one parameter (item_id) with 0% schema description coverage; the description says nothing about its expected format (numeric ID, slug, or URL). The parameter name is largely self-explanatory, which prevents a lower score, but no format or validation guidance is added.

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 ('查看商品详情') and adds a meaningful qualifier ('浏览器视角', reading the page response) that implies a distinct retrieval mechanism. However, it never names or distinguishes itself from the sibling item_get, which likely returns the same resource via another path, so the agent must guess between them.

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?

'浏览器视角' hints that this is browser-page-based rather than API-based, but the description gives no explicit when-to-use, when-not-to-use, or alternative (item_get, search_items, item_list). The user must infer the choice from a two-character qualifier.

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

location_defaultB

获取账号默认发布地址

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
longitudeNo

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 carries the full burden of behavioral disclosure. '获取' implies a read-only 'get' operation, but it does not mention whether authentication is needed, potential side effects, or behavior when no default exists. Minimal transparency beyond the verb.

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, front-loaded with the action verb and resource. Every word earns its place with no redundant details.

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

Completeness3/5

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

For a simple getter with an output schema, the core purpose is clear, and the output schema can cover return values. However, missing parameter semantics and usage context leave notable gaps, making this adequate but incomplete.

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 latitude or longitude at all. The input schema shows defaults but not their meaning or effect on the result, so the agent has little guidance on how to use these parameters.

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

Purpose5/5

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

Description '获取账号默认发布地址' (get account's default publishing address) uses a specific verb and resource, clearly indicating the tool's purpose. It distinguishes itself from sibling tools like item_publish by focusing specifically on retrieving the default location.

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, nor are there prerequisites, exclusions, or contextual hints. The description only states what it does, not when it should be used.

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

media_uploadC

上传图片,独立媒体预算,返回可复用图片收据

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

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?

No annotations are provided, so the description carries the full burden. It does disclose one useful behavioral fact — the returned receipt is reusable — but says nothing about auth requirements, accepted formats, size limits, or whether uploads consume a shared quota (the '独立媒体预算' phrase hints at quota behavior without explaining it).

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?

Very short, with the core action front-loaded. However, '独立媒体预算' is an unexplained clause that occupies space without conveying actionable meaning, so not every element earns its place.

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

Completeness2/5

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

An output schema exists, so return values needn't be described. But for a mutation/upload tool with no annotations, no documented path semantics, and no usage conditions, the description leaves too much for the agent to guess.

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

Parameters2/5

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

Schema description coverage is 0% for the single required parameter 'path', so the description must compensate and does not. An agent cannot tell whether 'path' is a local filesystem path, a URL, or a media identifier — a critical ambiguity for an upload 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?

States a specific verb+resource (上传图片 = upload image) and adds the outcome (returns a reusable image receipt). It does not differentiate from siblings, though none of the listed siblings are competing upload tools, so the risk of misselection is low. The phrase '独立媒体预算' (independent media budget) is cryptic and adds fog rather than clarity.

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

Usage Guidelines2/5

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

No guidance on when to call this versus alternatives, no prerequisites, no indication of what kind of image or workflow this fits. The agent is left to infer everything about the trigger condition.

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

message_historyC

拉取指定 cid 会话的历史消息(翻页到底)

ParametersJSON Schema
NameRequiredDescriptionDefault
cidYes
limitNo
timeoutNo
limit_per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/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 does disclose one real behavioral trait beyond the schema: the call auto-paginates through all pages rather than returning a single page. It says nothing about read-only safety, rate limits, or what happens on very large histories despite a timeout parameter being present.

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 short sentence with no filler, and the key resource (cid conversation) is front-loaded. It is arguably too terse for a four-parameter tool, but there is no wasted text.

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-value explanation is not required. However, for a tool with four undocumented parameters and zero annotations, the description omits pagination-control semantics, default behavior (limit=0, timeout=30s), and any guidance on choosing between this and the sibling message 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% across four parameters, so the description must compensate and it largely does not. It clarifies only that cid identifies the conversation; the distinction between limit and limit_per_page, and the role of timeout, are left 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?

States a specific verb and resource: pulling historical messages for a given cid conversation. This clearly separates it from message_list_chats (list conversations) and message_watch (live streaming). It does not, however, explicitly name those siblings or contrast itself with them.

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 statement of when to use this tool versus message_list_chats or message_watch, nor any prerequisites (e.g. must the cid be known/authenticated first). The parenthetical '(翻页到底)' implies a full-history fetch, but the agent must infer that.

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

message_list_chatsC

会话列表:HTTP + 默认短时 WS 发现,最近消息补齐并按活动时间倒序

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
fetch_numNo
watch_secsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 burden. It does disclose non-obvious behavior beyond the schema — that the call touches HTTP and briefly opens a WebSocket by default, and that recent messages are backfilled (implying extra network work and latency). However it says nothing about permissions, rate limits, blocking duration, or whether the WS phase can be suppressed.

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?

It is a single tight line with the resource front-loaded, so there is no wasted text. The density borders on cryptic, but every clause carries information about mechanics and ordering.

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 values need not be explained, but the rest is thin: three undocumented parameters, no annotations, no guidance on choosing this over message_history or message_watch, and no statement of what the WS discovery phase costs or requires.

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 parameters (timeout, fetch_num, watch_secs) whose names alone are ambiguous. The phrase 短时 WS 发现 hints at the short watch window but never maps to watch_secs, and timeout and fetch_num are entirely unaddressed, so the description does not 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?

The description names a specific resource and action (会话列表 = chat list) and adds scope detail: discovery over HTTP plus a default short-lived WebSocket, recent-message backfill, and activity-time descending order. That is clear enough for an agent to know what it returns, though it never distinguishes itself explicitly from siblings like message_history or message_watch.

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 when-to-use or when-not-to-use guidance, and no sibling is named as an alternative. An agent choosing between message_list_chats, message_history, and message_watch gets nothing beyond an implicit hint from the mention of a short WS discovery phase.

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

message_sendC

向会话发送消息(text/image)。text 必填,image 走 url+wh

ParametersJSON Schema
NameRequiredDescriptionDefault
cidYes
kindNotext
textNo
toidYes
item_idNo
image_urlNo
image_widthNo
image_heightNo

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 present, so the description carries the full burden. It discloses the requirement for text (though this conflicts with the schema where text is optional) and that images use URL+dimensions, but omits auth needs, side effects, or failure 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?

The description is a single, very concise sentence that front-loads the main action. However, it lacks structure and packs multiple details awkwardly, but it is not verbose or redundant.

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 has 8 parameters, no annotations, and an output schema, the description is under-specified. It fails to explain core parameters like cid and toid, making it incomplete for reliable tool invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only clarifies text and image parameters (text required, image uses url+wh), but leaves cid, toid, item_id, and dimension fields unexplained, which is insufficient for 8 parameters.

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

Purpose5/5

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

The description clearly states the tool sends a message (text/image) to a conversation, using the verb 'send' and specifying the resource. It distinguishes itself from sibling tools like message_history and message_list_chats, which are for reading or listing messages.

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 mentions text/image but does not explain when to choose one kind or when other messaging tools might be more appropriate.

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

message_watchA

常驻 IM 长连接,下行事件以 JSONL 输出到 stdout(Ctrl-C 退出)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description shoulders the transparency burden. It discloses key behavioral traits: the long-lived nature ('常驻'), output format (JSONL to stdout), and termination method (Ctrl-C). This goes beyond a bare restatement of the name, though it omits potential details like reconnection behavior or error handling, which are less critical for a simple watch tool.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the key concept ('常驻 IM 长连接'), followed by output specifics and exit instruction. Every word contributes meaning without redundancy or fluff.

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

Completeness5/5

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

Given the tool has zero parameters and an output schema exists, the description adequately covers the tool's purpose, mode of operation, and termination. It tells the agent what to expect (JSONL stream) and how to stop it, making it sufficient for safe invocation. No additional context is necessary.

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

Parameters4/5

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

The input schema has zero parameters, so the baseline is 4. No parameter documentation is needed, and the description focuses on the tool's behavior, which is appropriate for a parameterless tool.

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

Purpose5/5

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

The description clearly identifies the tool as a persistent IM long connection that outputs downstream events as JSONL to stdout, and mentions exit via Ctrl-C. This distinguishes it from siblings like message_history (past messages) and message_send (sending), establishing a specific watch/stream scope.

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 for live event monitoring ('常驻' meaning resident/continuous) and provides exit instructions, but it does not explicitly state when to prefer this over alternatives like message_history for historical data. No exclusions or alternative tool names are given, leaving usage guidance implicit rather than explicit.

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

search_itemsB

搜索闲鱼商品(浏览器路径,抗风控;--pages 跨页抓取)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
pagesNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 disclosure burden. It adds one genuinely useful behavioral trait — that it goes through a browser path resistant to anti-bot/risk control — and hints at multi-page crawling, but says nothing about authentication requirements, rate limits, or request cost for what is presumably a scraping operation.

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 a tight parenthetical; nothing is redundant. It is arguably under-specified rather than bloated, but it wastes no words.

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?

An output schema exists, so return values need not be explained, and that covers part of the gap. Still, for a scraping-based search tool with zero annotation coverage and 0% parameter documentation, the absence of auth/cost/pagination context leaves it only 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?

Schema description coverage is 0%, so the description must explain the three parameters, but it only clarifies one: --pages is described as cross-page crawling. The required query and the limit parameter (default 20) are left entirely undefined, so an agent cannot tell whether limit caps results per page or overall.

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 (搜索闲鱼商品 / search Xianyu items), so the agent knows exactly what it retrieves. It does not, however, distinguish itself from the sibling item_list or the item_get/item_view tools, leaving ambiguity about which search/list variant to pick.

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, and the closest sibling (item_list) is never mentioned or contrasted. The only contextual hint is the parenthetical about a browser path and anti-risk-control, which is a mechanism note rather than selection guidance.

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

skills_installC

把内置 Claude Skills 复制到 ~/.claude/skills/(或 --dest 指定目录)

ParametersJSON Schema
NameRequiredDescriptionDefault
destNo
listNo
forceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 burden. It does disclose the write target (~/.claude/skills/), which is useful behavioral context for a filesystem mutation, but it says nothing about overwrite semantics implied by the `force` parameter, nor about what `list` does, nor about permissions/idempotency.

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 short sentence with no padding; the action and destination are front-loaded. Only minor issue is referring to the parameter as --dest rather than the schema field name `dest`.

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 zero annotation coverage and no schema descriptions, the description is too thin: it omits the behavior of two of three parameters and any overwrite/force semantics. The existence of an output schema excuses it from explaining return values, but not from the rest.

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 document the three parameters, but it only explains `dest` (and even then as a CLI-style --dest flag rather than the schema's `dest` name). `list` and `force` are entirely unexplained, leaving the agent to guess.

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 concrete verb+resource+destination: copies built-in Claude Skills into ~/.claude/skills/ or a --dest directory. An agent can tell exactly what the tool does. It does not need to differentiate from siblings, which are all unrelated item/message/auth tools.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of when to prefer this over any alternative (e.g. list mode vs install). The description only restates the action; nothing routes the agent's decision.

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. 9 tool updatesv0.5.3
    • Changedauth_login4 fields changed
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"auth_loginOutput"New value: +"auth_loginDictOutput"
    • Changedauth_reset_guard1 field changed
      • changedOutput schema / additionalProperties
        Previous value: -{
        -  "type": "boolean"
        -}New value: +true
    • Changeditem_list4 fields changed
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"item_listOutput"New value: +"item_listDictOutput"
    • Changeditem_publish8 fields changed
      • addedInput schema / properties / category_json
        Added value: +{
        +  "default": "",
        +  "title": "Category Json",
        +  "type": "string"
        +}
      • addedInput schema / properties / images / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / images / default
        Added value: +null
      • removedInput schema / properties / images / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / images / type
        Removed value: -"array"
      • addedInput schema / properties / images_json
        Added value: +{
        +  "default": "[]",
        +  "title": "Images Json",
        +  "type": "string"
        +}
      • addedInput schema / properties / location_json
        Added value: +{
        +  "default": "",
        +  "title": "Location Json",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "title",
        -  "desc",
        -  "images",
        -  "price"
        -]New value: +[
        +  "title",
        +  "desc",
        +  "price"
        +]
    • Changeditem_view4 fields changed
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"item_viewOutput"New value: +"item_viewDictOutput"
    • Changedmessage_history6 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 0,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / timeout
        Added value: +{
        +  "default": 30,
        +  "title": "Timeout",
        +  "type": "number"
        +}
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "title": "Result",
        -    "type": "array"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"message_historyOutput"New value: +"message_historyDictOutput"
    • Changedmessage_list_chats2 fields changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "default": 30,
        +  "title": "Timeout",
        +  "type": "number"
        +}
      • changedInput schema / properties / watch_secs / default
        Previous value: -0New value: +5
    • Changedsearch_items5 fields changed
      • addedInput schema / properties / pages
        Added value: +{
        +  "default": 1,
        +  "title": "Pages",
        +  "type": "integer"
        +}
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"search_itemsOutput"New value: +"search_itemsDictOutput"
    • Changedskills_install4 fields changed
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "title": "Result",
        -    "type": "array"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"skills_installOutput"New value: +"skills_installDictOutput"
  2. 17 tool updatesv0.3.0
    • First observedauth_login
    • First observedauth_reset_guard
    • First observedauth_status
    • First observedcategory_recommend
    • First observeditem_delete
    • First observeditem_get
    • First observeditem_list
    • First observeditem_publish
    • First observeditem_view
    • First observedlocation_default
    • First observedmedia_upload
    • First observedmessage_history
    • First observedmessage_list_chats
    • First observedmessage_send
    • First observedmessage_watch
    • First observedsearch_items
    • First observedskills_install

TDQS

B3.2/5.0

Scored across 17 tools

Disambiguation4/5

Most tools target distinct resources and actions, but item_get and item_view both retrieve item details and could be confused despite the API-vs-browser distinction. The messaging and auth tools are clearly separated.

Naming Consistency4/5

Most names follow a consistent snake_case resource_action pattern (auth_status, item_publish, message_send), with a few deviations such as search_items and skills_install. The set remains readable and predictable overall.

Tool Count4/5

Seventeen tools is slightly above the ideal range but reasonable for a CLI covering auth, item management, messaging, media, category, location, and skills. Each domain group is small and the tools mostly earn their place.

Completeness3/5

The surface covers login, search, list, view, publish, delete, media, category, location, and messaging well, but lacks an obvious item update/edit operation. Agents can work around this only by deleting and republishing, which is a notable gap.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    An MCP server that automates Xianyu marketplace operations through Playwright, allowing users to manage listings and conduct market research via natural language. It features integrated tools for generating AI-powered product descriptions and cover images using DashScope.
    11
    24
    -
  • F
    license
    A
    quality
    D
    maintenance
    A lightweight MCP server that lets AI assistants publish notes to Xiaohongshu (Little Red Book) via browser automation. Supports login, image-text note publishing with up to 9 images, and search.
    4
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that exposes browser automation tools and Taobao product search/detail lookup via Playwright. It requires a logged-in Taobao session and is best-effort scraping, not an official API.
    1
    ISC
  • F
    license
    C
    quality
    B
    maintenance
    Provides MCP interface to Xianyu (Goofish) for searching items, managing price watches, and monitoring prices via CLI, HTTP API, or MCP.
    37
    3
    -