Douyin Engagement MCP
Click on "Deploy 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., "@Douyin Engagement MCPPrepare a comment campaign for keyword 'sneaker unboxing'."
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.
Douyin Engagement MCP
本地运行的标准 MCP Server,用于在用户明确批准评论池后,执行抖音关键词搜索与评论活动。所有评论发送都发生在用户本人登录的专用 Chrome 中,并受人工审批与验证流程约束。
核心特性
人工审批工作流:评论池必须由用户一次性确认(
userConfirmed: true)后才能签发有时效的批准 ID,活动方可启动。关键词搜索真实视频:基于抖音搜索结果筛选通过相关性检查的视频候选。
跨活动去重:每次评论成功后,视频会被记入本地去重清单;后续活动自动跳过这些视频,不会重复评论同一视频。可通过
douyin_list_commented_videos查看已评论清单。活动结束自动关闭浏览器:活动正常完成、被停止或因失败结束时,自动关闭 Chrome 释放进程;仅当进入「等待人工验证」状态时保留浏览器供用户操作。
验证暂停:检测到短信、滑块、扫码或登录验证时,活动变为
waiting_for_verification并保留浏览器与原进度;用户完成验证后调用douyin_resume_campaign从原进度继续。安全边界:仅使用用户本人在专用 Chrome 中建立的登录态,不读取或导出 Cookie / 密码 / 验证码,验证码只允许用户在浏览器中手动输入。
Related MCP server: video-studio-mcp
工作流
douyin_check_login打开专用 Chrome 并检查登录状态。douyin_prepare_comment_brief获取真实搜索样本与评论生成简报。客户端中的 AI 根据用户给定的方向预制 3–5 条评论。
用户查看并一次性确认完整评论池。
douyin_approve_comment_pool携带userConfirmed: true,签发有时效的批准 ID(默认 30 分钟过期)。用户确认本次评论数量与间隔后,调用
douyin_start_campaign。douyin_get_campaign_status查看逐条评论与发布验证结果。检测到验证需求时,活动变为
waiting_for_verification并保持浏览器与进度;用户在 Chrome 中完成验证后告知 AI,由 AI 调用douyin_resume_campaign继续。MCP 先核对当前评论是否已发布,再从原视频、原评论与去重进度继续。
评论从已批准池随机抽取,一轮用完前不重复;搜索异常、视频不相关或评论无法验证时会停止活动。
douyin_start_campaign 可传入 excludeVideoUrls 手动追加排除视频;跨活动去重在此基础上自动叠加,无需每次手动维护。
安装
需要 Node.js 20+ 与 Google Chrome。
npm install
npm run build首次使用先初始化登录状态:
npm run login程序会打开专用 Chrome 并等待登录;请自行扫码登录抖音,检测成功后登录状态保存在本地专用资料目录(不会上传任何凭证)。
客户端配置(stdio)
将路径替换为本机实际项目目录的绝对路径:
{
"mcpServers": {
"douyin-engagement": {
"command": "node",
"args": [
"<PROJECT_DIR>/dist/src/index.js"
],
"cwd": "<PROJECT_DIR>"
}
}
}只要客户端支持本地 stdio MCP,均可使用同一结构。部分客户端使用 servers 而非 mcpServers 作为顶层字段,请以该客户端说明为准。
环境变量
DOUYIN_MCP_CHROME_PATH:Chrome 可执行文件路径;常规安装通常无需设置。DOUYIN_MCP_RUNTIME_DIR:Chrome 资料、活动状态与审计日志目录,默认<PROJECT_DIR>/.runtime。DOUYIN_MCP_ARTIFACT_DIR:评论前后截图目录,默认<PROJECT_DIR>/artifacts。
安全边界
只使用用户本人在专用 Chrome 中建立的登录状态。
不读取或导出 Cookie、密码和短信验证码。
验证码只允许用户在 Chrome 中输入;MCP 工具不接受验证码参数。
不尝试破解验证码或绕过安全验证。
评论池批准默认 30 分钟过期;活动创建后保存已批准评论快照,以便验证完成后恢复原活动。
等待验证时保留候选列表、当前视频、评论顺序、成功记录与去重进度,且不会关闭浏览器。
提交后找不到完整评论文本时,不计成功并停止后续活动。
默认单次最多 20 条,评论间隔最少 30 秒。
活动正常结束(完成 / 停止 / 失败)后自动关闭浏览器释放资源;仅验证等待期间保持打开。
开发验证
npm run check
npm test
npm run build单元测试覆盖 blocker 识别、评论池、相关性评分与活动恢复逻辑。真实评论属于外部副作用,不包含在自动测试中;首次真实测试建议只设置 1 条评论,并在页面中人工复核。
Available Tools
11 toolsdouyin_approve_comment_poolA
锁定用户已明确确认的3至5条评论并签发一次性批量执行批准ID。该批准允许后续活动从评论池随机抽取并自动发送,无需逐条确认。只有在用户已经看到完整评论池并明确确认后才能调用。
| Name | Required | Description | Default |
|---|---|---|---|
| comments | Yes | ||
| direction | Yes | ||
| ttlMinutes | No | ||
| userConfirmed | Yes | 用户已查看并一次性确认完整评论池 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a mutating, non-idempotent operation. The description adds context beyond that: it locks comments, issues a one-time approval ID, and requires user confirmation. It discloses the one-time nature and the prerequisite, aligning with non-idempotency. It doesn't detail all side effects, but provides meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and purpose. Every sentence contributes essential information: the action, the effect, and the precondition. No wasted 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?
For a tool with 4 parameters and no output schema, the description adequately explains the core action, the prerequisite, and the purpose. It implies the return value (approval ID) and its one-time nature. It could mention how the approval ID connects to sibling tools like douyin_start_campaign, but overall it is sufficiently complete for 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 only 25% (only userConfirmed has a description). The description compensates partially by mentioning the comment count range (3-5) and user confirmation, but it does not explain the meaning of 'direction' or 'ttlMinutes'. Thus it adds some value but leaves key parameters underspecified.
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 a specific action: locks 3-5 user-confirmed comments and issues a one-time batch approval ID. It distinguishes itself from sibling tools like douyin_start_campaign by focusing on the approval step, not the execution of sending.
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 the prerequisite: 'only after the user has seen the complete comment pool and explicitly confirmed.' It also explains the purpose of the approval (allows subsequent auto-send without per-comment confirmation), giving clear context for when to call. It does not name alternative tools but the sequencing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
douyin_check_loginARead-only
打开本地专用Chrome资料目录并检查抖音登录或验证码状态。只读。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description reinforces this with '只读' (read-only). It adds the behavioral detail of opening a local Chrome profile directory, but does not clarify any potential side effects (e.g., launching a browser) or what the status outcome looks like. Since annotations cover safety, the added context gives a moderate score.
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. It front-loads the key action and scope, making it highly concise and easy to parse.
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 is simple with no parameters and annotations clarifying read-only intent, but the description does not disclose what the tool returns (no output schema) or whether opening the directory has side effects. For a login-check tool, the agent would benefit from knowing the result format, so completeness is moderate.
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?
There are zero parameters, so the schema provides no parameter details. The description need not explain any parameters, and with an empty schema, the baseline of 4 applies based on the rules.
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: opening the local dedicated Chrome profile directory and checking the Douyin login or verification code status. This clearly distinguishes it from sibling tools like douyin_search_videos or douyin_close_browser, which handle other concerns.
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 implies the tool is used to verify login state, which is a clear context, but it does not explicitly state when to use it vs alternatives, nor mention any prerequisites or exclusions. The guidance is present but underdeveloped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
douyin_close_browserAIdempotent
关闭MCP启动的专用Chrome。不会删除登录资料。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description adds that it only affects the MCP-launched Chrome and preserves login data. This is useful behavioral context. Annotations already indicate idempotency, and the description does not contradict them.
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 sentences, front-loaded with the primary action and followed by a critical reassurance about login data. Every sentence earns its place with no wasted 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?
For a zero-parameter, no-output-schema tool, the description fully covers the essential behavior: closing the dedicated browser and preserving login data. No significant gaps exist.
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?
There are zero parameters, so the baseline is 4. The description adds no parameter details because none are needed; the schema is empty and fully covers what the tool takes.
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 uses the specific verb '关闭' (closes) and clearly identifies the resource as 'MCP启动的专用Chrome' (dedicated Chrome launched by MCP). This differentiates it from all sibling tools, which focus on video and campaign operations.
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 implies the tool is for closing the dedicated browser but does not explicitly state when to use it or when not to. No alternatives or exclusions are mentioned, though the context makes the usage fairly obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
douyin_get_campaign_statusARead-only
读取活动状态、逐条视频、所用评论、验证结果和停止原因。只读。
| Name | Required | Description | Default |
|---|---|---|---|
| campaignId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reinforces the readOnlyHint annotation by stating '只读' and adds valuable context by enumerating the specific data returned (status, videos, comments, verification results, stop reasons). This goes beyond what annotations provide, though it does not describe response format or pagination.
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 extremely concise with two short sentences, front-loading the verb and purpose. No redundant information; every word 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?
Given the tool has no output schema, the description adequately lists the categories of information read, but misses details on response structure or any prerequisite context. It is sufficient for a simple one-parameter read-only tool but leaves some ambiguity about data formatting.
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 0%, so the description must compensate for the undocumented campaignId parameter. It does not mention the parameter at all, leaving the agent to infer its meaning solely from the name and schema. This fails to add meaningful semantic 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 uses a specific verb ('读取' / 'read') and clearly lists the resources it accesses: campaign status, individual videos, comments used, verification results, and stop reasons. This distinguishes it from sibling tools like start/stop/resume which are mutations.
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 clearly establishes this is a read-only status retrieval tool, which implies use for inspecting state rather than changing it. However, it does not explicitly list when-not-to-use scenarios or mention sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
douyin_inspect_videoARead-only
打开一个抖音视频详情页,核对标题、关键词相关性及评论区是否可用。只读。
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | ||
| videoUrl | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description is not responsible for safety disclosure. It adds useful context by specifying that it opens a page, checks title, keyword relevance, and comment availability, and reinforces the read-only nature with '只读'. No contradictions 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?
The description is a single, concise sentence that front-loads the action and key checks. There is no redundant or filler content; every word contributes to understanding the tool's function.
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 no output schema, so the description should ideally explain what the agent can expect as a result. It does not mention return values, how results are presented, or whether the tool simply opens the page or returns a verification report. The description covers the tool's purpose but leaves significant operational gaps.
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 0%, and the description does not mention videoUrl or keyword at all. Although the schema provides type and constraints, the description fails to add any semantic meaning about what these parameters represent or how they relate to the inspection task. This is a significant gap given the low 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 clearly states the action (open a Douyin video detail page) and the specific checks performed (title, keyword relevance, comment section availability). It distinguishes this tool from siblings like douyin_search_videos or douyin_get_campaign_status by focusing on video inspection.
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 purpose implies when to use this tool (verifying video details against a keyword), but it does not explicitly mention alternatives or exclusions. No reference is made to sibling tools or when not to use it, so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
douyin_list_commented_videosARead-only
查看所有已成功评论的视频清单(跨活动去重的依据)。只读。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the scope '已成功评论' (successfully commented) and its deduplication purpose, which goes beyond the annotations. However, the '只读' (read-only) statement is redundant with the annotation readOnlyHint=true. No return format or pagination details are disclosed, which is acceptable given annotations but still limited.
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 short sentences, front-loaded with the main action and scope, followed by a brief purpose note. Every word earns its place, and the redundant '只读' is minimal. Structure is highly 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?
For a simple read-only list tool with no parameters and no output schema, the description is complete. It states exactly what the tool returns (list of successfully commented videos) and why it's used (deduplication). No additional context is needed for an agent 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 tool has zero parameters, so schema coverage is trivially 100%. The baseline for 0 params is 4, and the description adds no param-specific info because there are none. This is appropriate 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 uses a specific verb '查看' (view/list) with a clear resource '所有已成功评论的视频清单' (list of all successfully commented videos), and adds purpose context '跨活动去重的依据' (basis for cross-campaign deduplication). This clearly distinguishes it from sibling tools like search or inspect.
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 explains when to use this tool: as the basis for cross-campaign deduplication. This gives clear context for its intended use case, though it doesn't explicitly compare against alternatives 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.
douyin_prepare_comment_briefARead-only
搜索真实视频并生成评论预制简报。调用方AI应依据用户提供的方向和返回的视频内容生成3至5条自然、通用且不重复的评论,展示给用户一次性确认;此工具不会生成或发送评论。
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | ||
| direction | Yes | ||
| sampleSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations: it explains that the tool will generate 3-5 comments, present them for one-time confirmation, and explicitly clarifies that it does not generate or send comments. The readOnlyHint and openWorldHint annotations are consistent, and the description enriches the agent's understanding of what the tool will and will not do.
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 concise, with two sentences that efficiently convey the tool's purpose, expected output (3-5 comments), usage context (user confirmation), and key constraint (does not send). The second sentence is slightly dense but every clause provides value, so it earns a 4.
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's combined search-and-prepare nature and lack of an output schema, the description is fairly complete: it states the tool searches real videos, generates a brief with a specified number of comments, and returns them for user confirmation. It does not detail output structure or how it integrates with sibling tools, but for a read-only preparation tool, this is sufficient.
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 0%, so the description must compensate for parameter explanations. It directly mentions '方向' (direction) as a guide for generating comments, and '搜索' implies the keyword parameter, but it does not explain 'sampleSize' at all. The parameter names are somewhat self-explanatory, but the description adds limited clarity 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 clearly states the tool's function: '搜索真实视频并生成评论预制简报' (search real videos and generate pre-made comment briefs). It distinguishes from siblings by explicitly stating it does not generate or send comments, positioning it as a preparation step rather than an execution step.
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 on when to use the tool: when the user wants a comment brief generated from real videos and presented for confirmation. It also implicitly excludes sending by stating '此工具不会生成或发送评论', implying other tools handle sending. However, it does not name specific alternative tools, so it gets a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
douyin_resume_campaignA
用户已在当前Chrome窗口完成短信、滑块、扫码或登录验证后,恢复原活动。该工具保留原候选列表、当前视频、评论池、成功记录和去重进度;不接收验证码。恢复时先检查当前评论是否已经发布,避免重复提交。
| Name | Required | Description | Default |
|---|---|---|---|
| campaignId | Yes | ||
| userCompletedVerification | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavior beyond annotations: it preserves candidate list, current video, comment pool, success records, and dedup progress, and checks whether the current comment is already posted to avoid duplicates. This supplements the openWorldHint and idempotentHint with concrete state-preservation and safety checks. No contradiction with readOnlyHint=false.
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 concise sentences, with the primary use case front-loaded and no redundant filler. Each sentence provides distinct information: when to use, state preserved, and duplicate-prevention behavior.
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 is well-covered given its moderate complexity: purpose, usage timing, state preservation, and safety check are all described. Absence of an output schema is acceptable, but the description does not mention potential side effects (e.g., continuing to post comments) explicitly, though that is implied by 'resume campaign'.
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 0%, and the description does not explicitly map the two parameters. It mentions verification status ('userCompletedVerification' implied by '用户已完成验证') but does not name campaignId or clarify the boolean flag's meaning. The const true constraint is left undiscussed, so the agent must infer parameter semantics from the schema alone.
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 resumes an original campaign after user verification, distinguishing it from sibling tools like start_campaign and stop_campaign. It specifies the resource (campaign) and action (resume), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly conditions usage on the user having completed verification in the current Chrome window, and notes it does not accept verification codes, implying it should be used after verification rather than for verification. However, it does not explicitly name alternate tools for starting or checking campaigns, so some reliance on sibling context is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
douyin_search_videosARead-only
在抖音视频搜索页搜索关键词,并只返回通过页面状态与相关性检查的公开视频。只读。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| keyword | Yes | ||
| relevanceThreshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds value by specifying that only public videos passing page status and relevance checks are returned, which is beyond the annotation. The read-only trait is also confirmed in the description, aligning with the annotation.
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, concise sentence that front-loads the action and includes essential filtering behavior. There is no wasted text or unnecessary repetition.
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 is relatively simple, but the description omits any mention of the return format, pagination, or how the limit and relevanceThreshold parameters affect results. Without an output schema, more detail would be needed for a fully self-contained description. The 'page status' reference is also vague.
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 0%, and the description does not elaborate on any parameters. While the parameter names (keyword, limit, relevanceThreshold) are somewhat self-explanatory, the description fails to define 'relevanceThreshold' or explain how 'page status' relates to the search. The description's mention of 'relevance checks' provides minimal linkage but does not compensate for the lack of 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 clearly states the tool searches keywords on Douyin's video search page and returns only public videos that pass page status and relevance checks. This is a specific verb+resource combination that distinguishes it from sibling tools like douyin_inspect_video or douyin_list_commented_videos.
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 implies when to use this tool: when a search by keyword is needed. It does not explicitly mention alternatives or exclusions, but the context of searching on the video search page is clear. Since no other sibling tool covers search, it is sufficiently differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
douyin_start_campaignA
启动后台批量评论活动。这会在抖音产生真实评论。调用前必须确认关键词、评论数量、间隔时间,并提供尚未过期的批准ID。评论池按洗牌袋随机抽取,一轮用完前不重复;任何评论无法验证都会停止活动。活动会自动跳过历史已评论成功的视频(跨活动去重),不会重复评论同一视频。
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | ||
| keyword | Yes | ||
| approvalId | Yes | ||
| intervalSeconds | Yes | 最小评论间隔秒数 | |
| excludeVideoUrls | No | ||
| intervalMaxSeconds | No | 最大评论间隔秒数;省略时使用固定间隔 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses several important behavioral traits beyond the annotations: comments are drawn from a shuffled bag without repetition until a round is exhausted, any unverifiable comment stops the activity, and the campaign automatically skips videos already commented on across campaigns. This is rich, actionable transparency that the annotations (readOnlyHint=false, idempotentHint=false) only hint at.
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, dense paragraph that front-loads the core purpose, then adds necessary behavioral and prerequisite details. Every sentence adds value; there is 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?
The description covers the purpose, prerequisites, randomization behavior, error-stopping condition, and deduplication. Since there is no output schema, it does not explain the return value, and it does not mention how to monitor progress (e.g., via get_campaign_status), leaving a minor gap for a complex mutation 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?
Schema description coverage is only 33% (only intervalSeconds and intervalMaxSeconds have descriptions). The description adds value by mentioning the need to confirm keyword, comment count, interval, and providing expiration context for approvalId. However, it does not explain the semantics of excludeVideoUrls or intervalMaxSeconds, leaving gaps that the low schema coverage does not fill.
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 '启动后台批量评论活动' (start background batch comment campaign), clearly stating the action and resource. It explicitly says '这会在抖音产生真实评论' (will generate real comments on Douyin), distinguishing it from other tools like get_campaign_status or resume_campaign.
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 lists prerequisites: '调用前必须确认关键词、评论数量、间隔时间,并提供尚未过期的批准ID' (before calling, must confirm keyword, count, interval, and provide non-expired approval ID). This gives clear context for when to use the tool, though it does not explicitly mention alternatives or 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.
douyin_stop_campaignAIdempotent
请求停止当前后台评论活动。正在等待的单条操作会在安全边界处停止。
| Name | Required | Description | Default |
|---|---|---|---|
| campaignId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful context beyond the annotations: it explains that pending single operations will stop at a 'safety boundary', indicating a graceful shutdown rather than an abrupt kill. This is useful behavioral disclosure not present in the annotations. It does not contradict the annotations, which correctly indicate a mutating but idempotent operation.
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 and front-loaded, consisting of two short sentences with no filler. It states the primary action first and then a key behavioral detail, making it easy to parse quickly.
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 tool with one parameter, no output schema, and annotations covering idempotency, the description provides adequate operational context. It names the target activity and the graceful-stop behavior, and sibling names clarify the campaign lifecycle. However, it could have mentioned that the operation is safe to call even if already stopped, but that is already covered by the idempotentHint annotation.
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 has 0% description coverage for the single parameter `campaignId`, and the description does not mention the parameter at all. It does not explain what `campaignId` represents or how to obtain it, leaving the agent to infer from the name alone. This is insufficient given the low schema 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 uses a specific verb '停止' (stop) and resource '当前后台评论活动' (current background comment activity), clearly indicating the tool stops a campaign. This distinguishes it from sibling tools like douyin_start_campaign and douyin_resume_campaign, which are opposite operations.
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 implies usage when you need to halt a running campaign, but it does not explicitly state when to use this tool versus alternatives like `start` or `resume`. There are no exclusions or direct comparisons to siblings, so it relies on the name and context to infer usage.
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.
11 tool updates
v0.3.0- First observed
douyin_approve_comment_pool - First observed
douyin_check_login - First observed
douyin_close_browser - First observed
douyin_get_campaign_status - First observed
douyin_inspect_video - First observed
douyin_list_commented_videos - First observed
douyin_prepare_comment_brief - First observed
douyin_resume_campaign - First observed
douyin_search_videos - First observed
douyin_start_campaign - First observed
douyin_stop_campaign
TDQS
Scored across 11 tools
Each tool targets a distinct action in the Douyin engagement workflow: login checking, video search, video inspection, campaign status, comment preparation, approval, campaign start/resume/stop, commented-video history, and browser close. There is no overlap between these operations.
All tools follow the same verb_noun pattern with the 'douyin_' prefix, e.g., search_videos, inspect_video, start_campaign, stop_campaign. The naming is uniform and predictable.
11 tools is well within the ideal 3-15 range and covers the entire campaign lifecycle without unnecessary bloat. Each tool serves a clear purpose in the workflow.
The tool set fully covers the campaign lifecycle: login check, searching/inspecting videos, preparing/approving comments, starting/monitoring/resuming/stopping campaigns, and preventing re-commenting via history. No critical gaps are apparent.
Maintenance
Related MCP Connectors
Remote MCP server for China brand visibility, destination demand, and KOL discovery workflows.
MCP server aggregating hot-search boards from 8 Chinese platforms (Weibo, Zhihu, Bilibili, Douyin).
MCP server: AI-agent access to Chinese social & trend signals — Douyin, Weibo, Xiaohongshu/RedNote,
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for crawling social media platforms (e.g., Bilibili) by keywords, video IDs, or creator IDs, with support for MySQL, JSON, and CSV storage.39MIT
- FlicenseNot gradedqualityBmaintenanceMCP server enabling AI agents to generate AI videos and images, analyze video content, and download videos from Douyin and Xiaohongshu.-
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables agents to automate Douyin and Xiaohongshu, including login, search, scraping, publishing, and commenting.-
- AlicenseAqualityBmaintenanceA local MCP service for safely preparing, validating, and executing multi-platform social media auto-publishing, with dry-run mode and real adapter for Douyin.61MIT