Trans MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Trans MCP ServerTranslate this video into English with subtitles"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Trans MCP Server
Belindoc 翻译开放 API 的 MCP 服务:文档(PDF / Word / Excel / Markdown / 图片)和视频翻译、 字幕改写。
两种运行方式
stdio | HTTP 远程 | |
入口 |
|
|
跑在哪 | 用户自己的机器上 | 一台服务器上,多人共用 |
API Key | 服务端从 | 每个客户端自己带 |
传输 | stdio | Streamable HTTP(SSE + |
两种方式的工具、行为完全一致,包括服务端直接向用户弹窗确认(elicitation)和等待期间的 进度通知。部署 HTTP 模式看 DEPLOY.md。
Related MCP server: POEditor MCP Server
安装
从 PyPI 装即可,不用 clone 源码:
uvx belindoc-mcp # 试跑一下;客户端配置里也直接这么写,不用预装
# 或者
pipx install belindoc-mcp从源码装(开发、或要改代码)见 开发。
环境变量
变量 | 用在哪 | 说明 |
| stdio | 必需。格式 |
| 都 | 上游地址。不设即生产 |
| HTTP | 监听地址与端口,默认 |
| HTTP | MCP 服务端点路径,默认 |
| 都 | 用户可见文案的语言,默认 |
HTTP 模式不读 BELINDOC_API_KEY——别把真实 key 写进服务器的 .env。
完整注释见 .env.example。
获取 API Key
登录 https://belindoc.com → 「开放平台」→「API Key 管理」→ 创建。
客户端接入
stdio
{
"mcpServers": {
"trans-mcp": {
"command": "uvx",
"args": ["belindoc-mcp"],
"env": {
"BELINDOC_API_KEY": "ft_你的API密钥"
}
}
}
}配置文件位置:Claude Desktop 是 ~/Library/Application Support/Claude/claude_desktop_config.json,
Codex 是 ~/.codex/config.json。
uvx 会自己拉包、自己建隔离环境,用户不用预装,也不用管路径。前提是机器上有 uv
(curl -LsSf https://astral.sh/uv/install.sh | sh)。
从源码装的话,command 必须填绝对路径——pip install -e . 之后 venv 里会生成
belindoc-mcp 这个可执行文件,填它的完整路径(形如
/path/to/trans-mcp/.venv/bin/belindoc-mcp)。客户端不走登录 shell,PATH 里通常没有
这个 venv,写裸命令名会起不来。
不想把 key 写进客户端配置的话,也可以放进项目根目录的 .env,启动时自己加载:
cp .env.example .env # 填入 API Key
source .env && belindoc-mcpHTTP 远程
{
"mcpServers": {
"belindoc": {
"type": "streamablehttp",
"url": "http://mcp.belindoc.com/mcp",
"headers": {
"Authorization": "Bearer ft_你的API密钥"
}
}
}
}Codex CLI 的 HTTP MCP 发不了自定义请求头,只能用 Bearer;走 ~/.codex/config.toml 的话:
[mcp_servers.belindoc]
url = "http://mcp.belindoc.com/mcp"
bearer_token_env_var = "BELINDOC_API_KEY"接上之后
调一次 get_account_status 验证密钥通不通,顺便看余额。想知道这个客户端支不支持服务端
弹窗确认(关系到视频提交走一步还是两步),调一次 probe_elicitation——它不翻译、不提交
任务、不扣额度。
典型流程
文档:upload_document 取预签名链接 → 按返回的 uploadCommand 上传 →
(PDF 才要)check_pdf_ocr 看是不是扫描件 → translate_document 提交 →
wait_for_translation 跟进 → get_document_translation_result 取下载链接。
视频:upload_video → 上传 → calculate_video_translation_quota 试算 →
translate_video 提交(两步确认,见下)→ wait_for_video_translation 跟进。
想改字幕重出一版:get_video_subtitles → calculate_rewrite_quota →
rewrite_video_subtitles → get_video_rewrite_status。
上传由调用方自己执行返回的 uploadCommand,服务端不碰用户机器上的文件;下载给的是
签名链接,问号后面的签名参数一个字符都不能改,截掉就是 403。
工具列表
账户与元信息
工具 | 说明 |
| 支持的语言列表(79 种,语言码 → 显示名) |
| 当前账户可用的翻译模型 |
| 可用额度、会员档位、各项限额(单视频时长 / 并发数 / 单文件大小) |
文档翻译
工具 | 说明 |
| 取文档的预签名上传链接 |
| 判断已上传的 PDF 是不是扫描件 / 双层 PDF |
| 提交文档翻译任务 |
| 等待任务完成,进度一有变化就返回 |
| 查单个任务状态 |
| 取译文下载链接 |
| 分页查任务列表 |
| 按批次号查任务 |
视频翻译
工具 | 说明 |
| 取视频的预签名上传地址 |
| 试算要花多少额度,不扣费 |
| 提交视频翻译任务(会真扣额度,两步确认) |
| 等待任务完成,进度一有变化就返回 |
| 查单个任务状态 |
| 分页查任务列表(只有最近 15 天) |
| 取消任务 |
字幕改写
工具 | 说明 |
| 取原文与译文字幕下载地址 |
| 试算改写要花多少额度,不扣费 |
| 用编辑后的字幕重新生成视频(会真扣额度,两步确认) |
| 查改写进度 |
排查
工具 | 说明 |
| 自检:这个客户端到底吃不吃 elicitation。不翻译、不提交、不扣额度 |
扣费确认
translate_video 和 rewrite_video_subtitles 会真扣额度,所以提交是两步,第一次
一定不会提交:
客户端支持 elicitation 时,服务端直接弹窗问用户,一次调用即可;
不支持时退回确认码:第一次调用返回 409 + 一段给用户看的话 + 一张菜单(配音 × 字幕的各种组合,每格自带额度和
confirmToken),把菜单原样给用户看、他挑了哪一项, 就用那一项的confirmToken重调一次,这一次才真的提交。
之所以不能只信一个 user_confirmed=true:那种布尔量永远是模型自己填的,服务端无法验证
背后到底有没有问过人。想知道某个客户端走哪条路,调一次 probe_elicitation。
输出语言
会被念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)支持九种
语言:zh / zh-Hant / en / ja / ko / de / fr / ru / ar。工具描述和给模型
的操作指令始终是中文——那是写给模型的。
优先级:工具参数 locale > 服务端 MCP_LOCALE > zh。
故障排除
认证失败 (10004)
API Key 不对、没注册、或格式错(必须 ft_ 开头共 43 字符)。先 echo $BELINDOC_API_KEY
确认,再去平台看 key 的状态。
密钥类错误码 (30306 / 30307 / 30308 / 30309 / 30312)
这几个上游一律用 HTTP 200 送回来,业务码在响应体里。工具会把它们翻成一句可执行的话 (key 没复制全 / 被禁用要重新启用 / 已过期 / IP 不在白名单 / 需联系客服),并明确标注 重试、换参数、重新上传都没有用。只有 30311 是该退避重试的。
接口不存在 (404)
返回里会写明「接口 X 在当前服务地址(Y)上不存在」。这不是网络故障,是该功能在这个环境
没部署,或者 BELINDOC_API_BASE_URL 指错了环境。重试无用。
连接超时
检查后端是否在跑、网络是否通、防火墙是否放行。
开发
cd /path/to/trans-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/发布到 PyPI
pip install build twine
python -m build # 出 dist/*.whl 和 dist/*.tar.gz
twine upload dist/*发之前先把 pyproject.toml 的 version 加上去——PyPI 的同一版本号只能传一次。
python -m build 之前先 rm -rf dist/,否则旧版本会跟着一起传上去。
包是公开的,所以别往仓库里放任何只该留在内部的东西:README.md 会原样变成 PyPI
首页,tests/ 会进 sdist。加内容前对着 tar tzf dist/*.tar.gz 看一眼。
根目录的 test_api.py / test_upload.py 是手动连真实 API 的冒烟脚本,不是用例,
pytest 只收集 tests/。
项目结构
PyPI 包名是 belindoc-mcp,仓库目录和 Python 模块仍叫 trans-mcp / trans_mcp——
后两个用户看不见,跟着改要动 Dockerfile、systemd 单元和已在跑的服务器的升级路径。
trans-mcp / trans-mcp-http 这两个命令也照旧留着,部署脚本在调它们。
trans-mcp/
├── README.md # 本文件
├── DEPLOY.md # HTTP 远程模式的部署
├── INTEGRATION.md # 客户端配置速查
├── CONFIG.md # 环境变量速查
├── pyproject.toml
├── .env.example
├── src/trans_mcp/
│ ├── server.py # stdio 入口
│ ├── http_server.py # HTTP 入口(Streamable HTTP)
│ ├── tools.py # 工具定义与处理器(两种模式共用)
│ ├── client.py # 上游 API 客户端
│ └── i18n.py # 用户可见文案的九种语言
├── tests/
├── deploy.sh # Docker 部署
├── deploy-linux.sh # systemd 部署
└── server.sh # 本机起停许可证
MIT License
Available Tools
23 toolscalculate_rewrite_quotaA
试算「用改好的字幕重新生成视频」要花多少额度,不扣费。改写是一单新的翻译任务、按视频时长计价,和第一次翻译同价,不是免费返工。校对字幕之前就可以先问这一句,把数字告诉用户。
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 把要念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)输出成哪种语言。按用户当前说话的语言填,不确定就别传——不传取服务端 MCP_LOCALE,再没有就是 zh。 | |
| order_no | Yes | 原视频翻译订单号(videoTranslateOrderNo) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and handles it well: it clearly states the operation is non-charging ('不扣费'), explains the pricing basis (video duration), and corrects the misconception that rewriting is free. It does not discuss auth or side effects, but the non-destructive nature is explicitly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with no filler. It front-loads the core purpose, adds the no-charge caveat, gives pricing context, and ends with a practical usage note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one required parameter, full schema coverage, and no output schema. The description explains the quota semantics and even tells the agent to report the number to the user, which partially covers the return value. Since there is no output schema, a bit more explicit detail about the returned format could help, but the context is adequate for a simple calculator.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 fully documented. The description adds no new parameter-level detail, but it does supply useful pricing context that helps the agent understand why order_no matters. This matches the baseline of 3 when the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it calculates quota for regenerating a video with corrected subtitles, and explicitly notes it does not charge ('不扣费'). It also distinguishes this from first-time translation by explaining rewrite is a new translation task priced identically, not a free rework.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: before proofreading/correcting subtitles, ask this first and relay the number to the user. It implies this is the right tool for rewrite-cost questions rather than initial translation quota, though it does not explicitly name sibling tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_video_translation_quotaA
试算视频翻译要消耗多少额度,不扣费。提交 translate_video 前应当先调这个并把结果告诉用户。video_duration 必须是从文件里真实读出来的时长(ffprobe 等),不能按文件大小猜——服务端核实不了这个输入,猜错就等于给用户报了个假预算。计费规则:按 30 秒为一个计费单位向上取整,每单位 4 额度;voice_role 为 clone 且 subtitle_type≠0 时额度翻倍(实测 10 分钟视频:不配音 80 额度,开克隆配音 160 额度)。返回里如果带 limitWarning(视频超出会员档的时长上限)或 quotaWarning(余额不够),请先把那句话原样告诉用户再往下走——这两种情况提交上去会被服务端直接拒,白传一次文件。
| Name | Required | Description | Default |
|---|---|---|---|
| voice_role | No | 配音开关,只有两个取值:No=不配音、只做字幕翻译(默认,与产品前端一致);clone=克隆原说话人音色做配音。clone 且 subtitle_type≠0 时**额度翻倍**——10 分钟视频 80 额度会变成 160,所以要不要配音必须先问用户,不要替他决定。服务端对本字段只校验非空,填其他值不会报错但会白扣额度,不要传这两个之外的值。 | |
| subtitle_type | No | 0=不嵌入字幕, 1=翻译字幕(默认), 2=原始字幕, 3=翻译+原始字幕 | |
| video_duration | Yes | 视频时长,单位是**毫秒**(不是秒)。例如 2 分 5 秒要传 125000,传成秒会让试算额度远低于实际扣费。必须是文件的真实时长:用 ffprobe(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 <文件>,得到的是秒,乘 1000)或其他媒体信息工具读出来。严禁按文件大小估算——码率差异极大,实测有把 21 秒的 4.8MB 视频猜成 5 分钟的,报给用户的预算因此差了十倍。读不到真实时长就别试算,先告诉用户你读不到。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it states '不扣费' (no charge), warns that the server can't verify video_duration, notes that invalid voice_role values '不会报错但会白扣额度', and explains the consequences of warnings (server rejection).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loaded: the first sentence states purpose and side effects, followed by billing rules and warnings. The ffprobe command, concrete examples, and repeated doubling warning each serve a necessary safety purpose, so no sentence feels wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly covers input semantics, billing rules, and warning fields, but because there is no output schema, it does not name the normal return field containing the calculated quota. It mentions limitWarning and quotaWarning explicitly, so the gap is minor but real for an agent needing to read the primary result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Every parameter has rich semantic detail beyond the schema: voice_role enumerates valid values and the doubling rule, subtitle_type lists all mappings, and video_duration specifies milliseconds, gives an ffprobe command, and explicitly forbids file-size estimation. Schema coverage is 100% and the description adds substantial operational value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens by stating the tool's exact function: '试算视频翻译要消耗多少额度,不扣费' (calculate video translation quota, no deduction). It also explicitly ties it to the workflow before '提交 translate_video 前应当先调这个', clearly distinguishing it from siblings like calculate_rewrite_quota.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: call before submitting translate_video and tell the user the result. It also provides a concrete condition for not calling ('读不到真实时长就别试算') and instructs how to handle limitWarning/quotaWarning before proceeding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_video_translationA
取消视频翻译任务。只能取消 status=0(未开始)的任务,已经开始的会返回 31008。
| Name | Required | Description | Default |
|---|---|---|---|
| order_no | Yes | 视频翻译任务订单号 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses a specific error code (31008) and the task-state precondition, which adds meaningful behavioral context beyond the tool name and schema. It could also mention irreversibility or success response, but the key edge case is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the first states the core purpose, the second adds the critical usage constraint and error behavior. No filler or redundant repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential context: purpose, the eligible task status, and the error returned for ineligible tasks. Since there is no output schema, a brief mention of the success return format would improve completeness, but the core information needed to invoke the tool correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single parameter, describing order_no as the video translation task order number. The tool description adds no additional parameter-level detail beyond what the schema states, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (cancel) and resource (video translation task), and the constraint (only status=0 tasks) distinguishes it from video creation/status/rewrite sibling tools. An agent can immediately identify this as the cancellation operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when the tool can be used (only status=0 tasks) and what happens if misused (error 31008 for started tasks). It does not explicitly name a sibling alternative for checking status, but the precondition is clear enough to guide usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_pdf_ocrA
判断一个已经传上去的 PDF 是不是扫描件(图片版)。PDF 传完就调它——看到「上传结果 HTTP 200」之后、提交翻译之前,把 objectKey 传进来。只有 PDF 需要,其他格式不用调。返回 isOcr=1 表示扫描件、翻译要走 OCR(扣的是 OCR 额度,和普通翻译不是同一本账,请把这点告诉用户),isOcr=0 是文本版 PDF;isDoubleDeck=1 表示双层 PDF(扫描图上盖了一层文字)——这种直接翻会翻到那层往往是错的文字上,返回的 msg 里会给出拍平工具的链接,请原样转述给用户,让他先拍平再重新上传。结果会被记住,随后 translate_document 直接复用、不会重复检测,也不用你把 is_ocr 填回去(检测只负责把扫描件标出来,不会去关掉别人显式打开的 OCR)。大文件可能要等十几秒到一分钟,那是服务端在下载并分析整个 PDF,属正常。测不出来时返回 code=500——那不影响提交,照常翻就是了。
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | No | 文件名,只用于返回里的可读说明,可不传 | |
| file_object_key | Yes | 上传时拿到的 objectKey |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it excels. It discloses latency expectations ('大文件可能要等十几秒到一分钟'), explains that results are cached and reused, clarifies that the tool never turns off OCR explicitly enabled by others, and describes the code=500 case as non-fatal. It also explains quota implications and the double-deck PDF flattening flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but dense and every sentence serves a purpose. It is front-loaded with the core purpose, then moves through call timing, format restrictions, return interpretation, downstream behavior, latency, and error handling. No filler or redundancy is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly explains isOcr, isDoubleDeck, msg, and code=500. It also covers the complete workflow: when to call it, how to act on each result, whether to propagate OCR settings, and how to handle delays and errors. Nothing essential is missing for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions file_object_key contextually as the object key obtained from upload, and file_name is already described in the schema as an optional readable label. The description adds no additional parameter-level semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: '判断一个已经传上去的 PDF 是不是扫描件(图片版)' — it clearly states the tool's function of detecting whether an uploaded PDF is a scanned/image document. It also distinguishes itself from other file-handling tools by explicitly noting that only PDFs need this check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives precise when-to-use guidance: call it after the upload returns HTTP 200 and before submitting translation. It explicitly states that non-PDF formats do not need this call, and it explains how the result feeds into translate_document, including that no is_ocr value needs to be passed back. Alternatives and follow-up actions are fully covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_statusA
查询账户的可用额度、会员档位和各项限额。要报余额、要判断「够不够翻这一单」时用它——额度数字必须来自本工具,不要从之前某一单的实扣去推算,两者不是一回事(那是本次消耗,不是余额)。返回里 quota.wallet 是可用额度,报余额就报它——它已经含了今日免费的消耗,别再拿 freeUsed/freeTotal 去加。freeUsed/freeTotal 是今日免费额度的用量计数,ocrWallet/ocrFreeUsed 是上游单独发的一组 OCR 数字(实测和 wallet 同步增减,走不走 OCR 都一样),这两组都不是另一份余额。advanced 是高级模型额度(get_model_list 里 coefficient>1 的那几个),归属还没实测过。limits 是当前会员档的硬限制:videoDurationMinutes 单个视频最长多少分钟、videoConcurrency 视频任务能同时跑几个、uploadFileSizeMB 单文件多大。这些限制服务端会真的按它拒绝提交,所以准备翻一个长视频之前先看一眼。注意免费用户另有「每月累计视频时长」上限,本接口看不到,只有提交时才会撞上。查不到时返回 code=500,请如实告诉用户查不到,不要拿估算值顶上。
| Name | Required | Description | Default |
|---|---|---|---|
| refresh | No | 跳过 5 分钟缓存重新查。刚扣过费想看最新余额时传 true,平时不用传。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and excels: it clarifies that quota.wallet already includes free consumption, freeUsed/freeTotal are not balances, OCR numbers sync with wallet, limits are enforced server-side, and error code 500 is returned when not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Though long, every sentence adds critical caveats and correct misconceptions. It flows from purpose to balance semantics, limits, and error handling—front-loaded and well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, yet the description thoroughly explains return fields, their meanings, hard limits, a hidden limitation, and failure behavior. Nothing essential for correct invocation and interpretation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of the refresh param. The description adds no additional param info, but baseline 3 is appropriate per high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: '查询账户的可用额度、会员档位和各项限额' (query account's available credit, membership tier, and limits). This clearly distinguishes it from sibling translation/document tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use it: '要报余额、要判断「够不够翻这一单」时用它', and warns against inferring balance from prior order deductions. However, it does not name alternative sibling tools (e.g., calculate_video_translation_quota) for related cost checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_translation_by_batchC
通过批次号查询翻译任务
| Name | Required | Description | Default |
|---|---|---|---|
| batch_no | Yes | 批次号 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but '通过批次号查询翻译任务' merely implies a read-only lookup. It does not mention response shape, polling semantics, error behavior, or any side effects, so an agent cannot predict behavior beyond the basic verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler and the key lookup criterion is front-loaded. Its brevity sacrifices informational depth, but it is clean, scannable, and contains only meaningful words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the simple one-parameter schema, there is no output schema and no description of what the tool returns. Sibling tools with different purposes (status, result, list) make this ambiguity material, so the description is not complete enough for an agent to reliably select and interpret the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% because batch_no is already documented as '批次号'. The description repeats that concept in '通过批次号' without adding format, example values, or clarification of where the batch number comes from, so it adds no real value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('查询' / query), the target resource ('翻译任务' / translation task), and the lookup key ('批次号' / batch number), so the tool's basic purpose is clear. However, it does not differentiate itself from sibling tools such as get_document_translation_status or get_document_translation_result, which also query translation-related information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of related siblings like get_document_translation_status, get_document_translation_result, or list_document_translations. The one-line description provides no usage context, exclusions, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_translation_resultA
获取文档翻译结果下载链接。url_type 决定版式:1=原文、2=纯译文(默认)、3=横向对照(左右并排,仅 PDF)、4=纵向对照(原文与译文上下排列,仅 PDF 与 EPUB)。对照版是取的时候现合成的,第一次取可能要多等一会儿——慢是正常的,别当成失败去重试,更不要因此改回纯译文;也正因为要合成,翻译完成时不会替用户预先取好,用户点名要哪一版再来调。要译文不要传 1。返回的 url 走 CloudFront,url2 为国内兜底线路。两条链接都带签名参数,转述给用户时必须连问号后面的 Signature/Key-Pair-Id/expires/sign 一起原样给全,截断或缩短会导致 403 MissingKey。
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 把要念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)输出成哪种语言。按用户当前说话的语言填,不确定就别传——不传取服务端 MCP_LOCALE,再没有就是 zh。 | |
| order_no | Yes | 翻译任务订单号 | |
| url_type | No | 1=原文, 2=纯译文(默认), 3=横向对照/左右并排(仅 PDF), 4=纵向对照/上下排列(仅 PDF 与 EPUB) | |
| is_watermark | No | 0=无水印(默认),1=带水印。无水印需要账号权限,若返回失败提示权限不足再改传 1。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It discloses non-obvious behavior: comparison versions are synthesized on demand and not prefetched, slowness on first fetch is normal, URLs use CloudFront with url2 as domestic fallback, and query-string signature parameters must be preserved verbatim or the link fails with 403. This is far beyond a bare statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then packs related warnings and URL-handling rules into a dense but purposeful paragraph. There is no filler or duplicated schema content, and each clause adds operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description goes beyond the basics by explaining the response's two link fields, the signing requirement, the 403 failure mode, and the latency behavior. It also embeds parameter constraints and user-facing instructions, leaving no major gap for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all four parameters (100% coverage), so the baseline is 3; the description nevertheless adds operational meaning for url_type (including the warning '要译文不要传 1' and the PDF/EPUB constraints) and explains the meaning of url/url2 in the response. It doesn't need to repeat locale/order_no/is_watermark because the schema covers them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with the concrete action '获取文档翻译结果下载链接' (get document translation result download link), naming both the verb and the exact resource. By describing download-link retrieval rather than status, it clearly separates it from sibling tools like get_document_translation_status and list_document_translations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use conditions for each url_type and states when not to act: '对照版是取的时候现合成的,第一次取可能要多等一会儿……别当成失败去重试,更不要因此改回纯译文' and '用户点名要哪一版再来调'. It does not explicitly name alternative sibling tools, so it falls just short of a full when/when-not comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_translation_statusA
查询文档翻译任务状态。返回里不带下载地址——详情给的是上游默认生成的带水印版本,水印开关只对 get_document_translation_result 生效,要下载一律走那个工具。
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 把要念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)输出成哪种语言。按用户当前说话的语言填,不确定就别传——不传取服务端 MCP_LOCALE,再没有就是 zh。 | |
| order_no | Yes | 翻译任务订单号 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It discloses a non-obvious behavior: the response contains no download URL, and the details returned are watermarked. It also clarifies that the watermark toggle only affects get_document_translation_result, preventing a likely misuse. It does not describe status values or error behavior, but the core behavioral trap is addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The purpose is front-loaded and the critical caveat about downloads and watermarks is stated immediately after, making the most important operational detail highly visible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a status-query tool with no output schema and no annotations, the description covers the essential purpose and the most likely source of confusion (downloads/watermarks). It does not enumerate possible status values or polling behavior, but for a simple status check this is a minor gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (locale and order_no) in sufficient detail. The tool description adds no parameter-specific meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('查询文档翻译任务状态' - query document translation task status). It clearly distinguishes itself from the sibling get_document_translation_result by stating that this tool does not return download addresses and that the watermark switch only affects the result tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit routing guidance: if the user needs to download the translated document, always use get_document_translation_result. It also explains why (this tool returns only the upstream default watermarked version), making the alternative selection unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_listA
获取当前用户可用的翻译模型列表。请在调用 translate_document 之前调用此工具,并让用户选择一个模型。返回的 data 是对象列表:model 是提交时要填的模型名,coefficient 是计费倍率——倍率 3 的模型翻同样的量扣三倍额度,请把倍率一并告诉用户再让他选。locked 里是当前会员档位还用不了的模型,不要拿它们去提交。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral transparency burden. It explains the return data structure (list of objects), the meaning of each field (model, coefficient, locked), and the billing implications (coefficient 3 consumes 3x quota). It stops short of discussing potential errors or authorization details, but for a read-only list tool this is strong context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, information-dense, and every sentence earns its place. It front-loads the purpose, then gives workflow ordering, return field semantics, billing behavior, and a warning about locked models—all without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description compensates fully by explaining the return data structure and field meanings. It also provides enough workflow context (call before translate_document, let user choose) for the agent to use the tool effectively. No critical missing information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to elaborate on parameters since none exist, and the schema already reflects that. No additional parameter-level context is required or possible.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 further distinguishes itself by explicitly tying its usage to the translate_document workflow. It is clearly separated from sibling tools like get_supported_languages because it is about model selection for translation, not just languages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: call this tool before translate_document, have the user pick a model, relay the coefficient (billing multiplier), and avoid locked models for submission. This covers when to use, how to present results, and what not to do, leaving no ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_supported_languagesA
获取支持的语言列表(语言码 -> 显示名)。请在调用 translate_document 之前调用此工具,让用户选择源语言和目标语言。
| Name | Required | Description | Default |
|---|---|---|---|
| display_locale | No | 显示名使用的界面语言,默认 zh。可选 en、zh、zh-Hant、ja、ko、fr、ru、de、ar |
TDQS
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 adds useful context — the return mapping (language code -> display name) and the orchestration role — but does not disclose the exact response structure, error behavior, or explicitly confirm a read-only/no-side-effect profile. Adequate but with a real gap given zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the first names the function and return content, the second gives usage sequencing. Every sentence earns its place, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple list tool with one optional parameter: it states what is returned and when to call it. Since there is no output schema, the return-value hint ('语言码 -> 显示名') partially compensates, though the exact response shape remains unspecified. A minor but non-critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with display_locale fully documented in the schema (default zh, allowed values listed). The description adds no new parameter semantics beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 specifies the return content (language code -> display name). This clearly differentiates it from sibling list tools like get_model_list, so an agent can select it correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs calling this tool before translate_document so the user can choose source and target languages. It gives clear sequencing context and purpose, but doesn't mention whether it also applies to video translation workflows (translate_video) or name any exclusions, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_rewrite_statusA
查询字幕改写任务的进度。上游是 SSE 流,本工具取第一帧数据就返回。状态含义同视频翻译:0 未开始 / 1 进行中 / 2 成功 / 3 失败 / 4 已取消。改写成功后回到原视频订单号调 wait_for_video_translation 或 get_video_translation_status 取产物,那边会带上改写版并说明产出。
| Name | Required | Description | Default |
|---|---|---|---|
| order_no | Yes | 改写任务订单号 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. It discloses the non-obvious SSE first-frame behavior, defines all status codes, and explains what happens after success. This is strong transparency for a polling endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three dense sentences with no filler: purpose, status semantics, and downstream action. Each sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description tells the agent exactly what statuses to expect, how the upstream behaves, and where to retrieve the final rewrite artifacts. For a one-parameter status endpoint, this is complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents order_no as '改写任务订单号'. The description references order-related context but does not add new parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence clearly identifies a specific verb and resource: querying the progress of a subtitle rewrite task. It differentiates itself from sibling tools by focusing on rewrite tasks rather than translation tasks, and the downstream references to get_video_translation_status make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to use this tool for rewrite-task progress, and after success to switch to wait_for_video_translation or get_video_translation_status with the original video order number. This provides clear when-to-use and next-step alternatives without leaving the decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_subtitlesA
获取视频的原文与译文字幕下载地址。任务 status 必须是 2(成功),否则返回 31008「文件翻译中」。若该任务已有改写记录,返回的是最近一次改写后的字幕。地址有有效期,以返回里的说明为准。
| Name | Required | Description | Default |
|---|---|---|---|
| order_no | Yes | 视频翻译任务订单号 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does this well by revealing the error code 31008, the rewrite-record behavior, and the expiration of returned URLs. This is meaningful context beyond a simple retrieval statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, each earning its place: purpose, status precondition, rewrite behavior, and expiration caveat. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter retrieval tool with no output schema, the description covers purpose, preconditions, error handling, rewrite handling, and URL expiration. An agent has the necessary information to call it correctly and interpret expected responses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for order_no with a clear description. The tool description adds contextual constraints but no additional parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: obtaining the original and translated subtitle download addresses for a video. It clearly distinguishes itself from sibling status/rewrite tools by emphasizing download addresses and the rewrite-record behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies the precondition that task status must be 2, and describes the failure mode when this condition is not met. Although it doesn't explicitly name sibling alternatives, the status precondition gives clear guidance on when to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_translation_statusA
查询单个视频翻译任务的状态。上游是 SSE 流,本工具取第一帧数据就返回,不会挂住。状态:0 未开始 / 1 进行中 / 2 成功 / 3 失败 / 4 已取消——注意 2 就是完成,和文档翻译的状态码不是一套,别混用。进行中时 step 表示阶段(1 语音识别 / 2 字幕翻译 / 3 语音生成)。任务通常要几分钟,建议 10-30 秒查一次,并把进度转述给用户。
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 把要念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)输出成哪种语言。按用户当前说话的语言填,不确定就别传——不传取服务端 MCP_LOCALE,再没有就是 zh。 | |
| order_no | Yes | 视频翻译任务订单号 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently discloses behavior beyond the minimal annotation: it returns immediately after the first SSE frame (does not hang), defines all status codes (0-4) with a warning not to confuse with document translation codes, explains step meanings, and recommends a polling interval. This is substantial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise but includes essential contextual warnings and usage advice. It is front-loaded with the core purpose and flows logically through behavior, status codes, steps, and polling recommendation, making it well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, non-blocking behavior, status code meanings, step meanings, polling advice, and locale guidance. It lacks an explicit mention of the response format, but the status and step explanations provide sufficient context for a status query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides comprehensive descriptions for both parameters, especially locale (purpose, fallback to MCP_LOCALE, default zh). The tool description adds no additional parameter clarification, so the baseline for high schema coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool queries the status of a single video translation task ('查询单个视频翻译任务的状态'), clearly specifying the action and resource. This distinguishes it from sibling tools like get_video_rewrite_status or get_document_translation_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises polling every 10-30 seconds and warns about the status code difference from document translation, giving practical guidance. It does not explicitly mention alternatives like wait_for_video_translation, but the non-hanging behavior ('不会挂住') implicitly suggests this tool is suitable for polling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_document_translationsA
查询文档翻译任务列表。只用来找单号和看状态,不带下载地址;要下载用 get_document_translation_result,它才认 is_watermark,链接也是现签发的。
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 把要念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)输出成哪种语言。按用户当前说话的语言填,不确定就别传——不传取服务端 MCP_LOCALE,再没有就是 zh。 | |
| status | No | 任务状态过滤,可选 | |
| page_num | No | 页码,默认 1 | |
| page_size | No | 每页数量,默认 10 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It transparently states that download addresses are not included and points to the alternative tool that handles is_watermark and signed links, giving clear behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary purpose and immediately followed by a clear limitation and pointer. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list-query tool, the description covers its function, its limitation (no download links), and directs users to the correct alternative. Combined with the schema's parameter descriptions, an agent has all necessary context to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all four parameters (100% coverage), so the description itself adds no additional parameter semantics. It neither enhances nor contradicts the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose (query a list of document translation tasks) and explicitly distinguishes it from the sibling tool for downloading results, so an agent can immediately understand its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool (for finding order numbers and statuses) and when not to (for downloading, use get_document_translation_result instead). This leaves no ambiguity about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_video_translationsA
分页查询视频翻译任务列表,只返回最近 15 天的记录。status 过滤值:0 未开始 / 1 进行中 / 2 成功 / 3 失败 / 4 已取消。列表只用来找单号和看状态,不带下载地址(每条几百字符的签名链接,十条就上万字符,且大多用不上)。要交付某一单的产出,拿它的 videoTranslateOrderNo 调 get_video_translation_status 取链接,那边是现签发的,不必担心列表里的地址过期。
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 把要念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)输出成哪种语言。按用户当前说话的语言填,不确定就别传——不传取服务端 MCP_LOCALE,再没有就是 zh。 | |
| status | No | 状态过滤 | |
| page_num | No | 页码 | |
| page_size | No | 每页数量 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does it well: it discloses the 15-day retention window, the intentional absence of download links, the payload-size rationale, and the fact that even if links existed they could expire. It does not explicitly say the operation is read-only or describe pagination defaults, but the key non-obvious behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose, status mapping, no-download-links rationale, and the alternative routing are all stated compactly. The most important scoping constraints are front-loaded, and the explanation of why links are omitted is concise and not redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the essential return semantics: what the list is for, what it returns at a high level, what it intentionally omits, and the time window. It does not describe pagination response structure or default page sizes, but those are secondary for a list explicitly meant for status lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds considerable meaning for the status parameter by enumerating all filter values (0-4), and it explains that the response is meant to expose order numbers and statuses. It does not add much for page_num/page_size, but the status semantics alone justify above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('分页查询视频翻译任务列表'), defines the scope (recent 15 days), and explicitly clarifies the list's purpose: find order numbers and check status. It also differentiates itself from get_video_translation_status by directing delivery use cases there.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance: this list is only for finding order numbers and viewing status, not for fetching download links. It names the alternative tool to use for deliverables and tells the agent to pass videoTranslateOrderNo to get_video_translation_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
probe_elicitationA
连通性自检工具,不翻译、不提交任务、不扣任何额度。用来验证服务端能否通过 MCP elicitation 直接向用户提问(而不是靠模型自己填 user_confirmed 声称问过了)。调用后会返回客户端声明的能力,并在支持时真的弹一次提问。只在排查这个问题时调用,正常翻译流程不要调。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full behavioral burden. It discloses important side effects: no translation, no task submission, no quota deduction, and that it may actually pop up a question to the user if supported. It also states what the tool returns: client-declared capabilities.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the most important scoping information and every sentence earns its place. It covers negative effects, purpose, invocation behavior, return value, and usage restriction without redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema and annotations, the description provides enough context for correct invocation: what it does, what it returns, when to call it, and what side effects to expect. The low complexity of a zero-parameter tool means no additional detail is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to add beyond the empty input schema. The description adequately explains what happens on invocation, matching the baseline for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies it as a connectivity self-check tool with a specific verb and resource: verifying server-side MCP elicitation capability. It explicitly states what it does not do (translate, submit tasks, deduct quota) and distinguishes itself from normal translation workflow tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: only call when troubleshooting whether the server can directly ask the user via MCP elicitation. It also states a clear exclusion: do not call in normal translation flow, which prevents misuse among the many sibling translation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rewrite_video_subtitlesA
用编辑后的字幕重新生成视频。⚠️ 真实扣费,所以和 translate_video 一样是两步调用:第一次不带 confirm_token,本工具不提交、不扣费,只回 409 加一段 data.userPrompt(里面有试算出来的真实额度)和一个 data.confirmToken;把 userPrompt 原样发给用户,等他明确同意,再带上那个 confirmToken 重新调用才会真的提交。客户端支持服务端弹窗时,本工具会直接问用户,同意即提交。确认码绑定「订单号 + 这两份字幕正文」,字幕改一行都要重新确认——用户同意的是他看过的那一版。原任务的 status 必须是 2(成功)。返回 data.videoTranslateRewriteOrderNo 是改写订单号,查进度用 get_video_rewrite_status。改写完成后请重新用原视频订单号去取产物(wait_for_video_translation 或 get_video_translation_status),它们会自动给改写后的那一版;改写前拿到的旧链接仍然有效,别再拿它当最终产物给用户。
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 把要念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)输出成哪种语言。按用户当前说话的语言填,不确定就别传——不传取服务端 MCP_LOCALE,再没有就是 zh。 | |
| order_no | Yes | 视频翻译任务订单号 | |
| confirm_token | No | 确认码,来自本工具上一次调用返回的 data.confirmToken。只有把 data.userPrompt 原样给用户看过、用户明确同意之后才带上它——带着它这一次就会真的扣费。首次调用不要传,也不要自己编。一次性、15 分钟有效,且绑定当时那两份字幕正文。 | |
| video_task_param | No | 可选,完整生成参数,覆盖首次提交时的参数;不传则沿用原任务的参数。字段同 translate_video 的 video_task_param。 | |
| source_subtitles_txt | Yes | 源语言字幕文本 | |
| target_subtitles_txt | Yes | 目标语言字幕文本 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and exceeds it: it discloses real billing, the non-committing first call returning 409 with data.userPrompt and data.confirmToken, the binding of the token to order + subtitle texts with 15-minute expiry, and the caveat that pre-rewrite links remain valid but must not be presented as final. This is exceptional behavioral disclosure for a mutating, billing-affecting tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a dense wall of text, but every sentence carries critical operational information for a billing-affecting tool: the two-step protocol, token semantics, prerequisites, and follow-up routing. The billing warning and two-step requirement are front-loaded. A structured step list would improve scannability, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema and no annotations, the description covers prerequisites, the exact 409 error contract, token lifecycle, the returned data.videoTranslateRewriteOrderNo field, the correct progress-checking tool, and the post-rewrite product retrieval flow. Nothing an agent needs to invoke this tool correctly and safely is missing for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds workflow-level meaning beyond the schema: it explains how confirm_token is obtained (from the prior 409 response), when it must be omitted vs. supplied, and that editing even one subtitle line invalidates prior consent — tying source_subtitles_txt and target_subtitles_txt to the confirmation semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening phrase '用编辑后的字幕重新生成视频' states a specific verb (rewrite/regenerate) plus resource (video) plus input (edited subtitles). It is immediately distinguishable from siblings: translate_video creates the original translation, get_video_subtitles fetches subtitles, and get_video_rewrite_status only checks progress.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives exhaustive usage guidance: the original task must be status 2, the first call must omit confirm_token, the second call must include it after user consent, progress is checked via get_video_rewrite_status, and final products are re-fetched via wait_for_video_translation or get_video_translation_status. Every relevant sibling and its role is named explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translate_documentA
提交文档翻译任务。请先调用 get_model_list 获取可用模型,调用 get_supported_languages 获取支持的语言列表,然后让用户选择模型和目标语言。返回中的 orders[].translateOrderNo 即订单号,直接用它调 wait_for_translation,无需再查列表。图片(png/jpg/jpeg)也走这个工具——服务端把它们当 IMAGE 类型,按 1 页计费,且一律走 OCR(扣的是 OCR 额度),不需要另外的图片翻译接口。支持的格式:PDF / DOCX / PPTX / XLSX / TXT / EPUB / 图片。提交前本工具会对 file_list 里的 PDF 自动判定是不是扫描件(只有 PDF 有这个概念),据此填 OCR 开关,结果在返回的 msg 和 ocrDetection 里——请把「走没走 OCR」原样告诉用户,那关系到扣哪一本额度。若返回 code=202,表示判定还没出来,本次没有提交、没有扣费(data.submitted / data.charged 都是 false,data.detecting 是还在测的文件):等十几秒用完全相同的参数再调一次本工具即可,不要重新上传文件、也不要改参数。这一步挡着是因为判错两边都要付代价:扫描件按普通 PDF 翻会出一片空白,OCR 又扣另一本额度。确实等不及、或者反复 202 一直不出结果,就显式传 is_ocr(0=按普通 PDF 翻,1=强制整批走 OCR)绕过它。若返回非 200(如 600 系统繁忙),说明是翻译服务侧的问题而非上传问题:用相同参数重试本工具即可,不要重新上传文件。
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | 翻译模型。这是必填项,请先调用 get_model_list 获取当前用户可用的模型列表,然后让用户选择。 | |
| is_ocr | No | 是否启用 OCR,0=否,1=是。**不要自己判断,正常情况下不要传**:提交前服务端会对每个 PDF 调分类接口,按真实结果逐个标记,比看文件名靠谱得多。这个参数的真实含义是「强制整批走 OCR」——服务端见到 1 就把批次里每个 PDF 都按 OCR 记账,不再看检测结果,文本版那几份等于白扣 OCR 额度。所以只有用户明确要求强制 OCR 时才传 1;传了不会被改掉,但返回里会提醒你这和检测结果不符。注意 OCR 扣的是 OCR 额度,和普通翻译不是同一本账。 | |
| file_list | Yes | 文件列表,每个文件包含 fileName 和 fileObjectKey | |
| source_language | Yes | 源语言代码,如 'en', 'zh-CN', 'ja', 'AnyLanguage'。如果用户未指定,请让用户从 get_supported_languages 返回的列表中选择。 | |
| target_language | Yes | 目标语言代码,如 'zh-CN', 'en', 'ja'。这是必填项,如果用户未指定,请让用户从 get_supported_languages 返回的列表中选择。 | |
| terminology_collection_id | No | 术语表 ID(选填)。带上之后,这一批文件里凡是命中术语表的词都按表里指定的译法翻。**不要自己编,也不要猜**:这个 ID 只能由用户提供——他登录 belindoc.com 网页端、在术语库页面拿到。本服务没有列出术语表的工具,因为上游管理术语表的那几个接口认的是网页登录态而不是 API Key。用户没主动提术语表就别传这个参数,更不要为了它去打断用户。另外上游收到这个 ID 既不校验归属也不校验存在:写错或写了个不存在的,提交照样成功、翻译照常跑,只是术语表静默不生效,事后没有任何地方看得出来——所以只转述用户给的原值,一个字符都不要改。 |
TDQS
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 is exceptionally transparent: it details OCR detection before submission, the meaning of code=202 (not charged), the data fields submitted/charged/detecting, the is_ocr override behavior and its side effects, the OCR quota implications, and that non-200 errors come from the translation service rather than upload. This goes far beyond a basic description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although long, every sentence carries meaningful, non-redundant operational information. Important warnings are bolded (code=202, no charge), and the narrative is front-loaded with the primary purpose. The density corresponds directly to the complexity of the tool, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return fields and side effects, and it does: orders[].translateOrderNo, msg, ocrDetection, data.submitted/charged/detecting. It also handles edge cases (202 retry, service-busy 600, is_ocr override) and prerequisite steps. For a tool with this complexity, the description is remarkably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself already provides detailed parameter descriptions. The tool description adds valuable operational context for parameters, especially is_ocr (when not to set it, what it means, and the warning about incorrect usage) and file_list (PDF scanning auto-detection). It slightly overlaps with schema content but enhances it with real usage guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '提交文档翻译任务' (submit a document translation task), names the supported formats, and explicitly distinguishes this from other siblings such as translate_video and wait_for_translation. It also explains that images go through this same tool, eliminating ambiguity about which tool to use for a given input type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit workflow: first call get_model_list and get_supported_languages, then let the user choose model and target language. It states exactly when to use this tool vs alternatives, including using the returned translateOrderNo to call wait_for_translation directly instead of re-querying lists, and that images do not require a separate interface. It also gives specific retry instructions for code=202 and non-200 responses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translate_videoA
提交视频翻译任务。⚠️ 本工具会真实扣减账户额度并计入调用次数,所以提交是一次两步调用,第一次一定不会提交: (1) 先用文件的真实时长调 calculate_video_translation_quota 试算,voice_role / subtitle_type 必须和接下来提交的值完全一致(对不上会被拒绝提交); (2) 带 voice_role 和 user_confirmed=true 调本工具,但不带 confirm_token——本工具此时不提交、不扣费,只返回 409、一段 data.userPrompt 和一张 data.options 菜单(配音 × 字幕的全部组合,每格带自己的额度和 confirmToken); (3) 把 data.userPrompt 原样发给用户,等他在菜单里挑一项或选放弃。做成什么样、扣多少额度是用户的决定,不要替他选,也不要只转述你自己那一组; (4) 用户挑了第几项,就用 data.options 里那一项的 voiceRole / subtitleType / confirmToken 三个值(必须同属一项,不能混、不能造菜单外的组合)重调一次,这一次才真的提交扣费;用户选放弃就到此为止。 (客户端支持 elicitation 时服务端会直接弹窗问用户,此时省去 3-4 步,一次调用即可。) voice_role 与 subtitle_type 决定这次翻译到底做什么:两者都关(voice_role 传 No 且 subtitle_type=0)等于既不配音也不嵌字幕,产出的视频和原片没有区别,但一样扣费——上游不拦这个组合,请在提交前自行拦下并问用户。返回 data.videoTranslateOrderNo 是后续所有查询用的订单号。同一份文件、同一目标语言 30 分钟内再次提交会被直接拒绝,除非带上 retry_of_order_no(上一单单号)和 retry_confirmed=true——任务失败后不要自己改个参数就重提,先把失败原因告诉用户、问过再说。限制:免费用户单个视频最长 10 分钟、每月累计 10 分钟、单文件 200MB、同时只能有 1 个进行中的任务(Pro 为 60 分钟/1024MB/2 个);这些是默认档位的值,账号实际的限额用 get_account_status 查,本工具提交前也会拿真实限额比一次,超了会直接拒绝(不提交、不扣费),到那时再重传剪短的文件就白传了一次。若 target_language 传 ar(阿拉伯语)且账号不是付费会员,上游要求人机验证 token,外部调用无法提供,会直接失败。
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 把要念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)输出成哪种语言。按用户当前说话的语言填,不确定就别传——不传取服务端 MCP_LOCALE,再没有就是 zh。 | |
| voice_role | Yes | 配音开关,只有两个取值:No=不配音、只做字幕翻译(默认,与产品前端一致);clone=克隆原说话人音色做配音。clone 且 subtitle_type≠0 时**额度翻倍**——10 分钟视频 80 额度会变成 160,所以要不要配音必须先问用户,不要替他决定。服务端对本字段只校验非空,填其他值不会报错但会白扣额度,不要传这两个之外的值。 | |
| confirm_token | No | 确认码,来自本工具上一次调用返回的 data.options 里用户挑中的那一项。只有在把 data.userPrompt 原样给用户看过、用户明确选了某一项之后才带上它——带着它这一次就会真的扣费。首次调用不要传,也不要自己编一个。确认码自己记着它代表菜单里的哪一格:带上它时,配音和字幕按那一格定,你传的 voice_role / subtitle_type 会被忽略,所以不用去对,也别想用它换一格。一次性、15 分钟有效。 | |
| subtitle_type | No | 0=不嵌入字幕, 1=翻译字幕(默认), 2=原始字幕, 3=翻译+原始字幕 | |
| user_confirmed | Yes | 用户已经看到试算额度、并明确选择了是否开启同声翻译(配音)后才传 true。为空或 false 时直接拒绝提交。注意它只是入场券:填了 true 也不会直接提交,还要走 confirm_token 这一步(或服务端弹窗)拿到用户本人的确认。 | |
| retry_confirmed | No | 重做时必填 true:表示已经把上一单的结果或失败原因告诉用户、并得到用户明确同意再扣一次费。不要自己填。 | |
| source_language | Yes | 源语言代码 | |
| target_language | Yes | 目标语言代码 | |
| video_file_name | Yes | 视频文件名 | |
| video_task_param | No | 完整的生成参数,覆盖 voice_role / subtitle_type 这两个快捷参数。配音:voiceRate 语速、volume 音量、pitch 音调(均为 +0% / +0Hz 这类字符串)、voiceAutorate 语音自动变速、videoAutorate 视频自动变速(默认都 true)。字幕样式:fontsize 字号(默认14)、fontname 字体、fontcolor 颜色(#RRGGBB)、fontbold 加粗、subtitlePosX 水平位置 5-95(50居中)、subtitlePosY 底边距 0-90、fontbordercolor 描边色、outline 描边宽 0-10(0关闭)、shadow 阴影 0-10(0关闭)、backgroundcolor 背景框色、borderStyle 1普通描边/3逐行矩形背景框。不传的字段走服务端默认值。注意服务端对这些字段一个都不校验,填了非法值不会报错、会照常扣费然后在生成阶段失败,不确定就别传。 | |
| retry_of_order_no | No | 重做时必填:上一单的 videoTranslateOrderNo。同一份文件、同一目标语言 30 分钟内再次提交会被拒绝,除非带上这个单号并把 retry_confirmed 置 true。 | |
| source_file_object_key | Yes | 视频文件对象 key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and succeeds completely: it warns that the tool '会真实扣减账户额度并计入调用次数' (really deducts quota and counts calls), that the both-off combination still charges despite producing an identical video, that the first call returns 409 with a userPrompt/options menu instead of submitting, that identical submissions within 30 minutes are rejected, and that video_task_param fields are not validated server-side so bad values charge then fail at generation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place — the cost warning is front-loaded as the first thing, followed by the protocol, the charge-despite-no-op warning, retry rules, and limits. However, the entire message is one dense wall of text with no paragraph breaks, numbered blocks, or bullets, which taxes readability for a 12-parameter, high-risk tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema and no annotations, nothing an agent needs is missing: the two-step protocol, the 409 response shape (data.userPrompt, data.options with per-cell quota and confirmToken), the order number for later queries, default limits with a pointer to get_account_status, the 'ask the user, don't decide for them' instruction, and the Arabic edge-case failure. The description is fully self-sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds orchestration semantics the schema cannot: confirm_token overrides voice_role/subtitle_type ('你传的 voice_role / subtitle_type 会被忽略'), option-menu values must come from the same cell ('不能混、不能造菜单外的组合'), and retry_of_order_no requires retry_confirmed=true. It even preserves a precise naming distinction, using camelCase voiceRole/subtitleType/confirmToken when referring to menu items versus snake_case for API parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific verb+resource ('提交视频翻译任务' — submit a video translation task) and the description then defines a precise submission protocol. It differentiates from siblings by naming calculate_video_translation_quota as the mandatory pre-step, get_account_status for real limits, and explaining that the returned data.videoTranslateOrderNo feeds all subsequent query tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit step-by-step when-to-call protocol: first call without confirm_token never submits, second call with confirm_token actually commits. It states exclusions and prerequisites — Arabic (ar) with a non-paid account will fail due to human-verification token requirements, real limits must be checked via get_account_status, and retries require asking the user first rather than silently changing parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_documentA
取文档的预签名上传链接。拿到链接后原样执行返回的 uploadCommand(只替换其中的文件路径,Content-Disposition 一个字符都不能改,否则 S3 报 SignatureDoesNotMatch)。上传是访问外网,你那边默认没有网络权限的话,第一次执行就把联网权限一起要上,别先试一次失败再补申请。上传成功后用返回的 objectKey 作为 fileObjectKey 调 translate_document。
| Name | Required | Description | Default |
|---|---|---|---|
| file_name_list | Yes | 文件名列表,如 ['contract.pdf', 'doc.docx'] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does so well: it warns about SignatureDoesNotMatch if Content-Disposition is altered, tells the agent to request network permission upfront, and specifies post-conditions (upload success, then use objectKey). This goes far beyond a simple 'get link' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence serves a purpose: purpose, execution caution, network handling, downstream chaining. Minor redundancy in the network instruction ('first time' vs 'don't try fail first') costs a little, but overall it's efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately reveals the expected return fields (uploadCommand, objectKey) and how to proceed. It could detail error handling beyond SignatureDoesNotMatch, but the essential workflow for successful use is fully specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description need not repeat parameter meaning; it doesn't add extra semantics beyond mentioning the file path replacement in uploadCommand, which is not a direct parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: obtain a pre-signed upload link for a document, then instructs executing the returned uploadCommand. This clearly distinguishes it from siblings like translate_document and upload_video, which handle different stages of the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the exact workflow: get link, execute uploadCommand as-is, then call translate_document with objectKey. It also provides conditional guidance on network permissions. It doesn't explicitly name alternatives, but the chaining instruction makes the use case unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_videoA
取视频的预签名上传地址。拿到地址后原样执行返回的 uploadCommand(只替换文件路径,Content-Disposition 一个字符都不能改,否则 S3 报 SignatureDoesNotMatch)。预签名地址仅 10 分钟有效,取到就传。注意视频和文档走的是不同端点、不同存储路径,视频不能用 upload_document 取链接。上传成功后用返回的 objectKey 作为 source_file_object_key 调 translate_video。
| Name | Required | Description | Default |
|---|---|---|---|
| file_name_list | Yes | 视频文件名列表 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
没有 annotations,描述承担了全部行为披露责任。它详细说明了预签名地址 10 分钟有效期、uploadCommand 必须原样执行、Content-Disposition 不能改动否则 S3 报 SignatureDoesNotMatch,以及视频与文档不同端点/存储路径。这些都是调用成功与否的关键行为约束。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
描述主功能放在首句,随后是必要的执行警告、时效提醒、工具边界和后续步骤,信息密度高且每句话都有明确作用,没有冗余。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
在无输出 schema 的情况下,描述充分说明了返回值的用法(uploadCommand、objectKey)、上传约束、有效期、与 upload_document 的边界,以及如何衔接 translate_video。agent 依据描述即可正确走完整个上传流程。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
唯一参数 file_name_list 在 schema 中已有 100% 描述(“视频文件名列表”),描述正文没有补充格式、扩展名或列表约束。按高 schema 覆盖率基线评 3 分,描述没有增加超出 schema 的语义。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
描述以明确的动词和资源开头:“取视频的预签名上传地址”,清楚说明工具职责。同时通过“视频不能用 upload_document 取链接”与同名兄弟工具做了区分,agent 不会混淆工具用途。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
描述明确给出使用时机和完整工作流:取到地址后立即上传、只替换文件路径、上传成功后用 objectKey 调 translate_video;还显式排除上传文档场景。对何时用、何时不用、后续步骤均给出可执行指引。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_translationA
等待翻译任务完成。上游只能轮询、无法推送,本工具有两个返回时机:进度一有变化就立刻返回,否则等满本轮的等待时长(不传 timeout 时由本工具自适应:10 秒起,进度一直不动就逐轮翻倍到 45 秒封顶,省掉那些什么都说不出来的空转往返)。返回 finished=true 时附带 downloadUrl(纯译文,CloudFront)与 downloadUrlCN(同一文件的国内兜底线路),其他版式用 get_document_translation_result 取。这两条链接带签名,转述时必须把问号后面的参数一起原样给全,截断会 403。返回里 msg 是念给用户听的那一行、agentNote 是给你的操作指令:要转述就转述 msg,agentNote 一个字都不要念出去。finished=false 表示仍在处理,照 agentNote 的要求办:进度有变化就把 msg 那行原样告诉用户,和上次完全一样时一个字都不要输出,直接再次调用本工具继续等待,任务不会因此中断。若任务被服务端取消或失败,返回 code=500 且 data.failed=true,reason 是原因(如 BACKEND_CANCEL)——请先把原因告诉用户,问过用户之后再决定是否用相同参数重试 translate_document,文件不需要重新上传。
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 把要念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)输出成哪种语言。按用户当前说话的语言填,不确定就别传——不传取服务端 MCP_LOCALE,再没有就是 zh。 | |
| timeout | No | 本次最多等待的秒数。**正常情况不要传**:不传时本工具自己掌握节奏——起步 10 秒,好让第一次进度尽快回到用户面前,之后进度每连着一轮没变就把等待翻一倍(10→20→40,上限 45 秒),进度一变又回到 10 秒。这么做是因为进度不动的那些轮次你什么都不该输出,可你每回来一次都是一整轮往返、上下文重发一遍,界面上还多一行空回合。传了本参数就按你给的秒数严格执行、不再自适应;传大值不会多打上游(轮询间隔是内部定的,与本参数无关),但超过你那端的工具调用超时会让本次调用直接报错——那是客户端超时,不是任务失败,任务还在跑,重新调本工具接着等即可。到点未完成会返回当前进度而非报错,可再次调用继续等待。 | |
| order_no | Yes | 翻译任务订单号 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and delivers extensively: two return timings, adaptive timeout ramp (10s→20s→40s, 45s cap), progress-change resets, signed URL query-parameter fragility (truncation causes 403), the msg-vs-agentNote split with the rule to never read agentNote aloud, and the failure envelope (code=500, data.failed=true, reason like BACKEND_CANCEL). This is unusually complete behavioral disclosure for a polling utility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but the tool's behavioral surface genuinely demands it — every sentence carries operational weight (return timing, URL signatures, message-role rules, failure handling). Core purpose is front-loaded. It loses a point for being one dense run-on paragraph with no separation between the polling, success, in-progress, and failure sections, which makes the guidance harder to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers every state the agent will encounter: success (finished=true with both signed URLs), still-processing (finished=false with exact output rules), failure (code=500/reason with retry protocol), and timeout behavior. The only minor omission is the exact shape of agentNote, but its role and usage are specified well enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The schema already documents timeout's adaptive mechanism, the locale fallback chain, and order_no's meaning. The tool description restates the adaptive timeout in condensed form but adds no genuinely new parameter semantics beyond what the schema provides — it neither needs to nor does it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('等待翻译任务完成' — wait for translation task completion), and immediately differentiates from siblings by naming get_document_translation_result as the alternate for other formats. The polling-vs-push constraint further anchors what this tool uniquely does among the 23 sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit actionable guidance for every branch: when finished=false and progress is unchanged, call again with no output; when failed, tell the user the reason and ask before retrying translate_document. Names the alternative tool (get_document_translation_result) explicitly and states the client-timeout-is-not-task-failure principle, so the agent knows exactly when to keep polling versus switch tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_video_translationA
等待视频翻译任务完成。提交 translate_video 后就用它跟进,不要自己反复调 get_video_translation_status。上游只能轮询、无法推送,本工具有两个返回时机:进度一有变化就立刻返回,否则等满本轮的等待时长(不传 timeout 时由本工具自适应:10 秒起,进度一直不动就逐轮翻倍到 45 秒封顶,省掉那些什么都说不出来的空转往返)。视频任务通常要几分钟。返回里 msg 是念给用户听的那一行、agentNote 是给你的操作指令:要转述就转述 msg,agentNote 一个字都不要念出去。finished=false 表示仍在处理,照 agentNote 的要求办:进度有变化就把 msg 那行原样告诉用户,和上次完全一样时一个字都不要输出(连「继续等待」这类过场话也不要),直接再次调用本工具继续等待,任务不会因此中断。完成后返回里带 translatedVideoUrl / targetSubtitlesUrl,要把它们原样完整交给用户——问号后面的签名参数一字都不能改;有效期以返回的 expiresAt / downloadNote 为准,不要按经验说成一小时。描述产物时请原样照抄 msg 或 outputNote 里那句产出说明(例如「未配音(保留原声),已嵌入译文字幕」),不要凭之前传过的参数自己推断有没有配音。该任务做过字幕改写的话,返回里给的就是改写后那一版(带 rewriteOrderNo),outputNote 会注明,别再回头用改写前的链接。任务失败或被取消时返回 code=500 且 data.failed=true,reason 是原因——请先告诉用户,问过之后再决定是否重新提交,重提会再次扣费。
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 把要念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)输出成哪种语言。按用户当前说话的语言填,不确定就别传——不传取服务端 MCP_LOCALE,再没有就是 zh。 | |
| timeout | No | 本次最多等待的秒数。**正常情况不要传**:不传时本工具自己掌握节奏——起步 10 秒,好让第一次进度尽快回到用户面前,之后进度每连着一轮没变就把等待翻一倍(10→20→40,上限 45 秒),进度一变又回到 10 秒。这么做是因为进度不动的那些轮次你什么都不该输出,可你每回来一次都是一整轮往返、上下文重发一遍,界面上还多一行空回合。传了本参数就按你给的秒数严格执行、不再自适应;传大值不会多打上游(轮询间隔是内部定的,与本参数无关),但超过你那端的工具调用超时会让本次调用直接报错——那是客户端超时,不是任务失败,任务还在跑,重新调本工具接着等即可。到点未完成会返回当前进度而非报错,可再次调用继续等待。 | |
| order_no | Yes | 视频翻译订单号,即 translate_video 返回的 videoTranslateOrderNo |
TDQS
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 delivers thoroughly: adaptive polling cadence (10s start, doubling to 45s cap), the two return timings, the client-timeout-vs-task-failure distinction, task continuity across re-invocations, and the requirement to pass artifact URLs verbatim without altering signature parameters. It also discloses the rewritten-subtitle nuance and the cost implication of resubmission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A dense single paragraph where nearly every sentence carries a non-obvious operational rule (don't read agentNote aloud, don't emit filler lines, copy outputNote verbatim, don't infer dubbing from prior params). It is slightly overlong because the adaptive-timeout explanation duplicates what the timeout parameter's schema description already states.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must substitute for return-value documentation, and it covers every return case: in-progress (msg/agentNote, finished=false), completion (translatedVideoUrl / targetSubtitlesUrl, expiresAt / downloadNote), rewritten subtitles (rewriteOrderNo, outputNote), and failure/cancel (code=500, data.failed=true, reason). Nothing an agent needs to invoke the tool correctly is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both locale and timeout already carry detailed schema descriptions — including the 10→20→40→45 adaptive timing that the description re-explains. The description adds marginal value by tying order_no to translate_video's videoTranslateOrderNo and advising that timeout normally be omitted, but the schema already handles parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource pairing ("等待视频翻译任务完成") and immediately defines the tool's role as the designated follow-up step after translate_video. It explicitly distinguishes itself from the sibling get_video_translation_status by telling agents not to poll that tool repeatedly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit routing rule: "提交 translate_video 后就用它跟进,不要自己反复调 get_video_translation_status". It also specifies when to re-invoke (keep calling while finished=false even if nothing is output) and when to defer to the user (tell the user the reason and ask before resubmitting after a failure, noting resubmission charges again).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
23 tool updates
v0.1.0- First observed
calculate_rewrite_quota - First observed
calculate_video_translation_quota - First observed
cancel_video_translation - First observed
check_pdf_ocr - First observed
get_account_status - First observed
get_document_translation_by_batch - First observed
get_document_translation_result - First observed
get_document_translation_status - First observed
get_model_list - First observed
get_supported_languages - First observed
get_video_rewrite_status - First observed
get_video_subtitles - First observed
get_video_translation_status - First observed
list_document_translations - First observed
list_video_translations - First observed
probe_elicitation - First observed
rewrite_video_subtitles - First observed
translate_document - First observed
translate_video - First observed
upload_document - First observed
upload_video - First observed
wait_for_translation - First observed
wait_for_video_translation
TDQS
Most tools map cleanly to distinct resource/action pairs: document vs video, status vs result vs wait, translate vs rewrite. A few pairs—wait_for_translation/get_document_translation_status and get_document_translation_by_batch/get_document_translation_status—could be confused at a glance, but the descriptions draw explicit usage boundaries.
All tool names use snake_case with clear verb prefixes: get_, list_, upload_, translate_, calculate_, wait_for_, cancel_, rewrite_, check_, probe_. Even longer names like get_document_translation_by_batch follow the same get_<resource>_<detail> pattern.
With 23 tools, the set is at the heavy end, though the domain genuinely spans document translation, video translation, OCR detection, quota estimation, upload, waiting, and rewriting. Most tools earn their place, but status/wait pairs and list/batch lookups introduce some redundancy that could be consolidated.
The tool surface covers the full document and video translation lifecycle: upload, submit, OCR detection, quota estimation, status polling, waiting, result download, listing, cancellation, and subtitle rewriting. There are no obvious dead ends for the stated translation-focused purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Translate MCP — wraps LibreTranslate API (https://libretranslate.com/)
Convert subtitles, transcripts, broadcast captions (SCC/MCC/STL), EDLs, and Premiere files.
Translate text or HTML, detect languages, and list supported languages with Langbly.
Arabic-first OCR, translation and document extraction. First call mints a free trial key.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables translation of JSON i18n files to multiple languages using various AI providers (Google Gemini, OpenAI, Ollama/DeepSeek) with intelligent caching and deduplication.295-
- AlicenseAqualityDmaintenanceEnables interaction with POEditor's translation management API to create terms, add translations, and manage multilingual content. Supports operations like adding translations, updating existing ones, and listing terms and languages for translation projects.11153MIT
- AlicenseNot gradedqualityDmaintenanceEnables translation management through Smartling's API, supporting project and file operations, job management, quality assurance, glossaries, and translation workflow automation for multilingual content.MIT
- AlicenseNot gradedqualityDmaintenanceProvides translation capabilities using the DeepL API, supporting text translation between numerous languages, rephrasing, batch translation, document translation, and language detection with formality control.4MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zhang452064326/belindoc-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server