像塑 MCP Plus
Unofficial integration with ByteDance's Douyin AR (像塑) macOS editor, proxying its official MCP tools and adding asset-library browsing/search/apply, homepage works browsing/download, project window management, menu item insertion, FaceWarpX brush intensity control, and object/resource cleanup.
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., "@像塑 MCP Plussearch the asset library for face filters and apply the first one"
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.
xiangsu-mcp-plus
像塑(Douyin AR,macOS)的 MCP 扩展:一个 MCP 服务同时提供像塑官方 MCP 的全部工具,以及官方 MCP 够不到的编辑器能力。
官方工具原样转发(
get_scene、edit_by_dsl、capture_preview、save_project等),像塑重启后自动重连,官方工具列表变化时通知客户端刷新。唯一的例外是capture_preview:9.8.1 起官方截图是给窗口里的预览区域拍照,窗口最小化或不可见时是黑的,这时改为重置预览、等到重载后的画面,从预览的渲染结果截取并缩小到官方的 320×569(不含界面元素);窗口可见时照旧转发,这时刚改完场景或换了预览视频可能还是旧画面(工具说明里写了这一点),要确认新画面用preview_frames。官方素材库:浏览、搜索、看封面、应用(脸部变形、美型、AI 实时变脸、美妆、滤镜、贴纸、画面特效等),流程与素材库面板相同;包括「素材广场」(其他创作者分享的现成 AI 图片、AI 妆容、自定义实时变脸、贴纸和素材包,应用时不重新生成、不扣额度)和自己的「收藏」。
「添加对象」菜单:工具栏美妆 / 美型 / AI 实时变脸里的全部官方功能项(美容、面部生成、表情生成、性别年龄、五官处理、身体换装等),可看示意图后按菜单项 ID 添加。
AI 组合效果(用户拍照后在云端按工作流出图或出视频):像 AI 效果窗口的「新建工作流」一样建工作流,交给官方工作流工具编辑,再像「应用」一样放进场景。
首页作品:浏览、搜索、看封面,下载完整工程到本地或直接在编辑器里打开(官方工程和已发布的作品),供 agent 读取场景、脚本和资源,学习别人的做法;下载的东西都有登记,用完即删,最长保留 24 小时。
交付:设置并上传图标、特效检测(和编辑器里点「特效检测」一样,云端检测)、填好提交窗口(名称、触发提示、摄像头方向、灵感、任务,一直走到「提交审核」页并等检测跑完;最后的「提交审核」由你来点)、手机预览二维码、把已领取的任务或创作灵感绑定到工程。
抖音音乐:按分类或关键词找歌,设为特效音乐。
灵感、任务、排行榜:首页「灵感」页签和活动中心的任务(征集任务、成长任务),以及像塑移动版才有的排行榜(年轻 / 男生 / 女生喜爱榜、每日投稿榜、热玩互动榜、跟拍榜,各榜按两级分类细分;热点榜;专题合集里两百多期主题特效榜和模板榜;创新计划月榜和官方精选)和成长之路(特效师等级、奖励和各目标进度),用编辑器里登录的账号读取;可收藏灵感、领取任务。
我的特效审核:自己提交过的特效和审核状态,审核不通过的具体原因和完整审核记录(编辑器里只显示「审核未通过」,原因原本只能在像塑移动版的审核记录页看到)。
塑型画笔(FaceWarpX)强度:官方能读不能写,这里按检查器滑块的方式改。
工程窗口:新建空白工程(首次保存到指定目录)、打开、关闭。
干净删除:删除对象时找出只被它使用的资源和它导入时带进来的素材包文件夹,确认后删除。
非官方项目,与字节跳动 / 抖音无关。依赖像塑编辑器的内部模块(9.7.2 实测),像塑升级后可能失效;
ext_status会逐项自检并列出缺失的接口。仓库不包含任何像塑的程序、代码或素材。只用于学习和个人制作,禁止用来抄袭他人作品(详见协议与声明)。npm 包名
@muqian/xiangsu-mcp-plus。
工作方式
部分 | 位置 | 作用 |
编辑器插件 |
| 像塑用户插件。每个工程窗口里开一个只监听 |
MCP 服务 |
| stdio MCP。转发官方 MCP( |
插件把 {pid, port, token, startedAt} 写到 ~/.xiangsu-mcp-ext/instances/<pid>.json(权限 600)。窗口崩溃或被强退时这份记录会留下来,所以只有该 pid 的进程还在、并且启动时间不晚于 startedAt 时才算开着的窗口;pid 被后来的进程复用时不算。插件日志在 ~/.xiangsu-mcp-ext/logs/plugin.log;MCP 服务每次工具调用(名称、耗时、报错、是否发了进度)和异常退出记在 ~/.xiangsu-mcp-ext/logs/server.log,超过 5 MB 时旧的移到 server.log.1;导入记录在 ~/.xiangsu-mcp-ext/imports/。
按工程找窗口时,同时询问各窗口开着哪个工程,卡住或正在关闭的窗口(5 秒没回应)不影响找到其它窗口,并记住每个工程上次所在的窗口,下次先问它。客户端请求带进度令牌时,工具调用期间每 5 秒发一次进度,避免长调用(连续截帧、等提交页检测)被当成空闲掐断。
Related MCP server: DC-COCO-MCP
工具
官方 MCP 的工具按原名提供。扩展工具都接受 project_path 或官方的 instance_id 指定工程(只开一个工程窗口时可省略):
工具 | 作用 |
| 官方 MCP 连接状态;每个工程窗口的 pid、工程路径、instance_id、编辑器接口自检 |
| 打开已有工程、新建空白工程并保存到指定目录、关闭工程窗口(有未保存改动时默认拒绝) |
| 看图:列表类工具返回的引用( |
| 官方素材库面板清单(不传 |
| 一张 AI 图片卡片的整组结果图地址(按 |
| 下载素材包、校验 MD5、导入并放进场景(可撤销);素材广场卡片按 |
| 首页作品分页列表(每页带上全部分类:推荐、官方工程、新手必做、游戏、妆容、AI玩法…;可按推荐 / 最新 / 使用量排序, |
| 按特效 ID 查排行榜等处的特效在首页有没有工程(一次最多 20 个),逐个返回 |
| 下载并解压完整工程(与首页点开作品同一流程,但不开窗口),返回工程目录和文件清单; |
| 下载并在新窗口里按首页的方式打开(不弹版本升级提示,工程处于未保存状态),返回 pid 和 instance_id |
| 删除下载过的作品(含 |
| 把一张图片裁成 360×360 PNG 设为工程图标(默认女性、男性两版,提交窗口要这两个),并像「图标制作」窗口的「完成」一样上传到特效平台(提交窗口只认上传过的图标);或打开「图标制作」窗口 |
| 和工具栏「特效检测」按钮一样:打开特效检测窗口做云端检测(会上传特效包做测试,不是发布),等待结果,并读出检测页的详情一起返回(页面结论、每项结论、包体积和安卓 / iOS 帧率对上限、没通过的项的改进建议),然后关掉窗口;详情读不出时窗口留着并返回 |
| 本地检查包体上限、是否原样套用模板、登录、图标,通过后先关掉还开着的提交窗口(之前调用留下的),再走「提交特效」按钮的入口打开一个新的,逐页填写:名称(必填)、触发提示、默认摄像头方向、灵感、任务和赛道(可用 |
| 按手机预览方式打包上传到抖音预览服务,返回和编辑器一样的二维码(7 天有效),抖音 App 扫码真机看;二维码同时存成文件( |
| 灵感分页列表(每页带上全部分类,每条带关联热点)、详情(说明、图片、奖励、关联热点的热度和标签、同灵感特效、示例视频的播放地址和封面、贴纸、是否已收藏) |
| 收藏或取消收藏灵感(写账号),之后重新查询确认生效 |
| 把灵感绑定到当前工程,提交时带上 |
| 活动与特效征集任务( |
| 移动版「成长之路」:当前特效师等级,每一级的奖励、状态和目标进度(如「绑定灵感上线 0/3 个作品 ¥10」),最高级的权益 |
| 领取一个待领取( |
| 已领取的任务按任务详情页「去创作」的方式重开工程绑定 |
| 分页读移动版排行榜(榜单和筛选项写在参数说明里),可按日期、每级一个分类、特效等级、面板、偏好、来自工具、年轻喜爱度过滤;每页带上该榜当天的两级分类(大类如人像美化、细类如美妆) |
| 热点榜(按 |
| 专题合集里按主题的特效榜( |
| 创新计划官方精选( |
| 自己提交过的特效,最新的在前:审核状态、绑定的任务和灵感、能否编辑 / 申诉;审核未通过、测试未通过、申诉审核未通过的带上最近一条审核记录(去掉标记的原因正文、分条原因、链接) |
| 一个自己的特效的完整审核记录:「上线审核」和「精选审核」两条时间线 |
| 抖音音乐分类(不带参数时)、按分类列出或搜索(带版权标记),按音乐库「使用」套用,可截取片段 |
| 场景结构的缩进文本:渲染组、对象 guid、名称、是否隐藏、组件类型;可只看子树、控制层数。传 |
| 一次查看多个对象的组件参数,可按组件类型、属性名片段过滤, |
| 读工程目录里的全部美妆层(妆容层和美瞳),逐层给出区域、部位、平均色、男女强度、是否生效;部位先看层名,看不出时按贴图像素判断。 |
| 按间隔连续截取预览,720×1280 原始分辨率(官方截图是 320×569),取自渲染结果,窗口在后台或最小化时也能截;默认先重置预览并等到重载后的画面再计时,截图期间临时恢复正常帧率(后台窗口平时 6 fps);可依次换几个预览视频各截一组、截完切回,可按比例裁出局部;每帧存成文件并返回,默认 24 小时后删除。这四个工具都可传 |
| 「添加对象」菜单项列表( |
| 新建一张「AI 组合效果」工作流,等同 AI 效果窗口的「新建工作流」:本地建 AI Graph,只有「输入图」「效果组合」两个节点且未连线,不联网、不扣额度、不建云端草稿;返回 |
| 把一张 AI 工作流放进场景,等同「应用」(可撤销):编辑器编译工作流、上传工作流文件,再添加「AI 组合效果」对象(没有 2D 前景时一并建「2D 前景」「2D 摄像机」);不扣额度、不建草稿,生成过预览视频时一并上传供审核;编辑器拒绝时返回它的提示原文(如「请先连接效果组合器」);返回新增对象和 |
| 列出塑型画笔、改强度(保留笔刷数据,可撤销) |
| 删除对象(可撤销),报告只被它使用的资源和它导入时带来的素材包文件夹; |
| 删除 |
使用顺序示例:
套用官方素材:
library_search→image_view看cover_ref→library_apply→capture_preview→save_project。读别人的工程:
works_search(或works_list)→image_view看cover_ref/gif_ref→works_download→ 按返回的outline.files读effect.dyehpj、Assets/下的场景和Graph/下的脚本 →works_cleanup。在编辑器里看别人的效果:
works_open→get_scene/capture_preview→project_close(discard_changes=true)→works_cleanup。交付:
icon_set→effect_check→mobile_preview真机看 →save_project→submit_prepare(name、trigger_hint等),检查返回的摘要和next,在窗口里点「提交审核」。要参加任务的,tasks_list→task_receive→ 再tasks_list→task_bind,或者直接在submit_prepare里传task。找选题:
rank_list(如rank_type=1年轻喜爱榜、categories=["人像美化","美妆"]、levels=["S","A+"])看什么在火;rank_subjects(keyword="测一测"或kind="template")看各期主题榜;rank_hotspots→ 带topic_id看热点灵感 →inspiration_detail→image_view看图;tasks_list→task_detail看征集要求和奖项 →image_view看内容块里的参考图。看榜上特效的工程:
rank_list→ 把这页的effect_id和name交给works_by_effect→status=found的用返回的template_id走works_download/works_open。查审核结果:
my_effects看哪些没过、review.text是原因 → 要看整条时间线用my_effect_reviews;can_edit=true的在编辑器「拍摄特效管理」里点「编辑」改完重新提交。拆别人的妆:
works_download→makeup_layers看用了哪些部位、什么颜色、多浓;自己的工程save_project后同样用makeup_layers查缺了哪些部位。做 AI 组合效果:
ai_combine_new→ 官方get_workflow_capabilities(选生图基模)→apply_workflow_patch(加生图节点、写 prompt、连「输入图 → 生图 → 效果组合」)→ 要看效果时官方generate_workflow(扣额度)→ai_combine_apply→save_project。别人的作品怎么搭的,用works_download下载「AI玩法」分类里的工程,看Assets/AI 组合效果/*.oAICombineTextureJSA里的workflow和Graph/graph.json里的 AI Graph。
相近工具的分工(每个工具只做一件事,这些也写进了工具说明;和官方工具重叠的,在官方工具的说明末尾补了一句指向这里):
看场景:
scene_tree先摸清结构(紧凑文本,也能读下载的工程目录)→inspect_many一次看多个对象的参数;要完整 JSON 才用官方get_scene/inspect。删对象:只删对象用官方
edit_by_dsl;要知道删完哪些资源没人用了、连带清理,用object_remove(→resource_delete_unused)。绑灵感:
inspiration_bind按 ID 写进工程,提交窗口自动带出;只在提交时选,给submit_prepare传inspiration(在收藏的灵感和热点里按名称选)。绑任务:
task_bind重开窗口把任务写进工程;只在提交时选,给submit_prepare传task,不用重开窗口。成长:
tasks_list的kind=growth是活动中心里一个个成长任务(参考工程、教程);特效师等级和每级目标进度看growth_route。素材库:知道要找什么用
library_search;按面板和子分类浏览用library_list。
几点约定:
library_apply/library_images只接受本会话里library_list/library_search返回过的template_id;works_download/works_open只接受本会话里works_list/works_search/works_by_effect返回过的作品(记录在 MCP 服务里,不受工程窗口开关影响,重启服务后需重新搜索)。像塑最多同时开 2 个工程窗口(编辑器的
CHILD_PROCESS_LIMIT)。都占满时project_open/project_new/works_open返回WINDOW_LIMIT(首页进程答复reuseCurrent,工具不会把工程换进当前窗口),先project_close一个。素材的
kind:package素材包、ai_imageAI 图片、ai_makeupAI 妆容(按部位建多个对象)、custom_gan自定义实时变脸、foreground_sticker/face_sticker图片贴纸、filter滤镜。素材广场里没有可应用内容的卡片(编辑器点应用也没反应)不列出,只在unsupported里计数。素材广场单个关键词最多返回 1000 条。广场卡片是异步应用的,工具等对象出现在场景里(最长 60 秒)才返回;新建的渲染组(如「2D 前景」「AI 实时变脸 (1)」)会作为新增对象报告,删除它们用官方的delete_render_group。素材库的搜索接口只匹配标题,很多素材的名字里没有人们会搜的词(美妆 › 腮红里是「雾堇胭」「红玫瑰」,没有素材叫「滤镜」),所以
library_search还会展开名字与搜索词相同的面板或子分类,以及「子分类 + 面板」组合(「复古滤镜」);「面板 + 其它词」(「韩系滤镜」)只在该面板里按标题搜「韩系」。名字只是包含搜索词的子分类不展开,列在related_categories。每个面板或子分类最多取 300 条(实测子分类 17–125 条)。什么都没匹配到时返回hint。works_*、inspiration_*、task_*、rank_*、my_effects、my_effect_reviews、library_list/library_search/library_images、menu_list与当前工程无关,任意一个工程窗口开着即可;不指定工程时由 pid 最小的窗口处理。返回资料的方式:
列表默认每页 20 条(服务端上限更小的按上限),只给挑选时要看的字段;要细节用对应的详情工具。
列表里的图片、视频、音频不给地址,给短引用
*_ref/*_refs(img:12、video:3、audio:5),交给image_view:一个签名 CDN 地址有几百字,实测占列表每条的 43%–93%。引用记在 MCP 服务里,这次运行期间有效(最多记 2 万个,超出时忘掉最久没用的);详情工具(inspiration_detail、menu_list的details)给的是这个对象自己的图,仍给地址。我们自己的工具回答超过 3 万字时,全文写进
~/.xiangsu-mcp-ext/outputs/(24 小时后删除),回答换成文件路径和结构概要(每个字段的值或条数,列表给每条有哪些字段),用读文件的工具按需读,或用分页参数分几次取。3 万是拍的:task_detail原来一次回 4.8 万字,读不全。官方工具原样转发,不受影响。字段命名:投稿量统一叫
publish_*(publish_count、publish_peak、publish_total),跟拍量叫follow_shoot,页面原样给的展示文字(如「1.2万」「¥50」)以_text结尾,换算过的金额以_yuan结尾;看不出单位的数(任务奖项的money、award_amount)原样给,不换算。
灵感、任务、排行榜按编辑器首页活动中心的方式请求(编辑器的登录 Cookie 和签名请求头),读写的都是编辑器里登录的账号。排行榜和成长之路用的是像塑移动版的接口,榜单名和筛选项取值与移动版一致,后端改版时可能失效。灵感和任务详情的接口移动版和编辑器是同一个(2026-11-08 对照移动版 v17.7.0 安装包里的接口逐个实测,返回完全相同),移动版看到的内容都在工具的返回里;活动详情、热点内容流、任务筛选、每日任务、创新任务这几个移动版接口暂未接入(参数未知,或当前账号没有内容可核对)。
几处上限是在服务端实测的:
rank_list和rank_subjects每页最多 20、inspiration_list每页最多 50(100 会报错)、专题榜详情一次最多 20。移动版的「特效优秀视频榜」接口对所有榜单都返回空,没有提供。审核记录:编辑器的「拍摄特效管理」(
/creator/v1/effect_list)只有状态码,原因在像塑移动版的审核记录页(站内信「点击查看未过审原因」打开的effect.douyin.com/m/detail?showReviewList=1)。工具按那个页面的方式取:「上线审核」先读review_nodes(review_type=1),没有记录再读effect_reviews;「精选审核」读review_nodes(review_type=2)。2026-11-07 实测,被驳回的特效review_nodes不返回记录,原因来自effect_reviews,如「特效不符合规范:特效中可能含有涉及展示或宣扬不同群体攻击对立类内容」。正文里的|<b>…<b>|、|<a><href>链接<href>文字<a>|等标记按页面的规则去掉,链接放进links。分条原因refuse_reasons的结构取自页面代码,实测的特效还没带过。别人的特效和不存在的 ID,服务端一律报code=1301(「参数不正确,请正确访问」)。my_effects翻页要把上一页返回的sort原样传回,next_cursor就是它(传cursor或offset都只会拿到第一页,2026-11-07 实测)。服务端不给「还有没有」,工具按「这页满了就还有」判断,所以最后一页正好满页时has_more仍是true,再翻一页得到空列表。每页上限 50 是拍的:每个未通过的特效要多一到两次请求。只有作者分享到首页的特效才有工程可下载。排行榜的
effect_id和首页作品的effect_id是同一套编号,works_by_effect按 ID 精确匹配(与首页搜索框的「特效ID」搜索同一个接口,默认在「推荐」里查,首页在「官方工程」里不提供按 ID 搜)。按 ID 搜时「推荐」也能查到只出现在其它分类的作品(2026-11-07 实测 8 个全中,在它们自己的分类里按 ID 搜反而一个都查不到),所以不用跨分类查。首页翻页除了 cursor 还要带上一页返回的
sortingPosition和version(编辑器首页就是这样翻的),只带 cursor 每一页都是第一页;works_list的next_cursor把三者编在一起。按作品名搜索时,「推荐」翻到底只有约 300 条,「美化」「友友天地」等分类里还有它没有的(「头套」多 46 条、「美妆」多 87 条),所以works_search默认搜全部分类。服务端偶尔会提前结束一轮翻页(6 轮里有 1 轮停在 249 条),没到 300 条上限的分类会再翻一轮合并;服务端一直给同一页时停下,并把分类列在incomplete。每个特效要一到两次请求(查不到 ID 且给了名字时再按名字搜一次),实测查一页 20 个用了约 10 秒。结果分三种:found首页有这个特效的工程;same_name首页没有它,只有同名作品,effect_id不同,可能是别人的作品,不能当成同一个特效;not_on_homepage作者没公开工程,没有正规途径能拿到(编辑器「我的特效」里的工程下载只对自己的特效开放)。2026-11-07 实测年轻喜爱榜第一页 20 个特效:10 个found,1 个same_name,9 个not_on_homepage。提交窗口是抖音特效平台的网页(
effect.douyin.com/ac/submit-orion,每次在线加载,安装包里的离线版本较旧,字段也不同)。submit_prepare按页面上的类名和文案找元素,页面改版后找不到时报SUBMIT_PAGE_CHANGED,不会跳过。名称框会在页面的aiName配置请求回来时重新挂载,先填的内容会被清空(2026-11-07 实测,配置在表单出现约 1 秒后才回来),所以工具等这个请求完成再填,最后再用「提交审核」页的摘要核对一遍。灵感下拉只列当前账号收藏的灵感和热点,每次加载 10 条,不在列表里的用页面的搜索框找;选了和灵感所带任务不一致的任务时,页面会清掉灵感,工具会报SUBMIT_BINDING_NOT_APPLIED。「特效发布设置」页上按账号出现的其它设置(活动、创新声明、作品授权)不填,列在other_sections。works_download/works_open走编辑器自己的下载流程,每次解压一份新的到像塑实例目录的ProjectCreatedTmp/CreatedFromTemplate/<guid>/下。dest副本不含Library/缓存(编辑器打开时会重建)。下载物不留痕:
编辑器缓存在
~/Library/Application Support/DouyinAR/Shared/Resources/LokiDownload/TemplateResources/的工程包,解压后立即删除(下载前已存在的视为你自己在首页用过的缓存,不动)。给了
dest时,临时目录里那份随即删除。每份下载(临时目录或
dest)登记在~/.xiangsu-mcp-ext/works-downloads.json。works_cleanup随时删除;没删的在 24 小时后由下一次下载自动清掉(这个时长是拍的:够一个工作日内学完,又不至于堆积,可按需调src/works.mjs的DOWNLOAD_TTL_MS)。编辑器窗口正开着的下载不会被删;像塑关窗时不会自己删除这些目录,关窗后再调
works_cleanup。
AI 组合效果在工程里由三部分组成:场景里的「AI 组合效果」图片对象、它绑定的组合效果纹理(
Assets/AI 组合效果/*.oAICombineTextureJSA,存编译好的workflow、上传后的graphTosUri和云端草稿draftId),以及Graph/graph.json里的 AI Graph。「添加对象」菜单里的 AI 组合效果只建对象和一张workflow为{}的空纹理,编辑器自己也是先建空壳、再由「应用」填参数,所以menu_add仍然拒绝它,改用ai_combine_new/ai_combine_apply。哪些步骤会连到云端(2026-11-08 读编辑器代码;ai_combine_new和ai_combine_apply不建草稿是实测,官方 Patch 建草稿、预览视频上传只读了代码,没有实测):ai_combine_new和本地连线都不联网;官方apply_workflow_patch每次改完都会把工作流存成账号下的云端 AI 效果草稿(releaseAIEffect),此后ai_combine_apply返回的draft_id就是这个草稿;官方generate_workflow扣生图额度;ai_combine_apply上传工作流文件,生成过预览视频时把视频一并上传供审核,自己不建草稿。场景里有变声组件时编辑器拒绝「应用」,工具报AI_COMBINE_APPLY_NO_EFFECT。预览重载有延迟,应用后用
interact_by_dsl先wait2–3 秒再截图更稳。资源删除不可撤销;对象删除可以在编辑器里撤销,但已删除的资源不会回来。
「孤儿资源」只按场景直接引用判断(资源的编辑器 guid 是否出现在场景序列化数据里)。只通过材质等间接引用的资源不会被判为孤儿。
素材放进场景时,编辑器会按对象名再建几个文件夹(如
复古清冷_滤镜、复古清冷_美妆),保存时对象还在才会写到磁盘。object_remove把这类只在编辑器里的路径单独列在editor_only_paths,对象删除后下次保存就会消失,不用删;unused_paths只含磁盘上真实存在的路径,可以照着删(用resource_delete_unused)。
安装(macOS)
需要 Node.js 24+ 和已安装的像塑。安装即表示你同意下面「协议与声明」里的用途限制:只用于学习和个人制作,不得用来抄袭他人作品。
从 npm 安装(必须全局安装:插件按绝对路径加载这份代码,npx 的临时缓存会被清理,安装命令在那里会直接拒绝):
npm install -g @muqian/xiangsu-mcp-plus
xiangsu-mcp-ext-install # 装到 ~/Library/Application Support/DouyinAR/Plugins/v<版本>/Local
echo "$(npm root -g)/@muqian/xiangsu-mcp-plus/src/server.mjs" # MCP 配置里 args 用这个路径或从源码安装:
git clone https://github.com/Muqian-Sun/xiangsu-mcp-plus.git
cd xiangsu-mcp-plus
npm ci
node scripts/install.mjs在 MCP 客户端配置里加一个 stdio 服务(command 用 which node 的绝对路径,args 用上面的 server.mjs 路径或源码目录下的 src/server.mjs):
{
"mcpServers": {
"xiangsu": {
"command": "/absolute/path/to/node",
"args": ["/absolute/path/to/src/server.mjs"]
}
}
}它已经包含官方工具,不必再单独配置官方的 xiangsu-mcp-manager。如果你还在用像塑自带的 xiangsu-effect-editor skill,它要求客户端里存在名为 xiangsu-mcp-manager 的服务;这种情况下保留官方配置即可,两者可以并存。
插件只在安装后新打开的工程窗口里加载;已开着的窗口要保存后重开。插件直接 require 这份代码(源码目录或 npm 全局目录),安装后不要挪动;用 npm install -g 升级时路径不变,不用重新运行安装命令。
更新后怎么生效
改
editor-plugin/library.cjs或editor-plugin/features/*.cjs:插件在下次调用时按修改时间自动重载,不用重开窗口;改坏了返回LIBRARY_RELOAD_FAILED,旧版本继续运行。新增插件方法写进对应 feature 的METHODS。改
editor-plugin/runtime.cjs:重开工程窗口。改
src/:在 MCP 客户端里重启这个服务。
开发
npm test:用模拟的编辑器模块测插件逻辑;用 jsdom 按线上结构搭的提交页测填写流程;用内存传输测 MCP 工具、官方转发、工程窗口编排。node scripts/mcp-call.mjs <tool> '<json>' [...]:新起一个服务按顺序调工具,图片写到<临时目录>/xs-mcp-call/下每次运行一个子目录(一小时后清理)。scripts/official-call.mjs直调官方 MCP,图片同样放在xs-official-call/下。node scripts/call.mjs <method> '<json>' [--pid N]:直调插件。node scripts/e2e.mjs <工程路径> <关键词> [标题]:搜索 + 应用 + 未知 ID 报错的端到端检查(会真的导入素材,只对测试工程用)。config.local.json里devEval: true时可用插件方法dev_eval在编辑器进程里执行探测代码(scripts/call.mjs dev_eval '{}' --code-file x.js,scripts/dump-source.js可导出模块源码)。同一个开关也管scripts/call.mjs的eval/describe;三者都在每次调用时读取开关,改回false在开着的窗口里立即失效。日常使用保持false:它能在编辑器进程里执行任意代码。环境变量
XIANGSU_MCP_EXT_STATE可改状态目录(测试用),XIANGSU_MCP_URL可改官方 MCP 地址。
依赖的编辑器内部接口
完整清单在 editor-plugin/features/assets.cjs 的 REQUIRED(按功能分组),ext_status 会逐项核对。主要有:
素材库:
@orion/Business/AssetsLibrary/Core/Api/{getAssetCategory,getAssetList,search}、.../Control/AssetsLibraryNav/{util,const}、.../Control/util.downloadLokiFile素材广场与收藏:
.../Core/Api/{getAIAssetCategory,getAIAssetList,collect,getAssetSecondPanel,publishAsset}、.../Core/Control/AssetsLibrary的AssetsLibrary.getInstance()(其中的AIAssets.applySquareAsset、AIAssetPictureCtx、AIAssetMakeupCtx、UGanManager与getAssetItemByQuery)、@orion/Business/API/ai_effect_api.getDYEHFileUrls导入:
@orion/orion-sdk/EditorFramework的Resource.AssetPackageManager.instance.import、UndoSystem、PreviewSyncer菜单:
@orion/orion-sdk/orionui的ExtensionManager/I18n,DynamicMenuConfigInfo,SceneOpsService.createEntity,HoverTipsMapAI 组合效果:
AIEffectWindow/AICombinationToolPanel/Core/AIGraphProjectUtils.createAIGraph(「新建工作流」按钮用的同一个),.../Core/Manager/AIGraphManager的getInstance、addGraph、getGraphById、switchGraphbyGuid、editorPanelApply(「应用」;失败时不抛异常,而是在BusinessEventManager上发AIEffectShowToast,工具监听它并以场景里出现新对象为准)工程窗口:
OpenProjectFromEditCommand+EditSender(与编辑器自己的launchProject同一请求,9.8.1 起首页进程只认它),closeProjectAndBackToHome首页作品:
@orion/Business/HomeWindow/TemplatesPanel/Request/{templatesPanel,templatesCategory}、.../Model/util.transformTemplate、.../Model/DownloadTemplateModel;打开作品用OpenProjectFromEditCommand的openTemplate交付:
IconCreationNew/controller/IconPreviewManager、IconCreationNew/UI/BottomPanel/DYEHIconUploadHelper.uploadIcon(上传图标,写回iconUri)、Submission/SubmissionExtension/EffectSubmissionExtension(提交接口submit()只做前置检查并打开提交窗口)、全局App._windows(编辑器每次都新开提交窗口和特效检测窗口、不保存引用,按类名DYEHEffectSubmissionWindow/DYEHPerfTestWebWindow在这里找到它们;提交窗口和特效检测窗口都是网页窗口,网页里的脚本经webview.evaluateJavascript注入,结果经窗口的 JS bridge 以orionJSB://查询传回)、PerfTest/PerfTestExtension、EditWindow/ToolBar/MobilePreview/backendHelper、effectExporter.exportEffectPackage灵感、任务、排行榜:
BusinessCommon/UrlConst的Domain.kBackendApiURL与DomainPath.{kActivityAPI,kTaskListAPI,kGrowthTaskList}、orion-sdk/orionui的CookieManager、BusinessCommon/Utils的PlatformUtils.genSignData/UserAgentUtils.userAgentGenerator、HomeWindow/ActivitiesCenter/Common/types(任务状态、getTypeName)、InspirationDetail/View/const的收藏类型、Agent/AgentInspirationBridge音乐:
EditWindow/Inspector/MusicLibrary/{Model/MusicCategoryModel,Model/MusicListModel,Component/MusicListComponent/MusicSquareManager}预览帧:
Business/Preview/PreviewManager的cacheCurrentFrame/captureScreenshotToMemory(渲染结果;9.8.1 前官方截图也走这组调用);重置用PreviewSyncer.requestReloadSticker加PreviewReloaded与PreviewTextureUpdated事件;后台帧率用EditWindow/BackgroundModeManager.setRecordingMode;窗口是否可见看EditWindow/EditWindowController的窗口和orionui.WindowState
协议与声明
代码以 MIT 协议 开源。另外请注意:
用途限制:本工具只用于学习和个人制作。禁止用它抄袭他人作品:不得把通过本工具看到、下载或套用的他人作品(首页作品工程、排行榜特效、素材广场里其他创作者分享的素材等)原样或稍作修改后发布、投稿、商用,或当作自己的原创。参考别人的做法学习思路可以,作品要自己做。MIT 协议针对的是本项目自己的代码,不改变他人作品的权利归属。
本项目是个人开发的非官方工具,与字节跳动、抖音、像塑没有任何关联,也未获其认可或支持。「像塑」「抖音」「Douyin AR」等名称和商标归各自权利人所有。
仓库只包含本项目自己的代码,不包含像塑的程序、源码或任何素材。通过本工具访问的官方素材、首页作品,其版权归像塑或原作者所有,使用须遵守像塑 / 抖音的用户协议和平台规则。
首页作品只用于学习参考:不要把下载的工程、素材放进公开仓库或转发给他人,学完用
works_cleanup删除。本工具调用的是编辑器内部接口,可能随像塑升级失效,也可能被平台限制。使用风险自负,作者不对因使用本工具造成的账号、数据或作品损失负责(详见 MIT 协议的免责条款)。
English
Unofficial MCP extension for Douyin AR (像塑) on macOS. One stdio MCP server proxies every tool of the editor's official MCP (with automatic reconnects) and adds what the official server cannot do: browse/search/preview/apply official library assets, browse/search/download or open the homepage works (official projects and published effects) as full projects an agent can read and learn from (rank-board effects are looked up there by effect id, though effects whose authors did not share them on the homepage have no downloadable project; every download is registered and deleted by works_cleanup or after 24 hours), add any item of the editor's "add object" menu (toolbar makeup / reshape / AI face effects), create AI combine workflows (the photo is sent to the cloud and generated from the workflow) and apply them to the scene the way the AI effect window does, leaving node editing and preview generation to the official workflow tools, list a project's makeup layers with the face part, colour and strength of each (from the layer's region and its texture's pixels when the name says nothing), set FaceWarpX brush intensity, prepare delivery (setting and uploading the icon, local and cloud effect checks, filling in the submit window — name, trigger hint, camera, inspiration, task — up to its final step, where pressing 提交审核 stays a user click, phone preview QR codes, binding received creator tasks or inspirations), read the signed-in account's inspirations and tasks (collect inspirations, receive tasks) and the mobile app's rank boards, list the account's submitted effects with their review status and, for rejected ones, the reviewer's reason and full review timeline, use Douyin music, open/create/close project windows, and remove objects together with resources only they used. It works through a small editor plugin that exposes a token-protected RPC on 127.0.0.1 inside each project window. Relies on editor internals (verified on 9.7.2); ext_status reports any missing internals. Install with npm install -g @muqian/xiangsu-mcp-plus && xiangsu-mcp-ext-install (a global install is required: the editor plugin loads this code by absolute path, so the npx cache is refused), or from source with npm ci && node scripts/install.mjs; then register node <package>/src/server.mjs as a stdio MCP server.
For learning and personal creation only. Do not use it to copy other creators' works: works you view, download or apply through this tool (homepage projects, ranked effects, assets other creators shared) must not be republished, submitted, used commercially or passed off as your own, as is or modified. Licensed under MIT, which covers this project's own code only. Not affiliated with or endorsed by ByteDance / Douyin; all product names and trademarks belong to their owners. The repository contains no editor code or assets. Official assets and homepage works accessed through this tool belong to 像塑 or their creators and are subject to the platform's terms; use downloaded works for learning only, delete them with works_cleanup when done, and do not redistribute them.
Available Tools
49 toolsai_combine_applyA
把一张 AI 工作流放进场景,等同 AI 效果窗口的「应用」(可撤销):编辑器编译工作流、把工作流文件上传到特效平台,再添加「AI 组合效果」对象(场景里没有 2D 前景时一并建「2D 前景」「2D 摄像机」)。不扣额度,不新建草稿;工作流生成过预览视频时一并上传供审核。效果组合节点没有输入连线等情况下编辑器会拒绝,返回 AI_COMBINE_APPLY_FAILED 和编辑器的提示原文(如「请先连接效果组合器」)。返回 added_objects(新对象名和 object_path)和 draft_id(工作流已存成云端草稿时才有,否则为 null)。之后 save_project。
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes | ai_combine_new 或官方 get_workflow_context 返回的 ai_graph_id。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does so well: it discloses that the action is undoable, consumes no quota, creates no new draft, uploads a preview video for review when one exists, and auto-creates dependent objects. It also documents the validation failure path precisely (AI_COMBINE_APPLY_FAILED plus the editor's original message, with a concrete example) and the return payload (added_objects with object_path, draft_id nullable).
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?
Front-loaded with the core action and its user-facing equivalent, then layered with prerequisites, side effects, failure modes, and return values. Sentences are dense but each carries distinct information. Slight cost: the parenthetical object-creation clause and the error example make it long, though both are load-bearing given no output schema.
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 mutation tool with zero annotations and no output schema, the description supplies everything an agent needs: what it mutates, that it is reversible, that it costs no quota, the auto-created objects, the error code and message shape, and the exact return fields including nullable draft_id. It even names the mandatory follow-up 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 description coverage is 100%, so both optional selectors (instance_id / project_path) and the required graph_id are already documented in the schema itself, including the '二选一' and 'only one window open' rules. The description reinforces graph_id as 'the workflow' but adds no syntax, format, or edge-case detail beyond the schema. 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?
Names a specific verb+resource ('把一张 AI 工作流放进场景' = apply an AI workflow into the scene) and pins down the exact user-facing equivalent ('AI 效果窗口的「应用」'). It also enumerates the concrete side effects — compile, upload workflow file, add AI 组合效果 object, auto-create 2D 前景/2D 摄像机 — which separates it cleanly from the sibling ai_combine_new (creation vs. application).
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?
Usage context is clear: it is the 'apply' stage that follows a workflow existing, and the description ends with the explicit next step '之后 save_project'. The graph_id schema entry also routes the agent to ai_combine_new / get_workflow_context for the required input. What is missing is an explicit when-NOT clause (e.g., don't call before the workflow node is wired), which is instead surfaced reactively as an error case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_combine_newA
新建一张「AI 组合效果」工作流(用户拍照后在云端按工作流出图或出视频),等同 AI 效果窗口的「新建工作流」:在本地建 AI Graph,只有「输入图」和「效果组合」两个节点且未连线;不联网、不扣额度、不建云端草稿。返回 ai_graph_id 和各节点的 node_id,交给官方 get_workflow_context / get_workflow_capabilities / apply_workflow_patch 添加生图节点、写 prompt、连线(官方 apply_workflow_patch 每次改完会把工作流保存成账号下的云端 AI 效果草稿),要看效果用官方 generate_workflow(扣额度)。改好后用 ai_combine_apply 放进场景。「添加对象」菜单里的 AI 组合效果只建空壳,不要用 menu_add。
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the whole burden and does: it states the operation is local-only, makes no network call, deducts no credits, and creates no cloud draft. It further discloses that official apply_workflow_patch saves a cloud draft on each edit and that generate_workflow costs credits, which is exactly the side-effect context an agent needs.
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 purpose and the no-side-effect guarantees are front-loaded, followed by the workflow chain. It is dense and long for a two-parameter tool, but nearly every clause carries operational meaning (credit cost, cloud drafts, the menu_add warning), so little 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?
Even without an output schema, the description explains the return values (ai_graph_id plus each node's node_id) and what the caller must do with them. Combined with the downstream tool chain and cost caveats, an agent has everything needed to call it and continue 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 coverage is 100%, so instance_id and project_path are already documented (mutually exclusive, both optional when only one project window is open). The description adds no additional guidance about those parameters, 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?
Names a specific verb+resource: creating a local 'AI 组合效果' workflow graph with exactly two unconnected nodes ('输入图' and '效果组合'). It explicitly contrasts this with the sibling menu_add ('只建空壳,不要用 menu_add') and with ai_combine_apply, so an agent can distinguish it from all nearby 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?
States the full call sequence: create here, then use official get_workflow_context / get_workflow_capabilities / apply_workflow_patch to add generation nodes and wire them, then generate_workflow to preview, then ai_combine_apply to place in the scene. It also gives an explicit exclusion ('不要用 menu_add') with the reason.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
effect_checkA
特效检测,和在编辑器工具栏点「特效检测」一样:打开「特效检测」窗口,由窗口把特效包上传到抖音做云端检测(不是发布),等待结果 passed / not_passed / needs_optimization / failed。出结果后读出检测页的详情一起返回:verdict(页面结论,如「检测通过」「特效不通过」)、checks(每项检测的结论;包体积、帧率给出 figures:数值、上限、是否达标,帧率分 android / ios;没通过的项带页面给的改进建议 advice,读不到时写 advice_unavailable),然后关掉这个窗口(window_closed=true);详情读不出来时窗口留着,返回 details_error。超过 timeout_ms 还没出结果时返回 timeout,窗口留着继续检测;之前调用留下的检测窗口会先关掉再开新的(closed_previous 是关掉的个数),所以窗口不会越叠越多。
| Name | Required | Description | Default |
|---|---|---|---|
| timeout_ms | No | 最长等待时间,默认 300000(5 分钟)。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does so: it discloses the side effect of closing previous detection windows (with closed_previous count), that the window is closed only on a successful detail read (window_closed=true), that the window is left open on details_error or timeout, that timed-out checks keep running, and it enumerates the four possible verdicts.
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 purpose is front-loaded in the first clause and every subsequent clause earns its place by describing a distinct return state (verdict, checks, figures, advice, details_error, timeout, closed_previous). It is a single dense run-on sentence joined by semicolons, which makes the branching logic harder to scan than it needs to be.
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 and no annotations, yet the description fully specifies the return shape (verdict, checks with figures for size and android/ios frame rate, advice or advice_unavailable, window_closed, closed_previous, details_error, timeout) and the window lifecycle in every branch. An agent has everything needed to call it and interpret results.
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, but the description adds real meaning for timeout_ms beyond the schema's value bound: what happens on expiry (returns timeout, window stays open, detection continues). instance_id / project_path are left entirely to the schema, which already documents their mutual exclusivity and the single-window default.
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 names a specific verb+resource (特效检测 / effect check) and immediately disambiguates scope: it uploads the effect package for cloud checking, explicitly 'not publishing' (不是发布). An agent can distinguish this from my_effect_reviews or submit_prepare 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?
It anchors usage to a concrete UI action ('same as clicking 特效检测 in the editor toolbar'), which tells the agent when this is the right call, and rules out publishing as an alternative intent. It does not name a sibling tool to use instead in any scenario, so it stops short of explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ext_statusA
扩展自身状态:官方 MCP 连接情况,以及每个已加载 XiangsuMcpExt 插件的工程窗口(pid、工程路径、对应的官方 instance_id、编辑器接口自检)。工具报找不到窗口、INCOMPATIBLE_EDITOR 或官方工具不可用时先调它排查;插件只在装好后新打开的工程窗口里生效。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses the exact return payload per plugin and the important caveat that the plugin is inert in already-open windows. It never explicitly says the call is side-effect-free or cheap, but a status/self-check framing makes read-only behavior clear enough.
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?
Purpose is front-loaded, followed by returned fields, then troubleshooting triggers. The sentence about newly opened windows is a bit tacked-on but carries real behavioral information, so it 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?
With no output schema, no annotations, and no parameters, the description must explain what comes back — and it lists the returned fields explicitly. Adding whether the output is a single object or a list per plugin would close the remaining 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?
The tool takes zero parameters, so schema coverage is a non-issue and the baseline is 4. The description spends its words on the returned fields instead, which is the right use of space.
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?
Names a specific resource (extension self status) and enumerates exactly what it reports: official MCP connection state plus per-plugin project window data (pid, project path, official instance_id, editor interface self-check). No sibling tool in the list reports diagnostic state, so an agent can place it immediately.
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 precise trigger conditions: call it first when a tool reports a missing window, INCOMPATIBLE_EDITOR, or unavailable official tools. It also warns the plugin only takes effect in project windows opened after installation. It does not name an alternative tool or state when not to call it, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
face_warp_listA
列出场景里所有「塑型画笔」组件(FaceWarpX,含猫脸/狗脸),返回 object_path、是否启用、每项画笔的序号与强度。官方 set_component 改不了画笔强度,用 face_warp_set_intensity。
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden, and it does disclose the return shape (object_path, enabled state, brush index and intensity) plus an important behavioral quirk about set_component not being able to change intensity. It does not state whether the call mutates anything, how large scenes are handled, or whether results are paginated, which keeps it short of a 5.
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 with the resource and return fields front-loaded, then the alternative routing. The parenthetical about cat/dog faces and the set_component warning both earn their place, though the sentence is dense enough to need a second read.
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 or annotation coverage, but the description compensates by enumerating the returned fields and flagging the set_component limitation. Nothing critical for calling a read-only two-parameter lister is missing, though scope of the listing (whole scene vs. current instance) is only implied.
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 parameters (instance_id, project_path) already document their mutual exclusivity and the single-window fallback. The description adds no parameter-level meaning, so the 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?
States a specific verb plus resource: list all FaceWarpX brush components in the scene, including the cat-face/dog-face variants. It also names the exact fields returned (object_path, enabled flag, per-brush index and intensity), so an agent can distinguish it from the sibling face_warp_set_intensity without opening any 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?
Explicitly routes the intensity-changing case to the sibling face_warp_set_intensity and warns that the official set_component cannot change brush intensity. It gives clear context for reading, but offers no exclusion about when this listing is unnecessary (e.g., versus scene_tree or inspect_many for general inspection).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
face_warp_set_intensityA
修改「塑型画笔」强度(等同检查器强度滑块,0–100),只改强度、保留笔刷数据,可撤销。object_path 取 face_warp_list 的路径,或能唯一定位的末尾几段。省略 item_index 时改全部画笔项。
| Name | Required | Description | Default |
|---|---|---|---|
| intensity | Yes | 强度,0–100。 | |
| item_index | No | 只改某一项画笔;省略时改全部。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| object_path | Yes | face_warp_list 返回的 object_path,或能唯一定位的末尾几段。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full behavioral burden and does meaningful work: it discloses that only intensity changes, that existing brush data is preserved, and that the change is undoable (可撤销). Those are exactly the mutation-scope and reversibility facts an agent needs. It does not cover failure behavior, required permissions, or what a successful call returns, which keeps it below a 5.
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, front-loaded with the action and its constraints, followed by the path-sourcing rule and the item_index default. There is minor overlap with schema text, but nothing is wasted or out of order.
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 five-parameter mutation tool with no annotations and no output schema, the description covers purpose, mutation scope, reversibility, path sourcing, and the item_index default. The gap is the project_path/instance_id selection and any hint about the response, though the schema does document the project targeting.
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 parameters are already well documented, and the description largely restates them (0–100 intensity, object_path from face_warp_list, item_index omitted means all). It adds no meaning for instance_id or project_path, and the baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (modify the 塑型画笔 intensity), gives the numeric domain 0–100, and anchors it to a familiar concept (the inspector intensity slider). It also distinguishes itself from the sibling face_warp_list by naming it as the source of object_path, so an agent can tell the read tool from the write tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the operational context: object_path should come from face_warp_list or a uniquely-locating trailing segment, and omitting item_index sets every brush item. That is enough to select and drive the tool, but there is no explicit when-not guidance or statement of what happens when the path is ambiguous or missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
growth_routeA
像塑移动版的「成长之路」:当前账号的特效师等级 current_level,以及每一级(新手特效师、潜力特效师……大师特效师)的现金奖励、状态(done 已完成 / in_progress 进行中 / locked 未解锁)和要达成的目标:每个目标的说明(如「绑定「灵感」上线 0/3 个作品」)、当前进度 current / 目标 target、对应奖励。最高级给的是权益 rights。任意一个工程窗口开着即可,用编辑器里登录的账号读取。活动中心里一个个带参考工程和教程的成长任务用 tasks_list 的 kind=growth。
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
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 disclose the key behaviors: no auth parameter is needed because the editor's logged-in account is used, and a project window must be open. It also enumerates the status vocabulary (done/in_progress/locked) and notes that the top tier pays out in rights rather than cash. Pagination and error behavior are unstated, which keeps it below a 5.
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?
Dense but mostly load-bearing: since no output schema exists, describing the return shape (level, reward, status, goal, current/target, rights) is necessary, and the worked example 「绑定「灵感」上线 0/3 个作品」 pins down progress semantics. The parenthetical level enumeration (新手特效师、潜力特效师……大师特效师) is decorative and could be trimmed.
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 read tool with no annotations and no output schema, the description covers the return structure thoroughly, names the account source, and disambiguates against tasks_list. It omits what happens when no window is open and any error or empty-state behavior, but nothing essential for a correct call 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 description coverage is 100% and both parameters (instance_id, project_path) are already documented as mutually exclusive and omittable when exactly one window is open. The description's line 任意一个工程窗口开着即可 corroborates that but adds no new syntax or selection detail. Baseline 3 is appropriate when the schema does the work.
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 resource: the current account's effect-artist level plus every level's cash reward, status (done/in_progress/locked), goals with current/target progress, and the rights granted at the top tier. It is not verb-first (it opens with the feature name 「成长之路」), but an agent can still tell it apart from tasks_list, which the description explicitly names as the sibling for per-task growth content.
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 a concrete precondition (any project window open is sufficient; the editor's logged-in account is used) and explicitly routes the agent to tasks_list with kind=growth for the task-center items that carry reference projects and tutorials. There is no explicit when-not case, but the split between this tool and tasks_list is stated plainly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
icon_openB
打开编辑器的「图标制作」窗口(官方图标模板、文字模板、AI 图标),让用户在里面挑选或调整。
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully conveys that this is a human-in-the-loop UI tool ('让用户在里面挑选或调整') rather than one that mutates project state directly, which is meaningful context. However it says nothing about whether a project window must already be open, what happens when the window is already open, or what the call returns.
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 single well-formed sentence with the resource front-loaded and no filler. Slightly more could be gained only by adding the routing information the description currently lacks.
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 (two optional params, no output schema, no annotations), so not much is required. Still, an agent would benefit from knowing the relationship to icon_set and whether an open project is a precondition, both of which are absent.
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 parameters are documented there, including the instance_id/project_path either-or rule and the case where both may be omitted. The description adds no parameter meaning beyond the schema, 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 names a specific verb (打开) and resource (编辑器的「图标制作」窗口) and enumerates the three kinds of content available inside (官方图标模板、文字模板、AI 图标). It is clear what the tool does, but it never contrasts itself with the closely related sibling icon_set, so an agent must infer which of the two it needs.
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?
Usage is only implied: opening a window so the user can browse or adjust icons suggests a create/browse flow, as opposed to icon_set which presumably applies one. There is no explicit when-to-use, no when-not-to-use, and no mention of the sibling alternative, leaving the boundary to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
icon_setA
设置特效图标(提交特效必需):把一张图片居中裁成正方形、缩放到 360×360 PNG,写进工程的 Icon/ 目录(与「图标制作」窗口保存的同一批文件),并和那个窗口的「完成」按钮一样把图标上传到抖音特效平台(提交窗口只认上传过的图标)。默认女性、男性两个图标位都用这张图(提交窗口要这两个)。上传失败报 ICON_UPLOAD_FAILED,重试即可。图片可以来自 generate_image 生成的资源,或 capture_preview 截图另存的文件。之后 save_project 落盘。
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | 写哪个图标位:both(默认,女性和男性两个位都用这张图,提交窗口要的就是这两个)、female、male,或 common 通用。 | |
| image_path | Yes | 图片的绝对路径(png / jpg / webp 等 sips 能读的格式)。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does so well: it discloses image transformation and resize, the on-disk location of written files, the external platform upload side effect, the required female and male slots, and an error code ICON_UPLOAD_FAILED with retry guidance. It leaves out whether existing icons are overwritten and what authentication the upload requires, which are the only notable side-effect gaps.
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 sentence begins with the purpose and the submission requirement, which is the right order. The parenthetical clauses pile up (提交窗口只认上传过的图标, 提交窗口要这两个), repeating the 'submission needs both icons' point more than once, but nothing is truly irrelevant.
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 four-parameter mutation tool with no annotations and no output schema, the description covers side effects, error handling, accepted image sources (generate_image output or capture_preview files), and the required follow-up call. Without an output schema, it could say what the call returns, and it says nothing about overwriting existing icons.
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 explains every parameter, including the type enum and the instance_id/project_path either-or rule. The description mostly restates the default for type (both slots) rather than adding new semantics, so 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 names a specific verb and resource (设置特效图标), then enumerates the concrete operations: center-crop to square, scale to 360×360 PNG, write into the project's Icon/ directory, and upload to the Douyin effects platform. That is far more specific than the name alone, and the parenthetical (提交特效必需) distinguishes it from general icon-editing siblings such as icon_open.
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 clearly says when this tool is needed (submission requires uploaded icons) and ties it to the sibling workflow: the same files the 「图标制作」 window saves, the same effect as that window's 「完成」 button, plus the follow-up step with save_project. It does not state when to prefer icon_open or when not to use this tool, so the alternatives are only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_viewA
查看图片。列表类工具(素材、作品、灵感、任务、排行榜、音乐等)返回的是短引用 *_ref / *_refs(如 img:12),详情类工具(inspiration_detail 的 images、menu_list details 的 image_url)返回地址,都交给本工具;也可以传本机图片文件的绝对路径(如 menu_list details 的 image_file)。视频和音频引用(video:3、audio:5)看不了画面,返回它的原地址。一次最多 8 张,只认 png / jpeg / gif / webp,单张失败只在该项写明原因;图片很大(如动图)时一次给不完,没给的列在 not_returned 里,再调用一次即可。
| Name | Required | Description | Default |
|---|---|---|---|
| images | Yes | 其它工具返回的引用(img:12)、http(s) 图片地址,或本机图片文件的绝对路径。 |
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: it discloses the per-call cap of 8, the accepted formats, per-item partial failure semantics (only that item's reason is written), and the truncation behaviour for large/animated images with a not_returned list requiring a second call. These are non-obvious operational traits an agent could not infer elsewhere.
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?
Purpose is front-loaded and every clause carries information (sources, formats, cap, failure handling, truncation). It is somewhat run-on as a single semicolon-chained block, and the parenthetical examples could be tightened, but 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, yet the description effectively documents the return shape: per-item failure reasons and a not_returned list for truncated batches. Combined with the input sourcing rules and the video/audio fallback, an agent has everything needed to call this correctly and interpret partial results.
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% and the single parameter's schema description already lists refs, http(s) URLs and absolute paths, so the baseline is 3. The description adds provenance the schema lacks — which sibling tools emit which reference form — plus the caveat that video/audio refs are not viewable, which meaningfully guides what to put in the array.
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 (查看图片) and immediately distinguishes itself from the many list/detail siblings by naming exactly which of their outputs (short *_ref/*_refs references, image_url addresses, image_file paths) are valid input here. An agent can tell what this tool is for 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?
Explicitly routes the agent: list-type tools give refs, detail-type tools give addresses, and both should be passed here; it also states the negative case — video:3 / audio:5 references cannot be rendered and their original address is returned instead. Constraints (max 8, png/jpeg/gif/webp only) and the retry path for oversized images are stated up front.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_manyA
一次查看多个对象的组件参数(逐个调用官方 inspect;只看一个对象的完整原始数据时直接用 inspect),值里的 {type, data} 包装直接展开成值,超长数组只给长度和前几项;绑定的资源写成 {resource, type, file},引用的对象写成 {object, name}。component_types 只留某些组件(如 ["Transform"]),fields 只留属性名包含这些片段的属性(不分大小写,如 ["intensity", "position"])。preset="key" 自动留下通常决定效果的参数:位置/缩放/旋转、显隐与启用、强度/不透明度/权重/颜色类属性、文字内容(str)与 2D 尺寸(sizeDelta)、绑定的资源,以及场景文件里脚本组件的全部参数(这份清单是按已做过的妆容、形变、贴纸、文字效果拍的,缺的用 fields 补,可与 fields 同时用)。传 project_dir 时不开窗口、直接读场景文件(含编辑器面板里的参数,如妆容的贴图和强度),guids 用 scene_tree 给出的 #序号;内置资源写成 {builtin: id},组件运行时生成、工程里没有文件的资源写成 {path}。单个对象失败只在该项写明原因。save_to 是目录的绝对路径,结果另存为其中的 inspect_many.json,长期保留。
| Name | Required | Description | Default |
|---|---|---|---|
| guids | Yes | 对象或组件的 guid(scene_tree / get_scene 返回的;project_dir 时是 #序号)。 | |
| fields | No | 只保留属性名包含这些片段的属性。 | |
| preset | No | key:只留关键参数,见工具说明。 | |
| save_to | No | 另存到这个目录(绝对路径,不存在会创建),长期保留。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_dir | No | 不开窗口、直接读这个工程目录的场景文件;给了它就不看 project_path / instance_id。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 | |
| component_types | No | 只保留这些类型的组件。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden, and it does substantial work: it discloses output shaping ({type, data} unwrapping, long arrays truncated to length plus leading items), reference encodings for resources and objects, per-item partial failure reporting, and that save_to persists results long-term as inspect_many.json. It does not mention the cost implication of internally invoking inspect once per guid or any practical ceiling beyond the schema's maxItems of 40, which is the main behavioral gap.
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 purpose and the alternative-tool routing are front-loaded, and most sentences carry operational facts. It is dense with nested parentheses, and the aside explaining how the preset list was originally derived is lower-value than the rest, slightly diluting an otherwise tight definition.
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 8 parameters, no annotations, and no output schema, the description covers filters, mode selection, output shape, per-item failure, and persistence — enough to call it correctly. It stops short of describing the envelope of the returned result (per-object keys, ordering relative to the input guids) and the performance characteristics of sequential per-object inspection.
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?
Although schema coverage is already 100%, the description adds genuinely new meaning: fields matches case-insensitively on property-name substrings with concrete examples, component_types is exemplified with ["Transform"], preset='key' is fully enumerated (transform, visibility/enabled, intensity/opacity/weight/color, str text, sizeDelta, bound resources, all script-component params) rather than left to the schema's circular '见工具说明', and guids switches to #序号 form in project_dir mode. This is above the baseline-3 expectation for a fully documented 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 opening clause gives a specific verb (查看), a specific resource (多个对象的组件参数), and a batch scope, then immediately contrasts with the single-object sibling 'inspect'. An agent can distinguish inspect_many from inspect without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states explicitly when to use the sibling instead ('只看一个对象的完整原始数据时直接用 inspect'), explains the two execution modes (project_dir for offline/no-window reads vs instance_id/project_path for a live editor), and says preset and fields can be combined. It even admits preset is a heuristic list derived from prior makeup/warp/sticker/text work and directs the agent to fields for gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspiration_bindA
按 inspiration_id 把一条创作灵感绑定到当前工程(编辑器给 agent 的同一接口),之后 save_project 落盘,打开提交窗口时会自动带出。只在提交时选灵感的话,也可以直接给 submit_prepare 传 inspiration:它在提交窗口的下拉里按名称选,只列当前账号收藏的灵感和热点。
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 | |
| inspiration_id | Yes | 要绑定的 inspiration_id。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses that binding uses the same interface as the editor, that the change is not persisted until save_project, and that the submit window auto-populates. It does not cover error/duplicate-binding behavior or whether the project must already be open.
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 that front-load the core action, then the persistence step, then the alternative path. The parenthetical asides are slightly dense but every clause conveys usable 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?
For a simple three-parameter tool with no output schema or annotations, the description covers the action, persistence requirement, downstream effect, and the alternative route. Only edge cases like existing bindings or failure modes are absent.
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 instance_id/project_path mutual exclusivity and the inspiration_id format are already documented. The description reinforces the binding role of inspiration_id but adds no format or constraint details 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?
States a specific verb and resource: binding an inspiration (by inspiration_id) to the current project. It also distinguishes itself from the sibling submit_prepare by explaining that the latter picks inspirations by name at submission time.
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 gives the alternative path: if you only need to choose an inspiration during submission, pass inspiration to submit_prepare instead. It also names the required follow-up (save_project) so the agent knows the full flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspiration_collectB
收藏或取消收藏一个灵感(写入当前登录账号,与灵感详情页的收藏按钮相同),之后重新查询收藏状态确认生效。
| Name | Required | Description | Default |
|---|---|---|---|
| collect | No | true 收藏(默认),false 取消收藏。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 | |
| inspiration_id | Yes | 要收藏的 inspiration_id。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses that the write targets the current logged-in account and mirrors the UI button, which is real behavioral context. However, it is ambiguous whether the tool itself re-queries to confirm or the agent is being instructed to do so, and it says nothing about idempotency, permission requirements, or what a failed confirmation means.
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 single compact sentence with the action and the account scope front-loaded and no wasted wording. The trailing verification clause is slightly ambiguous rather than verbose, keeping it below a 5.
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 an annotation-free mutation with four parameters and no output schema, the description covers what changes and in whose account, which is the essential part. It still leaves the post-action verification semantics and failure behavior unclear, so an agent cannot fully predict the call outcome.
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 collect's default true/false semantics, the instance_id vs project_path either-or, and inspiration_id are already fully documented. The description adds only the high-level collect/uncollect framing, which is a baseline-3 contribution.
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 concrete verb pair (favorite / unfavorite) applied to a specific resource (an inspiration), and clarifies it writes to the currently logged-in account, the same as the favorite button on the inspiration detail page. It is clear what the tool does, but it does not distinguish itself from nearby siblings such as inspiration_detail or inspiration_bind.
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?
Usage context is only implied: the equivalent-to-UI-button framing tells the agent this is the favorite action, and the trailing clause suggests verifying afterward. There is no explicit when-to-use / when-not-to-use guidance or named alternative for reading favorite state (e.g., inspiration_detail).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspiration_detailB
一个灵感的详情:玩法说明、特效类型、激励说明、全部图片的地址 images(用 image_view 看)、作者、奖励(金额、说明、时间)、关联热点(热度和标签,如「66条热点相关灵感」)、关联官方工程、已有的同灵感特效及发布量、示例视频 videos(抖音视频的播放地址 url、封面 cover_url、作者、点赞数、尺寸)、贴纸 stickers,以及当前账号是否已收藏和总收藏数。
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 | |
| inspiration_id | Yes | inspiration_list / rank_hotspots / task_detail 返回的 inspiration_id,或像塑 / 抖音 App 灵感页里的灵感 ID。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the behavioral burden. Reading '详情' implies a read-only fetch, and the description usefully notes that favorite status is account-scoped ('当前账号是否已收藏'), but it never states read-only semantics, permission requirements, or that project_path/instance_id select the working context. It is generous about returned fields but thin about behavior.
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 whole definition is a single run-on sentence with stacked parentheticals, so it is dense and hard to scan, though the leading clause is front-loaded with the core purpose and every listed field is genuinely informative.
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 appropriately compensates by enumerating the returned fields (including nested video attributes like url, cover_url, likes, size), which is exactly what an agent needs to know before calling. It is only missing the usage/alternative context, which the field enumeration cannot cover.
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 each of the three parameters (instance_id, project_path, inspiration_id) is already documented in the schema, including the either/or relationship. The description adds no additional parameter semantics, so 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 it is the detail view of a single inspiration ('一个灵感的详情') and then enumerates the concrete payload: gameplay notes, effect type, incentive info, images, author, rewards, related hotspots, official project, existing effects, videos, stickers, and favorite status. That is specific enough to distinguish it from a list operation, though it never explicitly contrasts with siblings like inspiration_list or task_detail.
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 statement of when to call this versus inspiration_list (which produces the id), rank_hotspots, or task_detail, all of which the parameter schema itself says also yield inspiration_id. The only routing hint is '用 image_view 看' for images, which is a follow-up action rather than a use-case boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspiration_listA
分页列出某个分类下的灵感(灵感是官方和创作者发布的特效创意,首页右侧「灵感」页签就是它):inspiration_id、标题、标签(如「激励」)、作者、收藏数、是否已收藏、是否 AI 灵感、关联热点 hotspot、封面 cover_ref(交给 image_view 看)。每次都带上全部分类 tabs。拿到 inspiration_id 后用 inspiration_detail 看详情。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | 分类名,取上次返回的 tabs 里的一个(全部、热门音源、头饰、变形等);省略时用第一个(全部)。 | |
| count | No | 每页数量,默认 20。 | |
| cursor | No | 翻页游标,取上一页的 next_cursor。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does a good job: it discloses that all category tabs are returned on every call, that tab defaults to the first (全部), and — critically — that *_ref references are only valid for the lifetime of this MCP service run. That lifetime caveat is a real behavioral constraint an agent could not infer from structured fields. It does not mention permissions or rate limits, though these are low-risk for a read.
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?
Front-loaded with purpose, then the field list, then the forward reference to inspiration_detail, then a separate paragraph on ref resolution and lifetime. Every sentence carries information, though the ref paragraph is somewhat dense and could be tightened; the explanatory gloss on what an inspiration is is justified for grounding.
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, and the description compensates by naming the returned fields and explaining that media come back as short *_ref references that must be resolved via image_view, with videos/audio returning original addresses. Combined with a fully documented input schema, an agent has enough to call this correctly; only cross-tool selection guidance versus non-inspiration listing tools is absent.
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 tab, count, cursor, instance_id and project_path including the 全部 default and next_cursor paging. The description only reinforces the tab-source rule and does not add syntax or format details beyond that, 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?
States a specific verb + resource + scope: paginated listing of inspirations under a category, and defines what an inspiration is (effect ideas published by officials and creators, matching the homepage '灵感' tab). It also enumerates the returned fields (inspiration_id, title, tags, author, favorite count, favorited flag, AI flag, hotspot, cover_ref), so an agent can tell instantly that this is the discovery/listing tool distinct from inspiration_detail.
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 routes the agent forward: 'after getting inspiration_id, use inspiration_detail to see details', and explains that tab values come from the tabs returned in a previous response. It stops short of naming when NOT to use this tool (e.g. versus library_list or rank_hotspots when the agent wants hotspots or assets), so no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
library_applyA
把一个官方素材应用到目标工程,与素材库面板里点应用相同(可撤销):素材包下载、校验 MD5、导入并默认放进场景;素材广场的卡片按 kind 走编辑器自己的应用流程(AI 图片、AI 妆容等只下载现成结果,不重新生成、不扣额度),等对象出现在场景里才返回。返回 kind、added_objects(新放进场景的对象名和 object_path)和 package_folders。template_id 须来自本会话的 library_list / library_search。应用后用 capture_preview 验收。
| Name | Required | Description | Default |
|---|---|---|---|
| image_index | No | kind=ai_image 时用第几张结果图,默认 0;整组图见 library_images。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| template_id | Yes | library_list / library_search 返回的 template_id。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 | |
| auto_instantiate | No | 是否放进场景,默认 true;false 时只导入资源面板(只有 kind=package 支持)。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full behavioral burden and does so: it declares the operation undoable, spells out the pipeline (package download, MD5 verification, import, default scene placement), states it blocks until the object appears in the scene, and clarifies that AI image / AI makeup kinds only download existing results with no regeneration and no credit consumption. That is exactly the permission, side-effect and cost information an agent needs before a mutating call.
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 single dense paragraph where each clause carries real information (pipeline, kind dispatch, return shape, prerequisite, verification). The return-value detail and the prerequisite are somewhat back-loaded rather than front-loaded, which slightly hurts scanability.
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 exists, and the description compensates by naming the response fields (kind, added_objects with object names and object_path, package_folders). Combined with the kind-specific behavior and the pre/post-step guidance, nothing an agent needs to invoke this correctly 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%, so the schema already documents all five parameters; the description adds the session-scoped provenance requirement for template_id and reinforces the kind=package constraint on auto_instantiate. It does not add new syntax or edge cases beyond that, but it does more than restate 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?
States a specific verb+resource ('apply an official asset to the target project') and anchors it to a familiar UI action ('same as clicking Apply in the library panel'). It also distinguishes this tool from the sourcing siblings (library_list / library_search) and from music_apply by scoping itself to official material and plaza cards.
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 a hard prerequisite ('template_id must come from this session's library_list / library_search') and a follow-up step ('use capture_preview to verify'), plus explains that plaza cards dispatch by kind. It stops short of an explicit exclusion such as when to prefer music_apply or aweme-style flows, so it is strong but not a full when/when-not map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
library_imagesA
一张 AI 图片卡片(kind=ai_image)的整组结果图 image_ref,按 image_index 编号;用 image_view 看图,应用时用 library_apply 的 image_index 选择。template_id 须来自本会话的 library_list / library_search。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| template_id | Yes | library_list / library_search 返回的 template_id。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full disclosure burden. It does add useful behavioral context — the *_ref values are short references and are only valid for the duration of this MCP service run — but it never says the call is a read-only, side-effect-free lookup, nor does it discuss result size or ordering; the video/audio reference note appears to be generic boilerplate unlikely to apply to this 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?
The first sentence is well front-loaded and earns its place. The second paragraph about img:/video: short references reads as shared boilerplate pasted across tools, and its video/audio clause is not clearly relevant here, so it dilutes rather than sharpens the definition.
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 what comes back — and it does, describing a per-card set of result images enumerated by image_index. Combined with the reference-lifetime caveat, an agent has enough to call it and hand the refs to image_view; only the read-only nature is left implicit.
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 instance_id, template_id and project_path are already fully documented, including the instance_id/project_path either-or. The description only restates the template_id provenance that the schema already states, adding no new 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?
The description identifies the resource precisely: the full set of result images for an AI image card (kind=ai_image), with each image_ref numbered by image_index. It also names the sibling tools it pairs with (image_view, library_apply, library_list/library_search), so it is distinguishable. It lacks an explicit verb (it reads as a noun phrase rather than 'list/get'), which slightly blunts the action.
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 concrete routing: use image_view to look at the images, use library_apply with the image_index to apply one, and template_id must come from this session's library_list/library_search. That is clear when-to-use and prerequisite guidance, though it never states a when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
library_listA
不传 panel_key 时列出可直接应用的分类面板(panel_key)和类型 kind:general 为普通面板(如 3d_distortion=脸部变形/3D 变形、distortion=美型、gaoguai_gan/makeup_gan=AI 实时变脸、3d_makeup=美妆、3d_filter=滤镜、sticker=跟脸贴纸);square 为 aigc_material=素材广场(其他创作者分享的素材,含现成的 AI 图片、AI 妆容、自定义实时变脸,应用时不重新生成、不扣额度);collection 为 collection=收藏(当前账号收藏的素材)。需要扣额度现生成的 AI 面板不在其中。传 panel_key 时分页列出该面板里的素材:子分类、素材(template_id、title、kind、封面 cover_ref 等)和翻页游标。素材广场的子分类是妆容、图片、实时变脸、跟脸贴纸、前景贴纸、画面特效、3D 模型、3D 饰品;收藏的子分类是全部、美妆、滤镜等目录。没有可应用内容的广场卡片不列出,只在 unsupported 里计数。按画面挑选时把 cover_ref 交给 image_view 看;知道要找什么时用 library_search 按关键词搜,本工具适合按面板和子分类浏览。拿到 template_id 后用 library_apply 应用,AI 图片卡片(kind=ai_image)的整组结果图用 library_images 取。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | 每页数量,默认 20。 | |
| cursor | No | 翻页游标,原样取上一页的 next_cursor(收藏是字符串)。 | |
| panel_key | No | 面板,取不传 panel_key 时返回的 panels 里的 panel_key;省略时只返回面板清单。 | |
| category_id | No | 子分类 ID(收藏为目录名);省略时用第一个子分类(通常是「全部」)。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it does disclose important behavior: square (aigc_material) items apply without regeneration or quota consumption, generated AI panels are excluded, panels without applicable content are omitted but counted in unsupported, and *_ref references expire when the MCP service run ends. However, it does not cover error behavior, auth/prerequisite needs, or the difference between instance_id and project_path beyond what the schema already states.
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 behavior before the alternative tools and downstream steps, and almost every sentence adds information. The downside is density: the long parenthesized enumeration of panel kinds and the catalog of subcategories make it a wall of text that is harder to scan than a short bulleted structure would be.
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 annotations and no output schema, the description supplies what an agent needs: the shape of the response (panels, subcategories, materials with template_id/title/kind/cover_ref, next_cursor), pagination behavior, the unsupported counter, and the lifetime of image/video/audio references. It is nearly complete for a browsing tool, with only retrieval edge cases left unstated.
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 schema documents all six parameters and the baseline is 3. The description does add real meaning for panel_key by explaining the general/square/collection grouping and the kinds inside each, and it hints at subcategory structure for category_id, but the other parameters (count, cursor, instance_id, project_path) are described only in 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 two precise modes: with no panel_key it lists applicable panels and kinds, and with panel_key it paginates the materials inside that panel. It names the resource (panels/materials) and the exact identifiers returned (panel_key, kind, template_id, cover_ref), so an agent can distinguish it from library_search, library_apply, and library_images without opening any 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?
It gives explicit routing: use image_view when selecting by visual appearance via cover_ref, use library_search when you know what keyword you want, and use this tool when browsing by panel and subcategory. It also states the downstream steps (library_apply for template_id, library_images for ai_image results), which is clear when-to-use and when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
library_searchA
按关键词搜索官方素材库(美妆、滤镜、脸部变形、AI 实时变脸、贴纸、画面特效、音效、素材广场等)。除了标题匹配,词正好是面板名或子分类名时也带出那里的素材:「滤镜」→ 滤镜面板,「腮红」→ 美妆/腮红、跟脸贴纸/腮红(这些素材标题里多半没有这个词),「复古滤镜」→ 滤镜/复古;每个面板或子分类最多 300 条。结果按标题完全相同 > 标题开头 > 标题包含 > 分类匹配 > 其余排序,每条的 matched 说明命中方式(title、category:面板/分类、panel:面板)。queries 一次搜多个近义词(最多 8 个)并合并去重。按 offset / count 分页(结果缓存 10 分钟,翻页不重新请求),每条带 template_id、title、panel_key、kind、cover_ref,另返回 total、by_panel(各面板条数,可再用 panel_key 缩小)、matched_categories(展开了哪些分类)、related_categories(名字里含这个词、没有展开的分类,可用 library_list 列出)。kind:package 素材包、ai_image AI 图片、ai_makeup AI 妆容、custom_gan 自定义实时变脸、foreground_sticker 前景贴纸、face_sticker 跟脸贴纸、filter 滤镜。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | 每页数量,默认 20。 | |
| query | No | 搜索关键词,如「芒果脸」「腮红」「复古滤镜」。与 queries 二选一。 | |
| offset | No | 分页起点,取上一页的 next_offset;默认 0。 | |
| queries | No | 一次搜多个词并合并,如 ["冷艳", "猫眼", "烟熏", "风格妆"]。与 query 二选一。 | |
| panel_key | No | 只搜这个面板(library_list 不传 panel_key 时返回的 panel_key,如 aigc_material)。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and delivers unusual detail: per-panel/per-subcategory result caps (最多 300 条), a fully specified ranking order (exact title > prefix > contains > category match > rest), the meaning of the matched field, a 10-minute result cache that makes paging free, and the lifetime of returned *_ref handles (valid for this MCP run). This is exactly the operational context an agent cannot infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and matching behavior are front-loaded, then ranking, pagination, and return fields follow in a logical order. It is dense but long, and the kind enum listing and cap repetition add bulk that could be tightened without losing 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?
For a 7-parameter search tool with no annotations and no output schema, the description still documents the return shape (template_id, title, panel_key, kind, cover_ref, total, by_panel, matched_categories, related_categories), the full kind enumeration, and how to consume *_ref values via image_view. Nothing an agent needs in order to call it correctly 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%, so the baseline is 3, but the description adds real meaning: it links queries to synonym-batch usage with a concrete example, ties offset/count to the cache so paging does not re-request, and connects panel_key to the by_panel return field for narrowing. It does not clarify the instance_id/project_path either-or beyond what the schema already says.
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+resource (按关键词搜索官方素材库) and enumerates the covered domains (美妆、滤镜、贴纸、音效等), so an agent can immediately tell this is the keyword-search path over the material library. It also names the sibling boundary — library_list for enumerating categories, image_view for resolving refs — which most search tools omit.
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 concrete usage context: semantic/panel-name matching with worked examples (「滤镜」→滤镜面板, 「腮红」→美妆/腮红), queries for up to 8 synonyms, and panel_key to narrow from by_panel. It does not explicitly state when to prefer library_list or library_images over searching, but the routing to library_list for related_categories implies the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makeup_layersA
列出一个工程的全部美妆层(FaceMask 妆容层和 EyeColorV2 美瞳),逐层说明画在哪个部位、什么颜色、男女强度,以及是否生效(对象或上级隐藏、组件停用、男女强度都为 0 的不生效)。区域(全脸 / 眼部 / 睫毛 / 唇部 / 牙齿)取自妆容层自身的类型;部位先看层名(眉、眼线、腮红、口红等关键字),层名看不出时按贴图像素判断(part_from 注明依据),颜色是贴图上色部分按透明度加权的平均色(color 和 hsl)。groups 按眉、眼妆、美瞳、颊、轮廓、唇、点缀汇总生效的层,absent 列出整套妆里没有的部位,用来看一套妆缺了什么、或拆解别人的作品(works_download 下载的工程)用了哪些部位和颜色。读的是工程目录里的场景文件:正在编辑的工程先 save_project。
| Name | Required | Description | Default |
|---|---|---|---|
| save_to | No | 另存到这个目录(绝对路径,不存在会创建),长期保留。 | |
| project_dir | Yes | 工程目录的绝对路径(含 Assets/main.scene),如 works_download 返回的 project_path 或自己的工程。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it does disclose real behavior: it reads the scene file, defines what makes a layer ineffective (hidden object/parent, disabled component, both intensities 0), and explains how part_from and color weighting are derived. However, the save_to parameter implies a save/side-effect operation that the description never addresses at all, leaving a meaningful behavioral gap.
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?
Purpose is front-loaded in the first clause, but the remainder is one dense run-on paragraph that mixes usage, effectiveness rules, part-inference logic, and output field meanings without separation. Most clauses are earned because there is no output schema, yet the lack of structure hurts scanability.
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 complex analysis tool with no output schema, the description explains the returned fields an agent needs (groups, absent, part_from, color, hsl, intensity) and the effectiveness determination, which is the important part. The only significant omission is what save_to does, keeping it from 5.
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 project_dir and save_to. The description adds context about the project directory (pointing to works_download's project_path) but says nothing about save_to's semantics that goes beyond the schema, so 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?
Opens with a clear verb+resource: list all makeup layers (FaceMask妆容层 and EyeColorV2美瞳) in a project. It specifies the exact scope and the two layer types covered, so an agent can distinguish this from general project or scene inspection tools without reading further.
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 concrete use cases: see what a makeup set is missing, or reverse-engineer which parts and colors someone else's works_download project used, plus a prerequisite (save_project first for a project being edited). It does not name an alternative tool or state when-not to use it, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mobile_previewA
手机预览:按工具栏「手机预览」的方式打包当前工程并上传到抖音的预览服务,返回和编辑器弹出的一样的二维码图片(及其文本、有效期),用抖音 App 扫码即可在真机上看效果。二维码同时存成文件 qr_file,可直接给用户扫,不要另存到别处:到期(expires_at,一般 7 天)后自动删除。会把特效包上传到抖音服务器;内容审核不通过时报 MOBILE_PREVIEW_MODERATION_FAILED。
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does so well: it discloses the network side effect (uploading the effect package to Douyin servers), the possible moderation failure with the exact error code MOBILE_PREVIEW_MODERATION_FAILED, and the lifecycle of the generated qr_file (auto-deleted at expires_at, typically 7 days). This is behavior that could not be inferred from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and then the return artifacts, side effects, and error code in a logical order. It is dense but nearly every clause carries operational value; a slight trim of redundant phrasing about the QR file would make it tighter.
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?
Although there is no output schema, the description explains the return payload (QR image, its text, validity period, qr_file), the storage location and expiry, and the failure mode. For a two-optional-parameter tool, an agent has everything needed to call it and report results 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 coverage is 100%, and each parameter already documents its mutual-exclusion rule (instance_id vs project_path, both omittable when only one window is open). The description adds nothing about the parameters, so the baseline 3 applies — the schema does all the work here.
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?
Names a concrete verb+resource pair: packages the current project the way the toolbar's "手机预览" does, uploads it, and returns a QR code. The comparison to the editor toolbar action plus the explicit return artifacts (QR image, its text, expiry) makes the purpose unmistakable and separates it from generic preview siblings like preview_frames.
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 a clear usage context — scan the QR with the Douyin app to check the effect on a real device — and implicitly anchors the tool to the equivalent toolbar action. It stops short of explicitly contrasting with alternatives such as preview_frames or submit_prepare, so the agent must infer 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.
music_applyA
把一首抖音音乐设为特效的音乐,和音乐库里点「使用」相同:下载音频进工程、写入音乐信息,并在场景里加入抖音音乐对象(再次使用会替换上一首)。start_sec / end_sec 截取片段,默认整首。music_id 须来自本会话的 music_list。之后 capture_preview 验收、save_project 落盘。
| Name | Required | Description | Default |
|---|---|---|---|
| end_sec | No | 片段结束(秒),默认整首时长。 | |
| music_id | Yes | music_list 返回的 music_id。 | |
| start_sec | No | 片段开始(秒),默认 0。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
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 well: it discloses that audio is downloaded into the project, that a scene object is created, and critically that re-invocation REPLACES the previous track — a destructive side effect an agent must know. It omits error/permission conditions (e.g. what happens with no open project, download failures), keeping it at 4 rather than 5.
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?
Front-loads the core action and equivalence, then parameters, then next steps — a logical order with no filler sentences. It is a single dense block of clauses rather than clearly separated segments, which slightly hurts scanability but wastes no 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 mutating tool with five parameters, no annotations, and no output schema, the description covers what an agent needs: the action, the replacement semantics, the clipping behavior, the ID provenance constraint, and the verification/persistence follow-ups. Missing only failure modes and whether the audio download is slow or rate-limited.
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 all five parameters are already documented. The description adds only modest meaning: that start_sec/end_sec jointly define a clip with 'default whole song', and that music_id must be sourced from music_list in this session (partly already in the schema). This is the baseline-3 case where the schema does the heavy lifting.
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 ('把一首抖音音乐设为特效的音乐') and immediately anchors it to a known UI action ('和音乐库里点「使用」相同'), then enumerates the three concrete effects: download audio, write music info, add a Douyin music object to the scene. This distinguishes it from siblings like music_list (discovery) and library_apply (non-music library assets).
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 a hard prerequisite ('music_id 须来自本会话的 music_list') and a follow-up workflow ('之后 capture_preview 验收、save_project 落盘'), which tells the agent how this tool fits into a sequence. It stops short of naming an alternative tool for other music sources or stating an explicit when-not-to-use condition, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
music_listA
列出抖音音乐:两个参数都不传时返回音乐库的分类(像塑原创、推荐、抖音收藏、潮流心选等)的 code 和名称;传 query 按关键词搜索,或传 category_code 看某个分类的第一页(35 首)。返回 music_id、标题、作者、时长 duration_sec、封面 cover_ref、试听 preview_ref(音频引用)和 has_copyright(音乐库给的版权标记,false 或 null 的不要用于要发布的特效)。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | 搜索关键词。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 | |
| category_code | No | 分类 code(不带参数调用时返回);与 query 二选一。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Because there are no annotations, the description carries the full burden, and it discloses real operational behavior: the page size of 35 for category browsing, the fact that *_ref references are valid only during this MCP service run, and a safety-relevant warning that has_copyright=false or null must not be used for effects intended for publishing. It omits authentication and permission requirements and does not state whether the operation is read-only, though that is self-evident.
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 modes, then lists return fields, then follows with the reference-resolution rules. Every sentence carries information, though the reference-resolution paragraph is generic cross-tool plumbing that could live in shared documentation rather than here.
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 explain the returns, and it does: music_id, title, author, duration_sec, cover_ref, preview_ref, and has_copyright with its usage caveat. The remaining gap is that the description does not say how many results a query search returns or whether results can be paged, but the category case is 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 baseline is 3, but the description adds semantics the schema cannot express: the default behavior when both query and category_code are omitted returns the category codes and names, and category_code yields the first page of 35 tracks. That mode interaction is genuinely beyond the field-level descriptions.
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 names a specific verb and resource (list Douyin music) and defines three operating modes: neither parameter (category list), query (keyword search), and category_code (first page of a category). It clearly describes the tool's unique behavior, though it never names the sibling music_apply or explains how this tool differs from it (list versus apply).
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 mode-selection guidance: how to call the tool when you want the category list, when you pass query, and when you pass category_code (first page, 35 tracks). The only gap is that it does not say what to do next, such as using music_apply to apply a track, or when to choose search over browsing categories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
my_effect_reviewsA
一个自己的特效的审核记录,与像塑移动版「审核记录」页同一组接口:名称、当前状态、绑定的任务,reviews 为「上线审核」时间线(最新的在前,提交成功、审核中、审核未通过等,每条有时间、去掉标记的正文 text、分条原因 refuse_reasons、链接 links),innovation_reviews 为「精选审核」时间线(没有时为空)。
| Name | Required | Description | Default |
|---|---|---|---|
| effect_id | Yes | my_effects 返回的 effect_id。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must carry this information itself. It does well: it frames the tool as returning a review-record set rather than mutating anything; it states that reviews are ordered newest-first; it names and explains the status values; it says the text has markers stripped; and it notes that innovation_reviews is empty when there is none. It does not state permission or quota requirements, which keeps it from a 5.
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 single dense sentence that is front-loaded with the purpose and then enumerates the return structure field by field; no sentence is wasted. It is a run-on and slightly heavy, but every clause carries information the schema does not.
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 the return value, and it does so thoroughly, covering both timelines, ordering, and the nested fields time, text, refuse_reasons, and links. What is missing is minor: there is no note on how a large history is bounded or how the instance/project context affects the 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?
Schema description coverage is 100%, and the schema already explains that effect_id comes from my_effects and that instance_id/project_path are mutually exclusive, with both optional when a single project window is open. The description adds nothing about the parameters, 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 names a specific resource (the review records of one's own effect) and explains what is returned: the name, current status, bound task, plus two timelines (reviews and innovation_reviews). It is clear what the tool does, but it never names a sibling it differs from, so an agent cannot tell from the text alone why it should call this instead of effect_check, works_by_effect, or task_detail.
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 says the tool covers 'one's own effect' and mirrors the mobile app's '审核记录' page, which implies when it is relevant. However, there is no explicit when-to-use or when-not-to-use guidance and no mention of alternatives, so the caller must infer the selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
my_effectsA
当前登录账号提交过的特效,最新的在前(与像塑移动版「作品」同一个接口):effect_id、名称、审核状态 status 和 status_text(100 审核中、101 审核未通过、111 测试中、112 测试未通过、120 测试通过、103 已上线、104 已下线、113 延后上线、118 申诉重审中、119 申诉审核未通过)、提交和上线时间、绑定的任务 / 灵感 / 热点、能否编辑 / 删除 / 申诉及申诉类型、投稿量。101、112、119 的特效带 review:最近一条审核记录,text 是去掉标记的原因正文,refuse_reasons 是分条原因,links 是正文里的链接(如审核规则)。完整审核时间线用 my_effect_reviews。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | 每页数量,默认 20(最大 50)。 | |
| cursor | No | 翻页游标,原样取上一页的 next_cursor。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the full burden of explaining the tool's behavior—and it mostly does. It gives the meaning of each status code (100/101/111/112/120/103/104/113/118/119), describes the nested `review` object (text, refuse_reasons, links) that appears only on 101/112/119 effects, and warns that returned refs are valid only for the lifetime of this MCP service run. It never states that the tool is read-only or what permissions it requires, which is a small gap for a listing 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 dense but ordered well: it first explains what the result is and how it is ordered, then details the returned fields and status codes, and finally explains ref handling and how refs are passed to image_view. Listing every status code is verbose, but because there is no output schema, that list earns its place. A few clauses could be tighter, but overall it is information-dense with little waste.
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, and the description fully compensates by documenting the returned fields, the status code table, the conditional `review` subobject, and the short-ref indirection to image_view with its validity window. For a 4-parameter, 0-required tool with 100% schema coverage, nothing an agent needs in order to call it or interpret its output 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 description coverage is 100%: the schema already documents count (default 20, max 50), the cursor (take next_cursor verbatim), and the instance_id/project_path alternative. The description adds nothing about these parameters, so the baseline of 3 applies; it does not compensate for anything because nothing needs 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?
The definition states a specific verb and resource: the effects that the currently logged-in account has submitted, ordered with the newest first, and notes that it uses the same interface as the 像塑 mobile app's 「作品」. It also names the sibling tool it is not: my_effect_reviews is for the full review timeline, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to switch tools: for the complete review timeline, use my_effect_reviews instead, and pass returned image/video/audio refs to image_view. It does not clearly contrast with works_list or works_by_effect, but within its own scope, the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
object_removeA
删除一个场景对象(含子对象,可撤销),并找出只被它使用的工程资源:删除前后对比场景引用,删除前被引用、删除后不再被引用的即为孤儿(unused_paths 已合并到素材包文件夹,只含磁盘上存在的路径)。editor_only_paths 是素材放进场景时编辑器按对象名建的文件夹(如「复古清冷_滤镜」),只在编辑器里、尚未写到磁盘,对象删除后下次保存就会消失,不用删。delete_unused_resources=true 时一并删除 unused_paths(资源删除不可撤销);默认只报告,可之后用 resource_delete_unused 删除。object_path 用完整层级路径或能唯一定位的末尾几段(渲染组本身请用官方 delete_render_group)。只删对象、不关心资源时官方 edit_by_dsl 也能删;要知道删完哪些资源没人用了,用本工具。
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| object_path | Yes | 对象的层级路径,如「面部拉伸/小屁桃_美型」,或能唯一定位的末尾几段。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 | |
| delete_unused_resources | No | 同时删除孤儿资源,默认 false(只报告)。 |
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 well: it discloses that child objects are removed, that the object deletion is undoable, that resource deletion is NOT undoable, and that the default is report-only. It also explains editor_only_paths are editor-side artifacts that vanish on next save and must not be deleted, plus that unused_paths only contain paths existing on disk — behavior an agent could not infer from any structured field.
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 core action and its scope are front-loaded and every sentence carries distinct information. However, the definition is one dense run-on paragraph with stacked parentheticals covering deletion, orphan detection, editor folders, and sibling routing, which makes it harder to scan than a short structured list would be.
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 values, and it does: it defines unused_paths, editor_only_paths, and the report-vs-delete outcome of the flag. For a destructive, two-mode tool this covers everything an agent needs before invoking it.
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 would be 3, but the description adds real meaning: object_path accepts a full hierarchy path or unique trailing segments (with a concrete example), and delete_unused_resources is characterized as destructive and off by default. instance_id and project_path are left entirely to the schema, which is acceptable given full 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 opening clause gives a specific verb and resource ('删除一个场景对象(含子对象,可撤销)') and immediately extends it to the orphan-resource discovery behavior, which is the tool's real differentiator. It names the siblings it is not (delete_render_group, edit_by_dsl, resource_delete_unused), so an agent can distinguish it 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?
Explicit routing is provided for every adjacent case: render groups go to the official delete_render_group, object-only deletion can use edit_by_dsl, and deferred resource cleanup uses resource_delete_unused. The default-vs-opt-in behavior of delete_unused_resources is also stated, so the agent knows when to set it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_framesA
按时间连续截取预览画面,分辨率是预览本身的(720×1280,官方截图是缩小后的 320×569),取自预览的渲染结果,窗口在后台或最小化时也能截(截图期间临时恢复正常帧率):默认先重置预览、等到重载后的画面出来,再每隔 interval_ms 截一张,共 count 张(一次最多 24 张),用来看动态效果、摇头时的侧脸等。videos 可依次换几个预览视频各截一组(名称取自 list_preview_videos,如 preview_single_shake_head||女),全部截完切回原视频;切换会让工程变成「已修改」,之后需要 save_project。crop 按画面比例(0–1)裁出局部,如脸部。每帧都存成文件并随结果返回,files 里是路径,可直接贴给用户看;默认存在临时目录、24 小时后删除,save_to(目录的绝对路径)则存到那里长期保留。每帧注明实际截取时刻(相对重置完成的毫秒数)。
| Name | Required | Description | Default |
|---|---|---|---|
| crop | No | 裁剪区域,按画面宽高的比例,左上角为 (0, 0)。 | |
| count | No | 每个视频截几张,默认 4。 | |
| reset | No | 每组截图前先重置预览,默认 true。 | |
| videos | No | 依次使用的预览视频名称(list_preview_videos 返回的 video_name);不给就用当前视频。 | |
| save_to | No | 另存到这个目录(绝对路径,不存在会创建),长期保留。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| interval_ms | No | 相邻两张的间隔(毫秒),默认 700。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 | |
| tracking_type | No | videos 所属的 tracking_type,如 face、body、hand,默认 face。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does so well: it discloses that capture works with the window backgrounded or minimized (temporarily restoring normal frame rate), that it resets the preview and waits for the reloaded frame by default, that switching videos has a side effect (project becomes modified), and that frames land in a temp directory and are deleted after 24 hours unless save_to is given. The only blemish is the stated cap of 24 frames per run, which conflicts with the schema's count maximum of 12 and videos maxItems of 4.
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?
Nearly every clause carries real information — resolution, background capture, reset behavior, side effects, retention, timestamps — with little filler. The weakness is structural: it is one long run-on paragraph with stacked parentheticals rather than being front-loaded into capture behavior, side effects, and output in that order.
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 nine-parameter tool with no annotations and no output schema, the description covers the mechanics, side effects, and file retention an agent needs to call it safely. Return-value detail is only loosely sketched (paths in files, per-frame timestamps), which is acceptable given there is no output schema but leaves the exact response shape partly implicit.
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 would be 3; the description goes further by explaining that crop is ratio-based and typically used to isolate a face, that save_to is the long-term alternative to the 24-hour temp directory, that videos are used one after another and the original is restored at the end, and that each frame carries a timestamp relative to reset completion. It does not mention instance_id/project_path at all, leaving the target-selection semantics entirely to 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 a specific verb+resource: consecutively capture preview frames at a fixed interval from the preview render output, with the resolution explicitly pinned (720×1280 vs. the official 320×569). It also names the concrete purpose (seeing motion, the side of the face during a head shake), which separates it from static-image siblings like image_view or mobile_preview.
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 clear when-to-use context (viewing dynamic effects, side profile while shaking the head) and points at list_preview_videos as the source of the videos names, including a format example. It also warns that switching videos marks the project as modified and requires save_project afterwards. It stops short of stating when NOT to use it, e.g. why you would pick image_view or mobile_preview instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_closeA
关闭一个工程窗口(等同工具栏「回到首页」)。有未保存改动时默认拒绝,先 save_project;确实要丢弃改动才传 discard_changes=true。
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 | |
| discard_changes | No | 丢弃未保存改动直接关闭。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full behavioral burden and does disclose the key trait: a default refusal on unsaved changes, plus the mutation escape hatch and the safe alternative (save_project). It does not state what the tool returns, whether other open windows are affected, or what the state is after a forced discard. Strong for a mutation tool, but not fully complete.
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, zero filler, with the default-safe behavior and the escape hatch front-loaded. Nothing repeats the schema and nothing is left dangling.
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 3-parameter, zero-required mutation tool with no annotations or output schema, the description covers the decisions that matter: prerequisite save, default refusal, forced-discard semantics. The missing piece is target-resolution behavior when both instance_id and project_path are omitted (single-window case), which affects whether an agent can call it blind.
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 3 is the baseline. The description earns above baseline by explaining the behavioral consequence of the discard_changes flag (default rejection vs. forced close) rather than just naming it. It does not clarify the instance_id / project_path mutual exclusivity or the 'both omittable when a single window is open' rule, which the schema itself carries.
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 ('关闭一个工程窗口' = close a project window) and anchors it to a concrete UI equivalent ('等同工具栏「回到首页」'), which removes ambiguity about what closing means here. Against the sibling set (project_open, project_new, works_cleanup), the scope is unmistakable.
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?
Names the prerequisite alternative explicitly ('有未保存改动时默认拒绝,先 save_project') and gives the exact condition for the destructive path ('确实要丢弃改动才传 discard_changes=true'). The 'only if you really mean it' framing of the discard path is real guidance, not a restatement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_newA
新建一个空白像塑工程并首次保存到 path(目录须不存在或为空)。需要已有任意一个工程窗口开着。返回新窗口的 pid 和官方 instance_id。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 新工程要保存到的文件夹绝对路径。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden. It does useful work by stating the directory-emptiness constraint, the open-window prerequisite, and the return values (pid and instance_id), implying a new window is spawned. It is silent on failure behavior when prerequisites are unmet and on any side effects of a partial save.
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 tight sentences with no waste: action first, then preconditions, then return value. Every clause contributes information an agent needs before calling the 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?
For a single-parameter creation tool with no output schema, the description covers purpose, prerequisites, and return values, which is enough to attempt a correct call. It could go further on error conditions and whether the created window remains open, but nothing essential 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%, so the baseline is 3, but the description adds a real constraint not in the schema: the directory must not already exist or must be empty. That materially affects how an agent must choose the path 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 states a specific verb and resource: create a new blank Xiangsu project and save it to path for the first time. 'New blank project' implicitly distinguishes it from the sibling project_open, though it never names that alternative explicitly.
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?
Clear preconditions are given: the target directory must not exist or must be empty, and an existing project window must already be open. It stops short of naming alternatives (e.g., project_open for existing projects) or explicitly stating 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.
project_openA
在新窗口打开一个已有的像塑工程(已经开着就直接返回)。返回窗口 pid 和官方 instance_id。旧版本工程可能弹出升级对话框,需要在编辑器里点确认。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 工程文件夹的绝对路径(含 effect.dyehpj)。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load, and it discloses two non-obvious behaviors: the idempotent short-circuit when the project is already open, and that old-version projects can trigger an upgrade dialog which requires manual confirmation in the editor. It does not cover failure modes (invalid path, missing effect.dyehpj), permission needs, or whether the call blocks, so it is not fully transparent.
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 short sentences, the core action first, then the return values, then the one operational caveat. Every sentence adds information an agent needs, with 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?
For a simple single-parameter tool with no output schema, the description usefully names the return values (pid, instance_id) and warns about the upgrade dialog, so an agent knows what to expect after calling it. Only error behavior and the difference from works_open are left unaddressed.
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 documents the single path parameter at 100% coverage, including that it is absolute and must include effect.dyehpj, so the description need not repeat it. The description adds no extra meaning about path format or path aliases, 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 says exactly what it does: opens an existing project (已有工程) in a new window, and it also covers the already-open case. 'Existing' implicitly contrasts with the sibling project_new, but it never names brothers like project_new, project_close, or works_open, so an agent must infer which one to choose.
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?
Usage is only implied: it applies to an existing project folder, and if the window is already open it returns directly, which is useful idempotency context. There is no explicit 'use project_new instead when...' or warning about when not to call it, so the guidance is adequate but not directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_hotspotsA
热点榜(按热度排序的抖音热点,每小时更新),按 offset / count 分页:名次、topic_id、标题、说明、热度、相关灵感数、封面 cover_ref。传 topic_id 时改为返回该热点下的灵感(inspiration_id、标题、标签、说明、封面 cover_ref,交给 image_view 看)。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | 每页数量,默认 20。 | |
| offset | No | 分页起点,取上一页的 next_offset;默认 0。 | |
| topic_id | No | 只看这个热点下的灵感(rank_hotspots 返回的 topic_id)。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
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 meaningful work: it discloses the hourly refresh cadence, that pagination follows next_offset, and — most valuably — that *_ref/*_refs media handles are short-lived and only valid for the lifetime of this MCP service run. It stops short of stating read-only semantics or error/empty-result behavior, but the reference-lifetime disclosure is exactly the kind of non-obvious trait agents need.
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?
Purpose and pagination are front-loaded, which is good, but the image_view handoff is stated twice (once for cover_ref in the hotspot paragraph, again for *_ref/*_refs in the closing paragraph), so the second paragraph partly repeats the first. The field enumerations are dense but reasonably earned since there is no output schema.
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 five-parameter tool with no output schema, the description compensates by enumerating the returned fields for both the hotspot mode and the inspiration mode, and by explaining the media reference scheme. Only the optional instance_id/project_path scoping story is left entirely to the schema, which is acceptable here.
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 offset, count, topic_id, instance_id, and project_path; the description mostly restates the paging and the topic_id mode switch. It adds only the return-field lists per mode, not new meaning for the parameters themselves, so 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 names a specific resource (抖音热点榜, sorted by 热度, refreshed hourly) with a clear verb-like action of ranking/listing, and it explicitly describes a second mode: passing topic_id returns the inspirations under that hotspot. This distinguishes it well from generic siblings like rank_list or inspiration_list, though it never explicitly names which sibling to prefer.
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 one solid routing rule: pass topic_id to switch from the hotspot list to that hotspot's inspirations, and hand media refs to image_view. But there is no guidance on when to use this instead of rank_list, rank_subjects, rank_innovation, or inspiration_list, and no prerequisites for instance_id/project_path are stated in prose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_innovationA
创新计划的榜单。kind=template / effect 为官方精选(像塑移动版发现页的精选列表,移动版展示的是模板):特效名、effect_id、标签、投稿量、总收益、入选日期、封面;kind=creators 为创作者月榜:名次、创作者 uid 和昵称、上榜素材数、跟拍量、预计奖金(元)。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | template 精选模板(默认),effect 精选特效,creators 创作者月榜。 | |
| count | No | 每页数量,默认 20;精选由服务端过滤,实际条数可能略少。 | |
| offset | No | 翻页偏移,取上一页的 next_offset。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
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 substantial work: it discloses the per-kind return field sets (standing in for a missing output schema) and an important lifecycle constraint — short media references are only valid for the current run of the MCP service. It does not explicitly state the tool is a pure read with no side effects, but nothing suggests otherwise.
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?
Front-loaded with the tool's identity, then organized by kind, then by output-reference handling — a logical progression with little filler. The clause describing the mobile discovery page ('像塑移动版发现页的精选列表,移动版展示的是模板') is the only mildly redundant passage, since the schema already explains the template/effect distinction.
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 five-parameter read tool with no output schema, the description supplies the return shapes per kind and the reference-resolution rule, which is what an agent most needs. It omits how pagination continues (the schema's next_offset does cover this) and gives no hint of result ordering or typical volume, minor gaps rather than blocking ones.
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, but the description adds genuine meaning by mapping each kind value to the concrete records returned (official selections vs. creator monthly ranking), which is exactly the information an agent needs to pick kind. instance_id/project_path are left entirely to the schema, which is acceptable given its 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 concrete resource ('创新计划的榜单') and then enumerates exactly what each kind returns (effect name, effect_id, tags, submission count, revenue, selected date, cover vs. rank, uid, nickname, work count, remix count, bonus). That is far more specific than the bare name, though it never names its ranking siblings (rank_list, rank_hotspots, rank_subjects) or states how it differs from them.
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 one explicit routing instruction is downstream: '*_ref / *_refs ... 交给 image_view' with a clear statement of what image_view does for each media type. There is no guidance on when to choose this tool over the sibling ranking tools, and no prerequisite or exclusion stated; usage is implied by the meaning of the kind values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_listA
分页读取一个排行榜(与像塑移动版排行榜页同一个接口):名次、特效名、effect_id、等级、投稿量(峰值 / 累计)、跟拍量、男女比例、年轻喜爱度、热玩分、总收益等。可按日期、分类(每级一个,如只看「人像美化 › 美妆」)和筛选项过滤,每页都带上该榜当天的分类 categories(level 1 大类如人像美化、游戏玩法、人设扮演、AI 玩法,level 2 细类如基础头饰、测一测、不露脸壁纸;每个榜不同)。按主题的专题榜(如「热爆美妆特效榜」)见 rank_subjects。要看某个特效的工程,把 effect_id 和 name 交给 works_by_effect,查它在不在首页。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | 榜单日期 YYYY-MM-DD,默认最新一期。 | |
| count | No | 每页数量,默认 20(最大 20)。 | |
| tools | No | 来自工具。 | |
| cursor | No | 翻页游标,取上一页的 next_cursor。 | |
| levels | No | 特效等级,如 ["S","A+"]。 | |
| panels | No | 面板,如 ["头饰","美妆"]。 | |
| rank_type | No | 榜单:1 年轻喜爱榜、2 特效每日投稿榜、3 男生喜爱榜、4 女生喜爱榜、7 热玩互动榜、9 模板每日投稿榜、10 特效跟拍榜;默认 1。 | |
| categories | No | 分类名,取上一页返回的 categories,每级最多一个,可叠加,如 ["人像美化","美妆"](大类 + 细类)。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| preferences | No | 偏好。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 | |
| young_like_scores | No | 年轻喜爱度 1–10。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does substantial work: it discloses that results are paginated with a cursor, that each page carries that day's category tree, and — importantly — that image/video/audio come back as short refs (img:12, video:3) that are only valid for the lifetime of the current MCP run and must be routed through image_view. It stops short of stating permission requirements or that no state is mutated, though '读取' implies a read.
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?
Purpose and content list are front-loaded, then filtering, then cross-tool routing, then return-value semantics — a logical order with no filler sentences. It is dense and long, but nearly every clause carries information an agent needs; the only soft spot is the slightly sprawling category parenthetical.
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 12-parameter tool with no annotations and no output schema, the description compensates well by describing the returned fields and the ref-based media handling. Gaps remain around pagination termination and what the response envelope looks like (next_cursor is only named inside the schema), but nothing critical for calling it correctly 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 description coverage is 100%, so date, count, cursor, rank_type, categories and the rest are already documented in the schema, including the 'take next_cursor' and 'take categories from the previous page' rules. The description reinforces the category hierarchy idea (level 1 大类 vs level 2 细类) but adds no new syntax or constraints beyond what the schema states, so 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 names a specific verb and resource — paginated reading of a 排行榜 — and enumerates the returned fields (名次、effect_id、等级、投稿量、跟拍量、热玩分…). It explicitly separates itself from rank_subjects for topic-based boards and from works_by_effect for drilling into one effect, so an agent can distinguish it from the many rank_* siblings.
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 clear routing for two cases: subject/topic boards go to rank_subjects, and inspecting a specific effect's project goes to works_by_effect. It does not, however, say when to pick this over rank_hotspots or rank_innovation, so the alternatives guidance is partial rather than exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_subjectsA
像塑移动版「专题合集」里按主题的榜单,最新的在前:kind=effect 为特效专题榜(近 200 期,如「测一测玩法特效榜 - 11月」「热爆美妆特效榜」「熊出没IP特效榜」「主题创新优胜特效榜」、各期征集活动优质特效),kind=template 为模板专题榜(如「歌词玩法模板榜」「AI配文创意模板榜」「氛围转场模板榜」)。每个榜带前几个特效、浏览量。keyword 按榜名搜索全部期;传 subject_id 时返回该榜的全部特效(最多 20 个)。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | effect 特效专题榜(默认),template 模板专题榜。 | |
| count | No | 每页数量,默认 20(最大 20)。 | |
| cursor | No | 翻页游标,取上一页的 next_cursor。 | |
| keyword | No | 按榜名搜索,如「美妆」「测一测」「IP」;给定时返回全部匹配的期,不分页。 | |
| subject_id | No | 只看这个榜(rank_subjects 返回的 subject_id)。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
由于没有 annotations,描述承担了全部说明责任。它正确披露了返回内容(前几个特效、浏览量)、keyword 与分页交互,以及重要的引用机制——*_ref/*_refs 短引用仅在本次 MCP 运行期间有效,并交给 image_view。但它从未说明这是安全的只读操作、是否可访问所有工程、或是否需要授权。
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?
把 kind 用法和返回引用说明前置,总体结构良好;每一段都提供可用信息,没有空话。第一句很长,示例挤在一起,但去掉示例会降低工具准确调用的能力。
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?
面向一个 7 参数的只读工具——没有 annotations、没有 output schema——描述涵盖了榜单内容、分页行为、keyword 覆盖,以及按会话有效的图片/视频/音频引用处理。它没有列出完整的返回字段或明确说明 next_cursor,尽管 schema 已说明 cursor 的用法。
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 为 100%,因此基线是 3;描述在此基础上增加了值,因为它说明了每个 kind 值实际包含什么(示例榜单名、近 200 期、征集活动优质特效),以及 subject_id 是从本工具自身返回中获取的链式输入——这些是 schema 未说明的信息。它没有新增 cursor 或 instance_id 与 project_path 相互替代的语义。
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?
描述清楚说明了具体资源(像塑移动版「专题合集」榜单),并用具体的榜单名示例区分 kind=effect(特效专题榜)与 kind=template(模板专题榜)。它允许 agent 在无需打开 schema 的情况下选择正确的 kind,但没有说明与兄弟工具 rank_hotspots、rank_list 或 rank_innovation 的区别。
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?
描述给出了清晰的使用上下文:keyword 按榜名搜索全部期且不分页,subject_id 返回该榜全部特效(最多 20 个),这等于说明了先列出、再用 subject_id 下钻的流程。缺少的行为是显式排除——它没有说明何时应改用 rank_hotspots 或 rank_innovation。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resource_delete_unusedA
删除 object_remove 报告的 unused_paths(工程内相对路径的资源或素材包文件夹)。删除前再次核对:当前场景仍在引用的一律拒绝。资源删除不可撤销。
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | object_remove 返回的 unused_paths。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose the two most important traits: deletion is irreversible, and a pre-delete reference check will refuse still-used paths. It does not cover permission requirements, partial-failure behavior when only some paths are rejected, or what the response reports back.
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 short sentences, front-loaded with the action, then the source constraint, then the safety guard and irreversibility warning. Every sentence contributes distinct information with no 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?
For a destructive, three-parameter tool with no annotations and no output schema, the description covers the source of input, the validation guard, and irreversibility. It is slightly thin on what happens when some paths are refused and how results are reported, which matters for a batch destructive operation.
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, but the description adds real meaning: the paths must be the unused_paths values returned by object_remove and represent project-relative resource files or asset pack folders. It adds nothing about instance_id/project_path beyond what their schema descriptions already state.
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+resource: delete the unused_paths reported by object_remove, and clarifies those paths are project-relative resources or asset pack folders. This clearly separates it from the sibling object_remove, which only reports them rather than deleting.
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?
States the precondition that paths must originate from object_remove's unused_paths, and a hard exclusion rule: anything still referenced by the current scene is rejected. It does not name an alternative tool for cleanup scenarios (e.g. works_cleanup), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scene_treeA
把场景结构输出成紧凑的缩进文本:渲染组,以及每个对象的 guid、名称、是否隐藏、组件类型。比官方 get_scene 的 JSON 好读,适合先摸清结构再用 inspect_many 查参数;要渲染组和对象的完整 JSON 用 get_scene。subtree 只看某个对象(guid 或名称),depth 控制展开层数(默认 6);没展开的子对象会注明数量。传 project_dir(工程目录,如 works_download 下载的作品)时不需要打开窗口,直接读 Assets/main.scene 和 main.scene.extra,对象写成 #序号,组件类型和窗口里显示的一致(编辑器数据缺失时退回场景文件里的名称);没有渲染组这一层,渲染组本身作为根对象列出。save_to 是目录的绝对路径,结果另存为其中的 scene_tree.txt,长期保留。
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | 展开层数,默认 6。 | |
| save_to | No | 另存到这个目录(绝对路径,不存在会创建),长期保留。 | |
| subtree | No | 只输出这个对象及其子对象(guid 或名称;project_dir 时用 #序号 或名称)。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_dir | No | 不开窗口、直接读这个工程目录的场景文件;给了它就不看 project_path / instance_id。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: project_dir mode works without an open window by reading Assets/main.scene and main.scene.extra, objects are renumbered as #index, the render-group layer disappears and groups become root objects, component names fall back to scene-file names when editor data is missing, and unexpanded children are annotated with counts. save_to is disclosed as a persistent side effect that creates the directory.
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 most important comparison (versus get_scene) is front-loaded and the parameter notes follow in the order an agent would consult them. It is dense but nearly every clause carries new information; only the project_dir passage is long enough to be slightly hard to parse on first read.
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 6-parameter tool with no annotations and no output schema, the description still tells the agent what the output looks like (indented text per object), what a truncated tree looks like, and what session prerequisites each mode needs. Nothing an agent needs in order to call it correctly 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%, so the baseline is 3; the description earns extra credit by adding meaning the schema lacks, notably that save_to writes a file named scene_tree.txt inside the given directory and how subtree accepts #index or name in project_dir mode. It does not, however, explain the interplay or precedence among project_path and instance_id beyond what the schema already says.
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 states a specific verb and output form (indented compact text) and enumerates exactly what each line contains: render group, guid, name, hidden flag, component types. It explicitly distinguishes itself from get_scene (full JSON) and inspect_many (parameter lookup), so an agent can pick the right tool without opening schemas.
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 an explicit recommended workflow (survey structure first, then inspect_many for parameters), names the alternative for full JSON (get_scene), and routes single-object exploration to the subtree parameter. Both the when-to-use and the when-not-to-use are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_prepareA
填好提交窗口,停在最后一步等用户点「提交审核」:先在本地检查提交流程会拒收的情况(包体上限、是否原样套用模板、登录、图标),全部通过后先关掉还开着的提交窗口(之前调用留下的,closed_previous 是关掉的个数,关不掉报 WINDOW_NOT_CLOSED),再走和工具栏「提交特效」按钮相同的入口打开一个新的,然后逐页填写:「特效基础信息」页填名称、触发提示、默认摄像头方向(图标来自工程,可先用 icon_image 设好),「特效发布设置」页选灵感和任务,再翻到「提交审核」页,等页面上的检测(包体积、性能、相似度等,一般一分钟内)跑完,返回页面摘要、各检测结果、是否已同意创作者协议、「提交审核」按钮是否可点,以及 next(用户还要做什么)。本工具不会勾选协议,也不会点「提交审核」,发布只在用户点了之后发生。每一项都从页面读回核对:页面截断、报错、没选上、或翻页被拦住时直接报错(SUBMIT_*,原样带上页面提示),窗口保持打开。页面上本工具没填的其它设置(如活动、创新声明)列在 other_sections 里,保持页面原样。本地检查未通过时不打开窗口,返回 issues。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | 特效名称(必填):最多 10 个字,两个英文字母或数字算一个字,不能有表情和特殊符号;页面截断或报错时整次调用失败。 | |
| task | No | 「任务绑定」要选的任务标题(已领取的任务,同 tasks_list 的 title);传「暂不参与」解绑;省略时保留页面带出的(task_bind 绑定过的会自动带出)。 | |
| camera | No | 默认摄像头方向:front 前置、back 后置;省略时保留页面的默认(一般是前置)。 | |
| icon_image | No | 先用这张图设图标(同 icon_set 的默认:女性、男性两个位,并上传),再打开提交窗口;省略时用工程现有的图标。 | |
| task_track | No | 任务下的赛道名称,任务分赛道时必填,否则报 SUBMIT_TASK_NEEDS_TRACK 并列出赛道。 | |
| inspiration | No | 「灵感绑定」要选的灵感或热点,取它在列表里显示的名称(当前账号收藏的灵感或热点,名称同 inspiration_list 的标题);传「暂不绑定」解绑;省略时保留页面带出的(inspiration_bind 绑定过的会自动带出)。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 | |
| trigger_hint | No | 特效触发提示,开拍时显示,如「张嘴试试」:最多 10 个字;省略时保留页面带出的内容,传空串清空。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so: it discloses that a leftover submission window may be closed (closed_previous count, WINDOW_NOT_CLOSED failure), that the window stays open on mid-flow errors, that page prompts are surfaced verbatim, that page detection takes about a minute, and that publishing only occurs after a user click. Unfilled page settings are preserved and reported in other_sections, so the agent knows the tool does not silently overwrite the form.
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?
Purpose is front-loaded in the first clause, and nearly every sentence conveys operational detail (check order, page-by-page fill, error behavior). It is nonetheless a single dense block of roughly 400 characters, and the return-value enumeration at the end could be split or tightened for scannability.
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 9-parameter mutation tool with no annotations and no output schema, the description supplies the missing return contract (page summary, per-check results, agreement state, submit-button clickability, next step, other_sections, issues) plus failure semantics. Nothing an agent needs to invoke it safely appears to be absent.
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 explains name length rules, camera enum, task_track requirements, and the instance_id/project_path mutual exclusion. The description adds only ordering context — e.g. icon_image is applied before the window opens — rather than new meaning about the parameters themselves. 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 opens with a precise verb+resource+end-state: fill the submission window and stop before the user clicks 「提交审核」. It explicitly delineates what the tool will NOT do (no agreement checkbox, no submit click) and contrasts its own entry path with the toolbar 「提交特效」 button, so an agent can distinguish it from adjacent tools like effect_check or my_effect_reviews.
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 specifies the precondition sequence (local checks must pass first, otherwise no window opens and issues are returned) and names concrete error exits (SUBMIT_*, SUBMIT_TASK_NEEDS_TRACK). It also implicitly routes icon work to icon_image and mentions the task/inspiration binding tools. What is missing is an explicit statement of when a caller should use this versus doing a manual staged submission through icon_set / task_bind / inspiration_bind separately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_bindA
把工程绑定到一个已领取的任务,和从任务详情页点「去创作」打开的工程一样,提交时会带上该任务。编辑器只在打开工程时写入任务信息,所以本工具会先关闭该工程的窗口(有未保存改动时拒绝,先 save_project),再带着任务信息重新打开,返回新的 pid 和 instance_id。task_id 须来自本会话的 tasks_list。只在提交时选任务的话,直接给 submit_prepare 传 task(已领取任务的标题),不用重开窗口。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 工程文件夹的绝对路径。 | |
| task_id | Yes | tasks_list 返回的 task_id(须 bindable=true)。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must fully disclose the side effects, and it does: the project window is closed (refused if there are unsaved edits), then reopened with the task bound, and a new pid and instance_id are returned. It discloses the mutation, the failure mode, and the return values an agent needs for follow-on calls.
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 its purpose, then moves through mechanism, precondition, and alternative in a logical order with no filler sentences. It is dense and multi-clause, which makes it slower to parse, but every sentence contributes required 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?
For a two-parameter mutation with no annotations and no output schema, the description covers everything an agent needs: purpose, required provenance of task_id, the save_project precondition, the returned pid and instance_id, and the submit_prepare alternative. Nothing material 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%, so both parameters are already documented, including the bindable=true constraint on task_id. The description still adds a useful constraint beyond the schema by requiring that task_id come from tasks_list in the current session, though it adds nothing about the path parameter that the schema does not already say.
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 (bind a project to an already-claimed task) and explains the mechanism precisely: the editor only writes task info when a project is opened, so the tool closes and reopens the window. It also distinguishes itself from the closer sibling submit_prepare by explaining the different route to the same outcome.
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 prerequisites (task_id must come from tasks_list in this session; the project must have no unsaved changes, otherwise call save_project first) and explicit when-not-to-use guidance: if you only want to pick a task at submission time, pass the claimed task title to submit_prepare instead of reopening the window. This is the strongest kind of routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_detailA
一个任务的详情。征集任务返回状态、奖励时间、下线时间、我提交到这个任务的特效 my_effects(名称、effect_id、审核状态、拍摄数、播放数、投稿峰值、获奖金额、是否符合主题、赛道)、完成状态、是否分档任务,和整理过的任务说明 content:每个内容块(参与要求、奖项详情、近期热门、任务说明等)有名称 name、条目 items 和链接 links;条目有标题 title、正文 text(页面里的链接标记已换成文字,链接放进 links)、参考图 image_refs 和参考视频 video_refs,奖项条目另有页面原样给的金额 money、发放方式 money_mode 和名额 people(unlimited 为不限);空地址和 blob: 地址任务页里也显示不出来,只在 unusable_media 里计数;读不懂的字段原样放进 unread。要原始返回时传 save_to。成长任务返回奖励、参考工程、相关灵感(封面 cover_ref)和教程。task_id 须来自本会话的 tasks_list;活动没有详情。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| save_to | No | 把接口的原始返回另存到这个目录(绝对路径),文件名 task_detail-<task_id>.json,长期保留。 | |
| task_id | Yes | tasks_list 返回的 task_id。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden and does substantial work: it discloses that embedded media comes back as short refs (img:12, video:3) that are only valid for the lifetime of this MCP run, that unusable/blob URLs are only counted in unusable_media, and that unrecognized fields land in unread. It never states that the call is read-only or what happens on an invalid/foreign task_id, which keeps it below the top 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 purpose is front-loaded, but the body is a single very long run-on sentence enumerating return fields, followed by two more dense paragraphs; a bulleted field list would be far more scannable. Most of the content earns its place given there is no output schema, but the packaging is heavy and hard to parse at a glance.
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 the return value — and it does so thoroughly for both task variants: field-by-field for 征集任务, a separate summary for 成长任务, plus edge cases (unusable media, unread fields, money_mode/people semantics). Nothing an agent needs in order to call this correctly or interpret the result 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% and every parameter is already documented in the schema, so the baseline of 3 applies. The description adds the session-scoped provenance of task_id and the purpose of save_to, but it says nothing about instance_id/project_path (the either/or pair) and nothing about the save_to file naming or retention beyond what the schema already states.
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 clear resource (a single task's detail) whose content is then enumerated, so an agent knows exactly what it retrieves versus tasks_list (which supplies the ids). The verb is implied rather than stated, but the resource and scope are unambiguous and the differentiation from the sibling tasks_list/task_receive is evident.
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 an explicit prerequisite ('task_id 须来自本会话的 tasks_list') and an explicit exclusion ('活动没有详情'), plus a routing note that growth tasks return a different shape (rewards, reference projects, inspiration, tutorials). It stops short of naming which sibling to use instead when the target is an activity, so it is not a full when/when-not/alternative statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_receiveA
领取一个征集任务(写入当前登录账号,与活动中心的「领取」按钮相同,领取后不能撤销)。只有状态为 WAIT_RECEIVE 的任务能领,其它状态直接拒绝。返回 designer_task_id 和新状态;领取后重新 tasks_list,该任务即可 task_bind。
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | tasks_list(kind=effect)返回的任务 task_id。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
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 does well: it discloses that the write is bound to the currently logged-in account, that the action is irreversible ('领取后不能撤销'), and that invalid statuses are rejected rather than partially applied. It does not cover concurrency or error payloads, nor whether instance_id/project_path affect the outcome.
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 dense sentences, each earning its place: what it does, the precondition and irreversibility, then the return value and next step. The irreversible-write warning is front-loaded rather than buried.
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?
Covers the operation, its irreversibility, the gating status, return fields and the required follow-up call — everything an agent needs to sequence it correctly. The only gap is that the role of instance_id/project_path is left entirely to the schema, though that schema is fully described.
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 task_id, instance_id and project_path are already documented, including the tasks_list source and the instance_id/project_path mutual exclusivity. The description adds no parameter-level detail beyond what the schema 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?
States a specific verb and resource ('领取一个征集任务' / claim a solicitation task) and immediately scopes it against the UI equivalent ('与活动中心的「领取」按钮相同'). It also distinguishes itself from the sibling task_bind by describing the sequence in which binding becomes possible only after receiving.
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 a hard precondition — only tasks in WAIT_RECEIVE status can be claimed and others are rejected outright — and names the follow-up step (re-run tasks_list, then task_bind). It does not explicitly say which sibling to use if the task is in another status, so an agent must infer the alternative, keeping this below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_listA
按 offset / count 分页列出首页活动中心的任务。kind=effect(默认)为活动和特效征集任务:标题、状态(如 WAIT_RECEIVE 待领取 / WAIT_SUBMIT 待提交)、是否已领取、状态说明(如「查看官方指导,帮您完成任务」)、剩余天数、收益、上下线时间、可完成次数;kind=growth 为活动中心里的成长任务:奖励金额、参考工程(特效师等级、每级目标和进度在 growth_route)。拿到 task_id 后用 task_detail 看详情、task_receive 领取、task_bind 绑定到工程(bindable=true 的才能绑)。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | effect 活动与征集任务(默认),growth 成长任务。 | |
| count | No | 每页数量,默认 20。 | |
| offset | No | 分页起点,取上一页的 next_offset;默认 0。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does substantial work: it enumerates the returned fields per kind, explains that media come back as short references (*_ref / *_refs like img:12) that are only valid for the lifetime of this MCP server run, and notes that image_view resolves them. It never explicitly states that this is a side-effect-free read operation, nor does it mention result totals or what happens at the end of the list — minor but real gaps for a tool with 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?
The structure is front-loaded and purposeful: purpose and pagination first, then a per-kind breakdown, then the follow-up tool chain, then reference-handling semantics. All four paragraphs earn their place, though the field enumeration per kind is dense enough that an agent must parse a long run-on clause rather than scan a list.
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 describe return values — and it does, per kind, plus the ref-resolution rule and the follow-up tool chain. For a five-parameter, two-variant list tool this is nearly complete; only end-of-list/total-count behavior and the instance_id vs project_path resolution are left unaddressed in prose.
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 every parameter is already documented, and most description text (offset default 0, next_offset usage, count default 20) merely restates that. The one genuine addition is expanding what kind=effect versus kind=growth actually returns, which helps the agent pick a value, but instance_id/project_path — including the fallback when only one project window is open — are left entirely to the schema. This is the correct baseline-3 case where the schema does the heavy lifting.
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 concrete verb+resource+scope: paginated listing of activity-center tasks via offset/count. It immediately splits the result set by the `kind` enum, stating what each variant contains (effect: title/status/received flag/remaining days/revenue/schedule/claim counts; growth: reward amount and reference project), so an agent can distinguish it from task_detail, task_receive, task_bind and growth_route without opening any 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?
It gives a clear downstream routing chain — obtain task_id here, then use task_detail for details, task_receive to claim, task_bind to bind (only when bindable=true) — and states that kind=effect is the default while kind=growth targets growth tasks. What it does not do is say when to skip this tool entirely (e.g., if you already have a task_id, or when growth_route already supplies level/progress), so exclusions are 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.
works_by_effectA
按特效 ID 查排行榜等处给出的特效(rank_list / rank_subjects / rank_innovation 的 effect_id)在首页有没有工程,与首页搜索框「特效ID」搜索同一个接口。逐个返回 status:found 首页有这个特效的工程;same_name 首页没有它、只有同名作品(effect_id 不同,可能是别人的同名作品,不能当成同一个特效);not_on_homepage 作者没把工程分享到首页,拿不到工程。found 和 same_name 的作品在 items 里(字段同 works_list),template_id 可直接用于 works_download / works_open。默认在「推荐」里查:按特效 ID 查时「推荐」也能查到只在其它分类出现的作品,在别的分类里按 ID 查反而查不到,所以一般不用给 category_id。每个特效一到两次请求,20 个约 6 秒。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| effects | Yes | 要查的特效,最多 20 个(一页排行榜)。 | |
| category_id | No | works_list 返回的 categories 里的分类 ID;省略时用第一个分类(推荐)。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
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: it enumerates the three per-effect outcomes (found / same_name / not_on_homepage) with precise meanings, and explicitly warns that same_name is a different effect_id and must not be treated as the same effect. It also discloses cost (one to two requests per effect, about 6 seconds for 20), which fields are usable downstream (template_id), and the critical lifetime constraint that image/video/audio refs are only valid for the duration of this MCP run.
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 purpose and the outcome enumeration are front-loaded, and the operational notes (cost, ref lifetime) are pushed to the end where an agent can skim them. Sentences are dense rather than padded, though the closing paragraph about *_ref handles and image_view is a slight tangent relative to the core lookup and could have been one clause shorter.
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 returns, and it does: status semantics per effect, that found and same_name works appear in items with works_list-compatible fields, that template_id feeds works_download / works_open, and how media refs are encoded and consumed via image_view. For a four-parameter, batched, no-output-schema tool, nothing an agent needs to call it correctly 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%, so the baseline is 3, but the description adds real meaning the schema does not: it justifies the category_id default (推荐 is the only category that reliably resolves ID lookups across categories) and explains the batch bound in domain terms (max 20 = one rank page) plus what the optional name field enables (same-name fallback). It adds context beyond the field-level descriptions rather than repeating 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?
The description opens with a specific verb and resource: look up whether the homepage has a project (工程) for a given effect ID, and states it is the same backend as the homepage search box's 特效ID search. It also names the upstream sources of the ID (rank_list / rank_subjects / rank_innovation effect_id) and the downstream consumers (works_download / works_open via template_id), so an agent can position it against siblings without opening other schemas.
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 an explicit default (query in 推荐, so category_id is usually unnecessary) and explains why: querying by ID in 推荐 also finds works that only appear in other categories, whereas querying by ID in another category can miss them. That is actionable when-to guidance plus a concrete exclusion. It stops short of naming a specific sibling as an alternative (e.g. works_search or effect_check), so it is not a full when/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_cleanupA
删除 works_download / works_open 下载过的作品工程(像塑临时目录里的和 dest 副本)。省略 paths 时删除全部;编辑器窗口正开着的会保留并在 kept_open 里列出,关窗后再调用即可。只删登记过的下载,其它路径一律拒绝。
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | 只删这些下载(works_download / works_open 返回的 project_path);省略时删除全部。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the whole burden and does so well: it discloses that this is a destructive file removal, that only registered download paths are accepted and all others are refused, and that items open in the editor are skipped and reported in kept_open. The main omission is that irreversibility (no trash/undo) is only implied by the verb, not stated.
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 tight sentences, front-loaded with the scope of deletion, then the omit-paths default, then the open-window caveat and retry instruction. Dense but every sentence carries operational content; only the parenthetical directory detail borders on 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?
For a destructive, single-parameter tool with no annotations and no output schema, the definition covers scope, refusal of unregistered paths, the bulk-delete default, and the kept_open return field an agent must inspect. What's missing is only the reversibility/permission story, which is a modest gap given how much else is 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% and the single paths parameter is fully documented in the schema, including its provenance (works_download/works_open project_path) and the omit-means-all behavior. The description restates that same semantics rather than adding new meaning, 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?
States a specific verb (删除/delete) and a precisely bounded resource: project works downloaded via works_download/works_open, including the app temp directory and dest copies. It names the sibling tools that produce those artifacts and scopes deletion to registered downloads only, which lets an agent separate it from generic siblings like resource_delete_unused or project_close 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?
Gives concrete operating guidance: omit paths to delete everything, and if an editor window is open the item is preserved and returned in kept_open, so re-call after closing the window. That covers the main decision points and the retry path, though it doesn't explicitly contrast with resource_delete_unused or state what to do for paths outside the registry beyond 'rejected'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_downloadA
下载一个首页作品的完整工程并解压(与在首页点开作品同一流程,但不打开窗口),返回工程目录和文件清单(files 列出相对路径和大小,可直接读取 effect.dyehpj、Assets 下的场景、Graph 下的脚本等来学习做法)。dest 给定时把工程放到该目录(须不存在或为空,跳过 Library 缓存),像塑临时目录里的那份随即删除。下载的工程(含 dest)都会登记,expires_at(24 小时)后在下次下载时自动删除;学完请立即调用 works_cleanup。要在编辑器里看效果用 works_open。作品版权归原作者,只用于学习参考,不要复制进自己的工程或仓库。
| Name | Required | Description | Default |
|---|---|---|---|
| dest | No | 工程要放到的文件夹绝对路径(须不存在或为空);省略时留在像塑的临时目录。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| template_id | Yes | works_list / works_search / works_by_effect 返回的 template_id。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does: dest must not exist or be empty, Library cache is skipped, the temp copy is deleted afterwards, downloads are registered and auto-deleted after a 24-hour expires_at on the next download. It also discloses the return payload, a directory plus a files list of relative paths and sizes. That is unusually complete behavior disclosure for a mutating file-producing 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 one dense paragraph, front-loaded with the action and return value, then destination semantics, lifecycle, alternatives, and licensing. Every clause earns its place, though the parenthetical explaining what to read inside the project is slightly verbose.
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 four-parameter tool with no output schema, no annotations, and a file-system side effect, the description covers return shape, cleanup lifecycle, destination preconditions, sibling routing, and licensing constraints. Nothing an agent needs in order to call it correctly 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%, so the baseline is 3, but the description adds meaning the schema does not: the preconditions on dest (must not exist or be empty, Library cache skipped) and the consequence of omitting it (the project stays in the temp directory). That is real added value rather than repetition.
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: download a complete project for a homepage work and unzip it. It immediately names the sibling it is not (works_open) for viewing in the editor, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing: use works_open if you want to see the effect in the editor, and call works_cleanup immediately after you finish learning. It also states the acquisition path (template_id from works_list / works_search / works_by_effect) and the licensing restriction against copying into your own project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_listA
分页列出像塑首页「模板」某个分类下的作品。首页作品是完整的像塑工程(官方工程和用户投稿),可下载到本地阅读、学习其场景和脚本做法;任意一个工程窗口开着即可。每次都带上全部分类 categories(推荐、官方工程、新手必做、游戏、妆容、AI玩法等)。每条作品有 template_id、标题、标签、已发布到抖音的特效 ID 和发布量(effect_id / publish_count,没有则为 null)、使用量、工程包大小、封面 cover_ref 和动图 gif_ref(交给 image_view 看)。拿到 template_id 后用 works_download 下载工程。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | 排序:suggest 推荐(默认)、latest 最新、effect_usage 特效使用量、project_usage 工程使用量。 | |
| count | No | 每页数量,默认 20。 | |
| cursor | No | 翻页游标,原样取上一页的 next_cursor;最后一页的 next_cursor 是 null。 | |
| category_id | No | works_list 返回的 categories 里的分类 ID;省略时用第一个分类(推荐)。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does so well: it discloses cursor-based pagination (next_cursor, null on last page), that each work may have null effect_id/publish_count, that a project window must be open, and, importantly, that *_ref references are only valid for the lifetime of the current MCP service run. It does not state that the operation is read-only, or describe any rate or size limits.
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 core purpose is front-loaded in the first sentence, and the workflow handoff and reference-lifetime note follow in a logical order. The final paragraph on *_ref short references is somewhat generic, but it is still load-bearing because it tells the agent to route them through image_view.
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 describe the return shape, and it does: template_id, title, tags, effect_id/publish_count with null handling, usage count, package size, cover_ref and gif_ref, plus pagination cursor semantics. Given six all-optional parameters and no annotations, this is close to complete; only explicit read-only and permission expectations are 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 description coverage is 100%, so all six parameters are already documented in the schema, which sets the baseline at 3. The description reinforces that category_id values come from the categories list returned by this tool and that instance_id/project_path can be omitted when only one project window is open, but it adds little beyond the schema text.
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: paginated listing of works under one category of the Xiangsu homepage Templates section, and it explains what those works are (complete official/user-submitted projects). That is enough for an agent to distinguish it from siblings such as works_search, works_by_effect, and works_download.
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 a concrete workflow handoff: once you have a template_id, use works_download to download the project, and it says to always pass all returned categories. However, it never explicitly contrasts this tool with works_search or works_by_effect, so the choice among the listing/search siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_openA
下载一个首页作品并在新的编辑器窗口里打开,与在首页点开作品同一流程(不弹版本升级提示,工程处于未保存状态)。返回窗口 pid、官方 instance_id 和工程目录,之后可用 get_scene、capture_preview 等官方工具观察它的做法。看完用 project_close(discard_changes=true)关窗,再 works_cleanup 删除下载;窗口开着时工程不会被删除。
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| template_id | Yes | works_list / works_search / works_by_effect 返回的 template_id。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
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 well: it discloses that no version-upgrade prompt appears, the project is left unsaved, the return payload (window pid, official instance_id, project directory), and the important constraint that the project cannot be deleted while the window is open.
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?
Purpose is front-loaded, then the workflow and cleanup sequence follow in a logical order. It is dense but nearly every clause carries operational information; only the closing cleanup sentence is slightly verbose.
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, but the description explicitly enumerates the return values and the required teardown steps, so an agent knows both what it gets back and how to clean up. Nothing essential for correct invocation 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 description coverage is 100%, so the schema already documents template_id, instance_id, and project_path including the either/or relationship. The description adds no parameter-level detail beyond what the schema 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 pins down the exact semantics by equating it to clicking a work on the homepage. This distinguishes it from siblings like project_open (existing project) and works_download (download only).
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 lays out a full lifecycle: open, observe with get_scene/capture_preview, close with project_close(discard_changes=true), then works_cleanup. That is clear when-to-use and follow-up guidance, though it never explicitly contrasts with project_open or works_download as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_searchA
按作品名搜索首页作品(与首页搜索框同一个接口)。不给 category_id 时搜全部分类并合并去重:「推荐」翻到底只有约 300 条,「美化」「友友天地」等分类里还有它没有的作品。合并顺序是先「推荐」里的(按 sort),再按分类顺序追加只在其它分类出现的;每个分类最多 300 条。每条带 found_in(出现在哪些分类),另返回 total、by_category(各分类条数)。queries 一次搜多个词(最多 8 个)并合并,每条带 matched_queries。按 offset / count 分页,结果缓存 10 分钟,翻页不重新请求。某个分类翻页时服务端一直给同一页,会列在 incomplete 里。其余字段同 works_list。按特效 ID 查用 works_by_effect。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | 排序:suggest 推荐(默认)、latest 最新、effect_usage 特效使用量、project_usage 工程使用量。 | |
| count | No | 每页数量,默认 20。 | |
| query | No | 作品名关键词,如「合掌」「转场」「换装」。与 queries 二选一。 | |
| offset | No | 分页起点,取上一页的 next_offset;默认 0。 | |
| queries | No | 一次搜多个词并合并,如 ["头套", "头饰"]。与 query 二选一。 | |
| category_id | No | 只搜这个分类(works_list 返回的 categories 里的分类 ID);省略时搜全部分类。 | |
| instance_id | No | 官方 list_instances 返回的 instance_id,与 project_path 二选一。 | |
| project_path | No | 目标工程的绝对路径。与 instance_id 二选一;只开了一个工程窗口时都可省略。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full behavioral burden and does so unusually well: it discloses the ~300-item cap per category, the merge ordering, 10-minute result caching so paging doesn't re-request, the server-side stuck-page failure surfaced as `incomplete`, and the lifetime of short refs (valid only for this MCP service run) plus how to resolve them via image_view. These are exactly the non-obvious traits an agent needs before calling.
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 front-loaded: purpose first, then the no-category behavior, then pagination/caching caveats, then sibling routing, then ref handling. Nearly every clause carries a distinct operational fact, though the merge-order and 300-cap detail could be tightened without losing meaning.
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 an 8-parameter, annotation-free search tool with no output schema, the description compensates by naming the returned fields (found_in, total, by_category, matched_queries, incomplete, *_ref refs) and the pagination contract. Nothing an agent needs in order to call it correctly or interpret its results 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%, so the schema already documents each parameter; the description still adds real meaning beyond it, notably the consequence of omitting category_id (search-all with dedupe), the 8-term cap on queries and the matched_queries annotation returned per item, and that offset/count paging is served from cache. Only instance_id and project_path are left entirely to 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 opening clause states a specific verb and resource ("按作品名搜索首页作品") and pins the exact backend semantics ("与首页搜索框同一个接口"). It also differentiates from siblings by naming works_by_effect for effect-ID lookups and by deferring field semantics to works_list, so an agent can choose among the three without opening any 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?
It gives explicit conditions: omit category_id to search all categories with merge/dedupe, use queries for up to 8 terms, and use works_by_effect when searching by effect ID. What it doesn't spell out is when to prefer works_search over works_list or library_search for a plain browse, leaving that routing to inference from "其余字段同 works_list".
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.
49 tool updates
v0.1.0- First observed
ai_combine_apply - First observed
ai_combine_new - First observed
effect_check - First observed
ext_status - First observed
face_warp_list - First observed
face_warp_set_intensity - First observed
growth_route - First observed
icon_open - First observed
icon_set - First observed
image_view - First observed
inspect_many - First observed
inspiration_bind - First observed
inspiration_collect - First observed
inspiration_detail - First observed
inspiration_list - First observed
library_apply - First observed
library_images - First observed
library_list - First observed
library_search - First observed
makeup_layers - First observed
menu_add - First observed
menu_list - First observed
mobile_preview - First observed
music_apply - First observed
music_list - First observed
my_effect_reviews - First observed
my_effects - First observed
object_remove - First observed
preview_frames - First observed
project_close - First observed
project_new - First observed
project_open - First observed
rank_hotspots - First observed
rank_innovation - First observed
rank_list - First observed
rank_subjects - First observed
resource_delete_unused - First observed
scene_tree - First observed
submit_prepare - First observed
task_bind - First observed
task_detail - First observed
task_receive - First observed
tasks_list - First observed
works_by_effect - First observed
works_cleanup - First observed
works_download - First observed
works_list - First observed
works_open - First observed
works_search
TDQS
Scored across 49 tools
Each tool targets a distinct resource+action and the descriptions go to unusual lengths to state when to use one over another (library_list vs library_search, works_download vs works_open, menu_add vs library_apply, object_remove vs resource_delete_unused). The only real confusion points are the parallel browse/search pairs (library_*, works_*) and the two catalogs (library_list = 素材库 vs menu_list = 添加对象菜单), which an agent can resolve from the text but must read carefully.
All names are snake_case and the dominant convention is domain-prefixed noun_verb (works_list, library_apply, inspiration_bind, music_apply, menu_add, ai_combine_new, face_warp_set_intensity), which clusters nicely by domain. Deviations are minor but real: tasks_list breaks the singular task_* family, object_remove vs resource_delete_unused use different verbs for delete, and several tools are noun-only labels (scene_tree, makeup_layers, growth_route, my_effects, ext_status, image_view).
49 tools is a heavy surface for an agent to select from, and a few groups could plausibly collapse (three near-parallel list/search pairs, rank_list/subjects/innovation/hotspots, icon_set/icon_open). Still, the domain is genuinely enormous — editor scene inspection, material library, homepage works, inspirations, tasks, rankings, music, submission and preview — and most tools map to a distinct editor action, so this is borderline heavy rather than bloated.
Coverage spans the whole workflow: project open/new/close, material browse→apply, works browse→download→open→cleanup, inspiration/task binding, scene introspection (scene_tree, inspect_many, makeup_layers, face_warp_*), object/resource removal, icon, effect check, mobile preview and submit prep. Minor gaps remain — saving, undo, and capturing previews are delegated to the official editor tools rather than surfaced here, and there is no local asset import beyond images/icons.
Maintenance
Related MCP Connectors
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Make games with AI: one MCP server that connects your agent to Unity, Unreal and Godot editors.
Build, edit and publish live 3D, AR and game scenes in ARClip from your AI assistant.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to directly control the Cocos Creator 3.8.x editor via MCP protocol, providing over 130 tools for scene, node, component, asset, and project operations.22 npm44MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI clients to control Cocos Creator editor projects, scenes, nodes, components, assets, Prefabs, building, and diagnostics via the MCP protocol.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to operate Douyin Xiangsu AR effects through MCP, including scene editing, asset binding, TypeScript scripting, compilation, preview screenshots, and interactive playtesting.20MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients such as Claude Code, Cursor, and Codex to drive a live Cocos Creator 3.8.x editor and its project files, covering scene, node, component, asset, build, and view operations. Write operations run as undo-journaled transactions that roll back on failure, with a verified editor-message whitelist, path guards, tiered confirmations, and offline prefab/animation editing that works even when the editor is closed.MIT