Continuity
场记 / Continuity
Un plugin de DeepSeek Harness que proporciona a un agente generación local de imágenes / voz / música / efectos de sonido y recuerda lo que ha creado — el mismo personaje sigue siendo el mismo personaje en cada llamada, y una generación fallida nunca puede pasar por un éxito.
Se ejecuta localmente. Los modelos se cargan de forma diferida por petición y se liberan cuando están inactivos, así que cuando no lo estás usando, la GPU no se toca — 0,21 GiB residentes, medido. Puedes jugar a un juego en la misma tarjeta.
场记 es el supervisor de continuidad en un rodaje. Su trabajo consiste en dos cosas: asegurarse de que el vestuario, el peinado y el atrezo coinciden entre tomas, y detectar el error en el set antes de que se corte en la película. Eso es exactamente el trabajo de este plugin.
Instalación
uvx --from continuity-mcp continuity-setup # preflight → build engines → fetch weights → start
dsh plugin --profile <your-profile> add dsh-plugin-continuitycontinuity-setup comprueba la máquina antes de descargar nada, y ajusta el tamaño de la instalación a lo que encuentra. Ejecuta continuity-setup --check primero para ver qué haría — eso lee el hardware y no cambia nada:
体检结果:
GPU AMD Radeon RX 7800 XT (RADV NAVI32) (16.0 GiB, 此刻可用 15.8 GiB, DISCRETE_GPU, vulkan device 1)
未选 AMD Radeon RX 7900 XTX (RADV NAVI31) (24.0 GiB, 此刻可用 1.4 GiB)
跳过 llvmpipe —— 软件渲染, 不是真显卡
内存 30.9 GiB
磁盘 3118.4 GiB 可用 / 需要 30 GiB
生图 启用
抠图默认档 best
参考音上限 30s (每秒约 0.19 GiB 显存)Dos detalles que existen porque la versión ingenua es incorrecta:
Omite
llvmpipe. El rasterizador por software anuncia 30,9 GiB de "VRAM" (es tu RAM del sistema) y ganaría cualquier concurso de "elige la tarjeta más grande". Entonces todo se ejecutaría en la CPU — funcionando, con aspecto completamente normal, e inutilizablemente lento.Elige por VRAM libre, pero filtra por VRAM total. En la máquina anterior, la tarjeta de 24 GiB tiene 1,4 GiB realmente libres porque otro proceso la ocupa; elegir por tamaño la seleccionaría y luego habría OOM. Pero "¿es esta tarjeta suficientemente buena?" es una cuestión de hardware, así que eso usa el total — de lo contrario, una tarjeta de 16 GiB sería rechazada por tener un juego abierto.
Related MCP server: Voice-AGI MCP Server
Requisitos mínimos
Mínimo | Notas | |
GPU | 8 GiB de VRAM | El pico es de 6,80 GiB (medido). Las peticiones se serializan, así que el pico es un modelo, no la suma. |
API de GPU | Vulkan 1.2+ | Sin CUDA, sin ROCm. Los kernels son SPIR-V compilados en tiempo de ejecución. |
Disco | 30 GiB durante la instalación, 19,5 GiB después | 17,4 de pesos + 2,1 de imagen de runtime + 8,5 de capas de compilación (recuperables). |
RAM del host | 16 GiB (8 GiB viable — ver más abajo) | Impulsada por picos transitorios, no por el estado inactivo. |
CPU | cualquier x86-64 | La eliminación de fondo se ejecuta en la CPU. |
Las instalaciones solo de audio (ver más abajo) necesitan 20 GiB durante la instalación, 9,5 GiB después.
Todas las cifras de VRAM/RAM en esta página son GiB (2³⁰ bytes), que es lo que reportan rocm-smi y vulkaninfo. Una versión anterior de este README las etiquetaba como GB; eso era incorrecto y hacía que el margen pareciera más ajustado de lo que es.
Vulkan en lugar de CUDA no es una preferencia — es la razón por la que esto funciona en absoluto. ROCm calcula mal la decodificación de VAE en esta clase de GPU (ROCm#6633): cinco decodificaciones de una entrada idéntica devolvieron cinco resultados mutuamente no correlacionados. Vulkan/RADV compila SPIR-V en tiempo de ejecución en lugar de buscar una tabla de kernels por arquitectura, y es correcto y más rápido aquí. El efecto secundario es la portabilidad entre los tres fabricantes.
Fabricantes de GPU
Cómo obtiene el contenedor la GPU | Estado | |
AMD |
| Probado (RX 7800 XT, RX 7900 XTX) |
Intel |
| Sin probar |
NVIDIA |
| Sin probar |
Solo tengo tarjetas AMD, así que no voy a afirmar más que eso. Nada en el código es específico de AMD — sin CUDA, sin ROCm, sin HIP, sin /dev/kfd, sin objetivos gfx — y el backend Vulkan de ggml se ejecuta ampliamente en NVIDIA. Pero "se ejecuta ampliamente" no es "lo he verificado".
La ruta de NVIDIA es un cableado genuinamente diferente, no solo una tarjeta diferente: el ICD de Vulkan de NVIDIA vive en el driver del host y debe ser inyectado por nvidia-container-toolkit, con NVIDIA_DRIVER_CAPABILITIES incluyendo graphics — el valor predeterminado compute,utility te da CUDA funcional y una lista de dispositivos vacía en Vulkan. continuity-setup detecta NVIDIA, usa la superposición de compose correcta, y te informa de que la ruta no está verificada. Los informes en cualquier dirección son bienvenidos.
RAM del host en detalle
El estado inactivo es insignificante; los picos son lo que dimensiona la máquina.
operación | pico de RSS |
inactivo | 0,52 GiB |
música | 0,50 GiB |
voz | 1,63 GiB |
imagen (1024²) | 4,94 GiB |
| 7,74 GiB |
| 1,33 GiB |
La eliminación de fondo es el techo, y su coste es independiente del tamaño de entrada — 256 / 512 / 1024 px alcanzan todos un pico de ~6,8 GiB, porque BiRefNet se ejecuta a una resolución interna fija.
Con 16 GiB todo funciona. Por debajo de 12 GiB, continuity-setup establece el valor predeterminado a quality="fast" (u2netp): el pico baja a 1,33 GiB y se ejecuta en 0,6 s en lugar de 7,2 s. En un sprite de juego típico, los dos son difíciles de distinguir a simple vista — comprobado lado a lado sobre un fondo magenta con los bordes ampliados. best sigue siendo el valor predeterminado donde hay espacio, porque los modelos sí difieren en principio en los bordes finos (cabello, flecos semitransparentes), pero trata fast como una opción legítima en lugar de un recurso degradado.
Qué se adapta a tu VRAM, y qué no puede
Tres cosas escalan con la tarjeta. Los tres umbrales están medidos, no adivinados:
Tarjeta pequeña | Tarjeta grande | Por qué | |
Qué mitad se instala | solo audio (<8 GiB) | imagen + audio | La generación de imágenes alcanza un pico de 6,80 GiB y no hay forma de reducirlo — ver más abajo |
Audio descargado antes de imagen | sí (<12 GiB) | no | Los modelos de audio permanecen residentes; la imagen encima de ellos alcanza un pico de 7,84 GiB en lugar de 6,80 |
Límite de audio de referencia | 15 s (<12 GiB) | 30 s | El audio de referencia cuesta ~0,19 GiB por segundo |
El nivel solo de audio es un producto real, no un premio de consolación: casting de voces, diálogo, música, efectos de sonido y recorte funcionan todos, y cabe cómodamente en 4 GiB.
Lo que no se adapta: el modelo de imagen. Cuantizarlo no mueve la VRAM en absoluto — Q4_0 (2,29 GiB de pesos) alcanza un pico de 6,60 GiB, Q8_0 (4,01 GiB) 6,59 GiB, idéntico. Bajar la resolución tampoco ayuda (512 / 768 / 1024 alcanzan todos el mismo pico; solo cambia el tiempo). El cuello de botella es el codificador de texto de 4B sin cuantizar de 8 GiB, no el modelo de difusión. Así que no hay un nivel de imagen "medio" que ofrecer, solo instalado o no. (Q4_0 se incluye de todos modos — misma VRAM, 1,7 GiB menos de disco.)
Bajar de 8 GiB para imágenes significa cambiar el codificador de texto o la familia de modelos. Eso es posible, pero mueve la fijación de identidad de ref_images nativo a IP-Adapter, que no está verificado aquí — y la fijación de identidad es el punto central.
Residencia cero
Medido en una RX 7800 XT sin nada más en la tarjeta:
GPU | |
inactivo | 0,21 GiB |
durante la generación de imágenes | 6,80 GiB |
2 s después de terminar | 0,21 GiB |
durante TTS | 2,39 GiB |
120 s después de TTS | 0,21 GiB |
Las imágenes son gratuitas: el motor transmite los pesos por petición y nunca los mantiene residentes. El audio se libera mediante un temporizador de inactividad (AUDIO_IDLE_UNLOAD_S, 120 s por defecto) — no inmediatamente, porque alguien que pone voz a diez líneas seguidas no debería pagar una recarga cada vez. La recarga no cuesta nada medible: la misma petición de TTS tardó 3,0 s tanto en frío como en caliente, porque los pesos están mapeados con mmap y residen en la caché de páginas.
Las peticiones se serializan, así que el pico = el modelo individual más grande. Cerrar el agente también libera la VRAM — el servidor MCP se descarga al salir en lugar de dejar que los motores la retengan.
Dos cosas que realmente hace
1. La identidad sobrevive entre llamadas. Los backends de generación no tienen estado: pide el mismo personaje dos veces y obtienes dos personas que meramente se parecen. Medido en Qwen3-TTS, cuatro líneas de una descripción de voz:
dispersión de tono en 4 líneas | |
directo al modelo (muestreo predeterminado) | 125 Hz |
directo al modelo, decodificación voraz | 242 Hz — peor |
a través de Continuity (referencia fijada) | 5 Hz |
Con decodificación voraz, la semilla es demostrablemente inerte — las semillas 5 / 99 / 777 produjeron un sha256 idéntico — así que la aleatoriedad se eliminó por completo, y aun así se desvió 242 Hz. La identidad es una función del texto de entrada, no del sorteo aleatorio. temperature=0 y top_k=1 no pueden arreglarlo. Solo fijarla a un artefacto de referencia puede.
create_actor(name, voice) -> audition clip; listen before you commit
actor_tts(actor, text) -> same timbre every line
create_character / create_animal / create_object (name, appearance)
subject_image(subject, scene) -> same look, new scene / angle / outfitLa identidad y el vestuario son separados: fija la cara y la constitución, luego cambia la ropa en el prompt de la escena. Una referencia con una túnica índigo, a la que se le pide wearing heavy red armor, vuelve con armadura y la misma cara.
¿Ya has hecho el casting de tu personaje en otro sitio? import_actor e import_subject fijan un artefacto que tú proporcionas — una grabación de voz real, un clip de ElevenLabs, una ficha de personaje de otra herramienta — y todo lo posterior se comporta de forma idéntica. El audio se normaliza a 24 kHz mono por ti (44,1 kHz estéreo de entrada, verificado: f0 de referencia idéntico, y un actor importado sigue a uno creado nativamente hasta 11 Hz).
2. La salida degenerada se rechaza. Un backend que calcula mal devuelve un WAV perfectamente bien formado de todo ceros, o un PNG gris plano, con HTTP 200. Cada artefacto se comprueba (desviación estándar de la imagen, RMS del audio, muestras no finitas) y la llamada falla de forma ruidosa en lugar de informar de éxito sobre basura. Los recortes además reciben un informe de calidad — mayormente transparente, nada eliminado, sujeto destrozado en fragmentos, agujeros que atraviesan el sujeto — cada uno con una advertencia específica en lugar de un pase silencioso.
Además remove_bg: los modelos de difusión dibujan "fondo transparente" como un tablero de ajedrez opaco; esto lo convierte en un recorte RGBA real, que es lo que requieren los sprites. Y gen_sfx, que sintetiza efectos de sonido de juego estilo sfxr de forma procedimental — bit-idéntico para una semilla dada, milisegundos, sin GPU — porque un modelo de difusión es el instrumento equivocado para un pickup de moneda de 40 ms.
Herramientas
19 herramientas. Todo devuelve rutas de archivo locales absolutas, no URLs — el agente y los motores están en la misma máquina, así que una ruta puede ir directamente a tu proyecto de juego sin un paso de descarga, y no hay servidor de archivos que ejecutar o configurar mal.
voz |
|
imagen |
|
audio |
|
post |
|
meta |
|
generate_image y generate_speech existen para usos puntuales y así lo indican en sus propias
descripciones: le dicen explícitamente al agente que lo que producen no volverá en la siguiente
llamada, y apuntan a las herramientas de fijación para cualquier cosa recurrente.
Límites, y por qué existe cada uno
Cada número aquí es un límite de fallo medido, no una política.
límite | valor | qué ocurre al superarlo |
longitud de línea | 200 caracteres | 600 caracteres bloquearon la GPU: |
audio de referencia | 15 s / 30 s | ~0,19 GiB de VRAM por segundo: 15 s → 6,59 GiB, 30 s → 9,04 GiB. Más allá de eso, la voz se convierte en el techo en lugar de la imagen. |
guion de casting | 45 caracteres | Produce el audio de referencia, que luego se vuelve a leer en cada línea posterior. El número de caracteres es un proxy deficiente (60 caracteres midieron 19,1 s, no los 13,7 s que predice la proporción), así que la duración real se comprueba después del casting y se informa. |
tamaño de imagen | 1024 px | 1280 llevó la VRAM a 14,5/16,4 GiB; 2048 envió al controlador a un thrashing de |
duración de música | 120 s | No es un límite de seguridad: el motor trunca silenciosamente a 120 s e informa éxito. El límite convierte eso en un campo |
El audio importado por debajo de 24 kHz se acepta pero se marca: el sobremuestreo no puede restaurar la octava que se descartó, así que el clon sale más apagado que el archivo que le diste. Eso merece una advertencia en lugar de un pase silencioso — es la misma forma de fallo que todo lo demás que este plugin existe para detectar.
Las entradas sobredimensionadas se manejan de forma diferente según el tipo, a propósito.
Una imagen demasiado grande se redimensiona y el resultado se te informa (原图 2400x1600 → 存为 1024x682) —
una imagen escalada sigue representando lo mismo. El audio de referencia demasiado largo se
rechaza, no se recorta: cortar el final del audio dejaría la transcripción describiendo algo
que el audio ya no dice, y esa alineación es exactamente de lo que depende la clonación.
Recortarlo silenciosamente te entregaría un actor que se importó correctamente y suena como
otra persona.
Trae tu propio backend (opcional)
Los motores locales son el valor predeterminado, pero cada backend es una URL (SD_SERVER,
AUDIO_SERVER). Apúntalos a tu propio servidor y los modelos locales nunca se cargan. Una
restricción si lo haces: el motor de audio resuelve la ruta del audio de referencia por sí
mismo, así que debe ver el mismo directorio de actores (la misma máquina, o un montaje
compartido).
El backend de imagen debe aceptar una imagen de referencia (ref_images nativo estilo
FLUX.2, IP-Adapter o PuLID para rostros). Sin eso, la fijación de identidad no puede funcionar —
y el plugin lo dice en lugar de degradarse silenciosamente.
Trabajo previo
Un estudio del ecosistema MCP actual — MiniMax-MCP, openrouter-mcp-multimodal, AtlasCloud, los plugins dsh vision/draw y cuatro servidores de assets de juegos — encontró clonación de voz en varios, fijación de sujeto visual en ninguno y verificación de salida en ninguno.
Diseño
bundle/ dsh bundle (npm) — one plugin row; dsh spawns and supervises the MCP server
src/ the MCP server: pinning, guardrails, verification, cutout, VRAM lifecycle
src/continuity_mcp/deploy/ compose + engine Dockerfile + weight manifestLicencia
MIT
Available Tools
21 toolsactor_ttsA
让某个已铸声的角色说一句台词, 音色与他之前每一句都一致。
做游戏 NPC 对白用这个, 不要用 generate_speech —— 后者每句音色会漂。 角色不存在会告诉你先去 create_actor。
参数: actor: 角色名(create_actor 时定的) text: 台词, 上限 200 字(约 45 秒), 超出截断 speaking_rate: 语速倍率(可选) seed: 随机种子(可选)
返回: 24 kHz 单声道 WAV 的本机路径
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| text | Yes | ||
| actor | Yes | ||
| speaking_rate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| path | No | |
| actor | No | |
| error | No | |
| voice | No | |
| warnings | No | |
| max_chars | No | |
| truncated | No | |
| consistent | No | |
| error_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden and does well: it discloses the consistency guarantee, text truncation at 200 chars (~45s), the actor-not-found error behavior routing to create_actor, and the return format (24 kHz mono WAV path). It does not mention latency, cost, or concurrency, 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?
Front-loaded with purpose and the key routing decision, then parameters and return value in clearly delineated sections. Every line earns its place; 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?
Output schema exists, so return-value detail is optional (though provided). With no annotations and 0% schema coverage, the description successfully covers purpose, routing, all params, error behavior, and output format. Minor gaps around speaking_rate/seed ranges and operational limits prevent a 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 coverage is 0%, so the description must document params and it does all four: actor (name from create_actor), text (200-char cap, truncation), speaking_rate (rate multiplier), seed (random seed). The last two are thin — no valid ranges — so it compensates well but not exhaustively.
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 ('make an already-cast actor speak a line') and a distinctive property (timbre consistency across every line). It explicitly names and contrasts with the sibling generate_speech, so an agent can distinguish it 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?
Gives explicit when-to-use ('game NPC dialogue'), when-not ('don't use generate_speech — its timbre drifts per line'), and a prerequisite path (if the actor doesn't exist, it tells you to create_actor first). Alternatives and conditions are fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continuity_statusA
本插件当前的状态: 两个引擎在不在、哪些能力开着、资产存在哪。
某个工具"不存在"时先看这里 —— 显存不够的机器上生图那半是被安装脚本关掉的, 不是坏了。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| audio | No | |
| error | No | |
| image | No | |
| actors | No | |
| subjects | No | |
| warnings | No | |
| state_dir | No | |
| engines_ok | No | |
| error_code | No | |
| engines_down | No | |
| setup_needed | No | |
| idle_unload_s | No | |
| cutout_quality | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
无 annotations,描述承担行为说明责任;它说明了状态涵盖引擎、能力和资产位置,并主动解释“工具不存在”可能是被安装脚本关闭而非故障。这提供了有用诊断上下文,但未明说只读/无副作用等安全属性。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
两句话,先总述状态内容,再给出故障排查指引;信息前置,无冗余,每句都有明确作用。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
存在输出 schema,因此无需描述返回值;工具无参数且用途简单。描述已覆盖状态范围与关键使用场景,信息完整。
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 为空且覆盖率为 100%。无参数工具的参数语义基线为 4,描述无需补充参数含义。
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?
明确说明这是本插件当前状态工具,并列出返回内容:两个引擎是否存在、哪些能力启用、资产存放位置。它与所有创建/生成/导入类兄弟工具在用途上明显不同,代理可据此区分。
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?
给出明确使用时机:当某个工具“不存在”时先查这里;还解释了常见原因(显存不足导致生图能力被安装脚本关闭)。但没有列出何时不用或替代工具,故非满分。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_actorA
给一个角色铸声(定妆), 之后用 actor_tts 让他说任意台词都保持同一个音色。
为什么要有这一步: 直接用文字描述合成语音, 那段描述只圈定一个大致的音色区间, 区间内每句台词各漂各的 —— 实测同 voice 同 seed 四句台词基频极差 125 Hz, 关掉采样走贪心反而涨到 242 Hz(音色是文本的函数, 不是采样随机性, 锁 seed 或 temperature 都锁不住)。本工具先用 voice 描述生成一段参考音, 之后所有台词 改由克隆模型照着这段参考音说, 音色与台词内容无关。实测极差降到 5 Hz。
重要: 铸完请先听那段试音, 确认是不是你要的那个人。铸砸了会把整个角色锁死在 错的音色上, 而且它之后每一句都错得很一致。不满意就 force=true 重铸。
参数: name: 角色名(字母/数字/下划线/连字符/中文, 1~40 字), 之后 actor_tts 用它指代 voice: 声音的自然语言描述, 英文效果最佳。写年龄/性别/音色/语速/情绪, 例如 "An elderly Chinese man, gravelly chest voice, commanding" sample_text: 铸声用的台词(可选)。默认用一段覆盖面较广的中文 seed: 随机种子(可选) force: 覆盖已有角色。会让该角色之前所有台词的音色对不上, 慎用
返回: 试音片段的本机路径 —— 先听再用
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| seed | No | ||
| force | No | ||
| voice | Yes | ||
| sample_text | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| kind | No | |
| name | No | |
| seed | No | |
| error | No | |
| voice | No | |
| warnings | No | |
| truncated | No | |
| error_code | No | |
| transcript | No | |
| ref_seconds | No | |
| imported_from | No | |
| source_format | No | |
| reference_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the output (a local path to the audition clip) and the consequential side effect of force=true (previously generated lines no longer match). It stops short of stating what happens if name already exists without force (error vs. reuse), so one behavioral gap remains.
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 sentence and the parameter block are front-loaded and tight. The middle 'why' paragraph justifies the tool's existence but spends several sentences on 125 Hz/242 Hz/5 Hz measurements, which is more evidence than an agent needs to make a selection decision.
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?
An output schema exists, so return values need not be explained in prose (the description still notes the audition path usefully). For a 5-parameter mutation tool with zero schema coverage and no annotations, the description supplies the operational context needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate entirely – and it does. All five parameters are explained: name with charset/length constraints, voice with a concrete English example and content guidance, sample_text with its default, seed, and force with its destructive consequence.
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 ('给一个角色铸声(定妆)' – mint/cast a voice for a character) and immediately distinguishes itself from the sibling it feeds into ('之后用 actor_tts 让他说任意台词'). An agent can tell this apart from actor_tts, import_actor, or generate_speech without opening a 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?
Clearly states when to use it: before actor_tts, to lock a stable timbre, and force=true to re-cast. It gives a clear workflow position but doesn't name alternative casting routes (import_actor, create_character) or say when those would be preferred instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_animalA
给一只动物/坐骑/灵兽定妆, 之后每张图它都是同一只。
appearance 里必须写死这几样:
物种 + 体型比例(腿长/身长/头身比)
毛色/羽色 + 花纹的分布位置(不是只说"有斑点", 要说斑点在哪)
耳朵、尾巴、翅膀的形状
显著特征(独角/断尾/眼色) 鞍具、缰绳这类可穿卸的东西和人物的服装同理: 写进 appearance 只是默认值, scene 里可以换掉。不要写场景和动作。
定完先看定妆图, 不满意 force=true 重定。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| seed | No | ||
| force | No | ||
| width | No | ||
| height | No | ||
| appearance | Yes | ||
| guidance_scale | No | ||
| num_inference_steps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| kind | No | |
| name | No | |
| seed | No | |
| error | No | |
| resized | No | |
| warnings | No | |
| appearance | No | |
| error_code | No | |
| source_size | No | |
| stored_size | No | |
| imported_from | No | |
| reference_path | No |
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 explains that appearance values are hardcoded defaults that can be overridden in scene (for removable gear and clothing), and that force=true triggers a re-design. It omits persistence/side-effect details (does this register a reusable subject that list_subjects/subject_image later reference?) and does not mention deterministic seeding 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?
Front-loaded with the purpose, then an efficient bulleted list of required appearance fields, then the override rule and the force workflow. Every line contributes, though the removable-gear/clothing aside adds slight length.
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?
An output schema exists, so return values need not be described, and the appearance/override/force semantics are well covered. Gaps remain around the image-generation parameters and whether the created animal becomes a reusable referenced subject, but the core workflow is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It thoroughly explains 'appearance' (exactly which attributes to specify) and 'force', but leaves seed, width, height, guidance_scale, and num_inference_steps entirely undocumented in both schema and description. Partial compensation warrants a 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (create/lock the design of an animal, mount, or spirit beast) and the concrete outcome (every subsequent image shows the same creature), which is a distinct purpose from the animal/character/object siblings. An agent can tell this is the animal-design tool 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 gives clear workflow guidance: design first, inspect the resulting design image, and rerun with force=true if unsatisfied. It also implicitly scopes out scene/action content ('不要写场景和动作'). It stops short of explicitly naming which sibling to use for scenes or characters, so 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.
create_characterA
给一个人物定妆(生成并存下参考图), 之后 subject_image 出的每张图长相都一致。
为什么要有这一步: generate_image 每次给的是"长得不一样的人"。同一个角色的头像 / 战斗立绘 / 地图小人, 直接用文字描述生成出来是三个人。
appearance 分两部分, 分清楚很重要:
(1) 身份 —— 必须写死, 漏掉的每一项模型都会自己编, 而且每张编得不一样:
年龄段 + 体型(高瘦/魁梧/矮壮)
脸: 脸型、显著特征(疤/须/眉眼)
发型 + 发色 + 束发方式
辨识物: 跟着这个人走、换装也不摘的东西(独眼罩/佩剑/护腕/胎记)
(2) 默认服装 —— 只是个基线, 不是身份的一部分。照样写进 appearance, 但 subject_image 的 scene 里写新衣服就能换掉(实测: 定妆穿布袍, scene 写 "wearing heavy red armor" 能换成甲胄而脸不变)。所以一个角色不需要按套装 定妆很多次。
不要写场景、动作、表情 —— 那些留给 subject_image 的 scene。
定完先看返回的定妆图确认是不是你要的人; 定砸了会把整个角色锁死在错的长相上, 不满意就 force=true 重定。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| seed | No | ||
| force | No | ||
| width | No | ||
| height | No | ||
| appearance | Yes | ||
| guidance_scale | No | ||
| num_inference_steps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| kind | No | |
| name | No | |
| seed | No | |
| error | No | |
| resized | No | |
| warnings | No | |
| appearance | No | |
| error_code | No | |
| source_size | No | |
| stored_size | No | |
| imported_from | No | |
| reference_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it discloses that this persists a locked-in appearance that governs all future subject_image output, that a bad result locks the whole character into the wrong look, and that force=true is the re-roll escape hatch, plus an instruction to verify the returned reference image. It is silent on the non-appearance generation knobs (seed, guidance_scale, steps, size) and on collision behavior when a name already exists.
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?
Well front-loaded – the one-line purpose precedes the rationale and the field guidance – and structured into clearly labeled sub-sections that an agent can scan. It is on the long side, and the illustrative anecdote about the robe-to-armor swap could be trimmed, but essentially every sentence carries usable instruction.
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?
An output schema exists, so return-value explanation is not owed, and the description correctly just tells the agent to inspect the returned reference image. Combined with the purpose, usage and appearance guidance, an agent can call this correctly; the gaps are the undocumented generation parameters and name-collision behavior rather than anything blocking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does so richly for the two most important parameters: `appearance` is decomposed into identity vs. default clothing with a concrete list of what must be pinned down, and `force` is defined as the re-create/override switch. The other five parameters (seed, width, height, guidance_scale, num_inference_steps) receive no semantics at all, leaving a substantial documentation hole.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource ('给一个人物定妆' – generate and persist a character reference) and immediately contrasts it with generate_image and subject_image, so the agent knows it is not a one-off image generator. It does not, however, differentiate itself from the parallel siblings create_actor / create_animal / create_object, which is the one ambiguity left.
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 about when to use it (whenever a character must stay visually consistent across many images), what to use instead for one-offs (generate_image), and what NOT to put in this call ('不要写场景、动作、表情' – leave those to subject_image's scene). It even gives a worked example of swapping clothing via scene without re-creating the character, which is exactly the when/when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_objectC
给一件道具/物件定妆, 之后每张图它都长一个样, 换角度也不变。
物件最容易漂的是几何, 不是材质配色 —— 实测一个宝箱, 材质配色五金件都对得上, 盖子却一会儿是平的方的、一会儿是拱的圆的, 因为原始描述里压根没写盖子什么形状。
appearance 里必须写死这几样:
整体轮廓 + 比例(长方/立方/圆桶, 宽高比)
关键几何: 盖子平的还是拱的、边角方的还是圆的、侧面直的还是弧的、有没有底座
材质 + 主次配色
五金件/纹饰及其位置(锁扣、包角、铆钉在哪) 不要写场景和角度 —— 角度留给 subject_image 的 scene。
定完先看定妆图, 不满意 force=true 重定。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| seed | No | ||
| force | No | ||
| width | No | ||
| height | No | ||
| appearance | Yes | ||
| guidance_scale | No | ||
| num_inference_steps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| kind | No | |
| name | No | |
| seed | No | |
| error | No | |
| resized | No | |
| warnings | No | |
| appearance | No | |
| error_code | No | |
| source_size | No | |
| stored_size | No | |
| imported_from | No | |
| reference_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It does disclose a real behavioral trait: consistency of the object across images and angles, and that geometry drifts most. It also mentions rerolling with force. But it omits key mechanics: whether this is persistent/long-lived (only 'continuity_status' hints at that), idempotency, cost, or that seed/guidance_scale/steps control determinism.
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 appearance checklist is genuinely useful and front-loaded, and the scene/angle exclusion is a strong, earned sentence. But the opening anecdote about the treasure chest lid is long and the overall text is padded; it leans more persuasion than spec. Structure is reasonable but not tight.
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?
An output schema exists, so return-value explanation isn't required. For an 8-param generation tool with no annotations, the description focuses almost entirely on the appearance field and lacks behavioral detail on persistence, determinism, and the many unlabeled generation parameters. Adequate for the creative how-to but thin as a full tool contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description must compensate. It only meaningfully covers 'appearance' (extensively, with required content), and touches 'force' for rerolls. It says nothing about name, seed, width, height, guidance_scale, or num_inference_steps — six of eight parameters unexplained in both schema and description.
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 describes the goal in domain-specific terms ('定妆' = locking in a canonical look for a prop/object so every subsequent image matches it), which clarifies the purpose as creating a persistent object reference. However, it never explicitly states it is the object-creation tool relative to siblings like create_character or create_animal, and the framing is heavily tutorial-flavored rather than naming the operation. The intent is inferable but not crisply stated.
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 strong guidance on WHAT to put in appearance and what to exclude ('不要写场景和角度 —— 角度留给 subject_image 的 scene'), effectively routing scene/angle work to a sibling. But it gives no guidance on when to use this tool vs. create_character/create_animal, no prerequisites, and the 'force=true' reroll note is the only invocation condition described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_actorB
删掉一个已铸声的角色。不可逆: 参考音不可复现, 重铸出来是另一个人。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| kind | No | |
| name | No | |
| error | No | |
| warnings | No | |
| error_code | No | |
| files_removed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and does so well: it explicitly warns that the operation is irreversible (不可逆) and explains the concrete consequence that the reference voice cannot be reproduced and a re-created actor would be a different person. It omits permission/auth requirements, but the destructive consequence is unusually well articulated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, front-loaded with the action and immediately followed by the risk. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. For a destructive single-parameter tool with no annotations, the description adequately covers purpose, irreversibility and consequence; the main gap is any guidance on how to identify the actor via the name parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter (name) with 0% schema description coverage, and the description adds no information about it whatsoever – no format, matching rule, or identifier guidance. With coverage this low the description should compensate and does not.
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 qualified resource (一个已铸声的角色 – a voice-cast actor), which is more precise than a bare 'delete actor'. It does not explicitly distinguish itself from the sibling delete_subject, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives such as delete_subject or list_actors, and no preconditions for invoking it. The agent must infer usage from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_subjectA
删掉一个已定妆的角色或物件。不可逆: 定妆图不可复现, 重定出来是另一个。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| kind | No | |
| name | No | |
| error | No | |
| warnings | No | |
| error_code | No | |
| files_removed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose the key destructive trait: the operation is irreversible and the finalized image cannot be reproduced, so re-finalizing yields a different subject. It omits confirmation requirements, permission needs, and whether dependent assets (images, sheets) are also removed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the destructive/irreversibility warning front-loaded right after the action statement. Every clause 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?
An output schema exists so return values need not be explained, and the irreversibility warning covers the most important behavior. However, for a destructive tool with no annotations and no parameter documentation, the description should say more about what else is destroyed and how it relates to delete_actor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single 'name' parameter, and the description adds nothing about it — it never clarifies whether 'name' is a subject name, an ID, or whether it must match exactly. For a destructive identifier parameter, leaving it undocumented is a real gap.
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 resource (一个已定妆的角色或物件 – a finalized character or object), with scope that implicitly distinguishes it from delete_actor by covering subjects of both kinds. Sibling differentiation is only implicit, though; it never names delete_actor or explains why a 'subject' differs from an 'actor'.
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 qualifier '已定妆的' implies a precondition (only subjects whose look has been finalized) and '重定出来是另一个' hints that re-creation is an option, but there is no explicit when-to-use/when-not guidance and no routing to alternatives such as delete_actor. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageA
生成一张一次性图片 —— 不保证与任何其它图一致。
会重复出现的角色/物件请先 create_character / create_object 定妆, 再用 subject_image 出图。这个工具适合背景板、UI 底图这类只出现一次的东西。
参数: prompt: 图片描述(英文效果最佳) width/height: 上限 1024 seed: 随机种子(可选) reference_image_path: 参考图的本机路径(可选), 传了就是图生图 num_inference_steps: 采样步数(可选, 不传用引擎默认)。多了更精细也更慢 guidance_scale: 提示词贴合度(可选, 不传用引擎默认)。高了更贴提示词但更容易糊
返回: 本机路径
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| width | No | ||
| height | No | ||
| prompt | Yes | ||
| guidance_scale | No | ||
| num_inference_steps | No | ||
| reference_image_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| path | No | |
| seed | No | |
| error | No | |
| scene | No | |
| width | No | |
| height | No | |
| clamped | No | |
| subject | No | |
| warnings | No | |
| error_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the non-deterministic/one-off nature of the output, that reference_image_path switches to image-to-image mode, and the speed/quality tradeoffs of num_inference_steps and guidance_scale. It stops short of covering permission needs, rate limits, cost, or resolution failure modes, 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?
Front-loads the defining distinction, then the sibling routing, then a compact parameter list, then the return value. Given the 0% schema coverage the parameter section is earned, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no annotations and a 7-param schema with no descriptions, the definition covers scope, alternatives, per-parameter semantics, and even the return value (a local path). An output schema exists, so return details are not strictly required, making this fully sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does: every one of the 7 parameters is explained with meaning beyond type, including the 1024 cap on width/height, the optional seed, the img2img behavior triggered by reference_image_path, and the quality/latency and adherence/artifact tradeoffs of the two sampling params.
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 defines the key scope constraint: the output is not guaranteed consistent with any other image. It explicitly distinguishes itself from create_character, create_object, and subject_image, so an agent can route correctly 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?
Gives both when-not and when-to-use: recurring characters/objects should go to create_character/create_object then subject_image, while this tool is for backgrounds, UI base images, and other one-off assets. The alternative is named with the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_musicA
生成一段背景音乐(Stable Audio), 返回 WAV 的本机路径。
参数: prompt: 音乐描述(风格/乐器/情绪, 英文效果最佳) seed: 随机种子(可选) duration: 秒数, 上限 120 num_inference_steps: 推理步数(默认 100, 越多越慢)
注意: 出来的是一段有头有尾的音乐, 没有做无缝循环点。要循环播放的 BGM 请自己在编辑器里找循环点, 或把它当作一次性过场音乐。
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| prompt | Yes | ||
| duration | No | ||
| num_inference_steps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| path | No | |
| error | No | |
| clamped | No | |
| duration | No | |
| warnings | No | |
| truncated | No | |
| error_code | No | |
| requested_duration | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It usefully reports that the tool returns a local WAV path, that the output is not seamlessly loopable, that duration is capped at 120 seconds, and that higher inference steps are slower. It does not cover permissions, rate limits, or failure modes, but the core behavioral constraints an agent needs are present.
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 purpose, then presents parameters in a compact list, and finishes with an important output caveat. Every part earns its place given the lack of schema descriptions, and there is no wasteful 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?
Although an output schema exists, the description still helpfully notes the returned WAV path. With no annotations and 0% schema parameter coverage, the definition compensates by documenting all parameters and the key output limitation. It is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain all four parameters. It does so clearly: prompt is a music description with English working best, seed is optional random, duration is seconds with a 120 upper bound, and num_inference_steps defaults to 100 with more steps being slower. This adds meaning beyond the bare schema types and defaults.
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: '生成一段背景音乐(Stable Audio), 返回 WAV 的本机路径'. It clearly distinguishes itself from generating speech or sound effects by specifying background music, though it does not explicitly name sibling alternatives such as gen_sfx or generate_speech.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an important usage caveat: the output has a beginning and end with no seamless loop point, so for looping BGM the user must find a loop point or treat it as one-shot transition music. However, it does not explicitly state when to use this tool versus generate_speech, gen_sfx, or other audio-generation siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_speechA
一次性旁白 —— 不保证跨句音色一致, 会重复出现的角色请用 create_actor + actor_tts。
适合系统提示音、一次性播报这类"说完就没了"的语音。任何会说第二句的角色都不该 用这个: 同一段 voice 描述的两句台词不是同一个人。
参数: text: 要念的台词, 上限 200 字 voice: 声音的自然语言描述(英文效果最佳), 不传则用中性旁白嗓 seed / speaking_rate: 可选
返回: 24 kHz 单声道 WAV 的本机路径
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| text | Yes | ||
| voice | No | ||
| speaking_rate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| path | No | |
| actor | No | |
| error | No | |
| voice | No | |
| warnings | No | |
| max_chars | No | |
| truncated | No | |
| consistent | No | |
| error_code | No |
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 key traits: no cross-sentence voice consistency, a default neutral narration voice when `voice` is omitted, a 200-character cap, and the output format (24 kHz mono WAV, local path). It does not mention determinism, cost, or latency, so it stops short of exhaustive, but the critical gotcha (voice instability) is stated up front.
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 differentiating constraint before any parameter detail, then uses a clean parameter block and a one-line return note. The extra sentence reinforcing the 'second line' rule is slight redundancy but functions as a strong routing heuristic, so it earns most of its space.
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 4-parameter generation tool with no annotations and a rich sibling set, the description supplies the routing rule, the character-limit constraint, default behavior, and output artifact. With an output schema present it did not need to describe the return, yet the one-line WAV note costs little and removes ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: `text` gets a 200-character limit, `voice` is explained as a natural-language description with English working best and a documented default, and both are the semantically important ones. `seed` and `speaking_rate` are only labeled '可选' with no explanation of what seed controls, leaving a partial gap.
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 (one-shot narration generation) and immediately scopes it: '一次性旁白 —— 不保证跨句音色一致'. It explicitly names the sibling route (create_actor + actor_tts) that handles the case it does not cover, so an agent can distinguish it from the voice/actor tools 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?
Gives both a positive use case (system prompts, one-off announcements, '说完就没了' audio) and an explicit exclusion ('任何会说第二句的角色都不该用这个'), plus the concrete alternative to use instead. This is exactly the when/when-not/alternative structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gen_sfxA
合成一枚 sfxr/jsfxr 风格的游戏音效(纯程序化, 不用模型), 返回 WAV 路径。
不要用 generate_music 做音效: 那是扩散模型, 出来的是几十秒的宽带糊音。游戏音效 是 10~200ms 的瞬态, 要精确、即时、可复现 —— 本工具毫秒级出结果, 同 seed 逐字节可复现, 而且完全不占显存。
参数: preset: jump / coin / hit / explosion / powerup / laser / select / hurt seed: 随机种子。给了就在 preset 周围抖动参数(不是抖采样点), 同 seed 结果完全相同; 不给则严格使用 preset 的原始参数。 base_freq: 覆盖基频 Hz (noise 波形下是采样保持的刷新率) wave: 覆盖波形 square / saw / sine / triangle / noise overrides: 覆盖任意合成参数的字典, 例如 {"freq_slide": -3.0, "release": 0.4, "lpf": 0.5, "duty": 0.25} 可覆盖的完整字段名和默认值: 调 sfx_presets()
返回: 44.1kHz 16bit 单声道 WAV 的本机路径。结构化返回里的 params 是这一枚音效 用到的全部合成参数 —— 拿它加一点改动再调一次, 就能做出一整组同族音效。
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| wave | No | ||
| preset | No | select | |
| base_freq | No | ||
| overrides | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| path | No | |
| seed | No | |
| wave | No | |
| error | No | |
| params | No | |
| preset | No | |
| duration | No | |
| warnings | No | |
| base_freq | No | |
| error_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses millisecond-level latency, byte-identical reproducibility under a fixed seed, no model/VRAM usage, and the exact output format (44.1kHz 16bit mono WAV path). It stops short of stating file-write/overwrite behavior or where artifacts land, so not 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?
Front-loaded with purpose then contrast, then a clean params/return block; every section earns its place. Minor redundancy in reiterating seed reproducibility ('同 seed 结果完全相同' and '同 seed 逐字节可复现'), but overall tight and well organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 params with zero schema coverage, a nested overrides object, an existing output schema, and no annotations, the description is complete enough for correct invocation: all inputs are explained, the output artifact and its structured params are described, and reproducibility semantics are stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and it does: it enumerates preset and wave values, explains seed semantics precisely (jitter around the preset's parameters, not sample points; identical seed yields identical output), defines base_freq incl. its meaning under noise, and points to sfx_presets() for valid overrides keys with a worked example.
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 (synthesize a programmatic sfxr/jsfxr-style game sound effect) and immediately distinguishes itself from the sibling generate_music. An agent can tell exactly what it produces and what it does not.
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 names the alternative (generate_music) and the condition that rules it out: diffusion music is tens-of-seconds broadband mush, whereas game SFX are 10~200ms transients needing precision and immediacy. This is textbook when-to-use/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_actorA
用一段现成的录音铸声 —— 声音是别处做的(真人录音 / 其它 TTS)也照样能保持一致。
和 create_actor 得到的东西完全一样, 只是参考音由你提供而不是我们生成。之后 actor_tts 让他说任意台词, 音色都来自这段录音。
参数: name: 角色名, 之后 actor_tts 用它指代 audio_path: 录音的本机路径。16-bit PCM WAV, 2~30 秒, 单人清唱式的干净人声 最好(没有背景音乐和混响)。采样率/声道数会自动转成 24 kHz 单声道。 其它格式先转: ffmpeg -i 原文件 -acodec pcm_s16le -ac 1 -ar 24000 ref.wav transcript: 那段录音里念的是什么。不给就自动听写一遍填上, 但那是机器听的, 会在返回里标出来让你核 —— 克隆模型拿它对齐音频和文字, 错一个词 音色就会明显不对。手上有准确的文字就直接给, 别让它猜。 force: 覆盖已有角色
注意: 你有权使用这段声音才导入它。克隆一个真人的嗓子在很多地方是需要本人同意的。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| force | No | ||
| audio_path | Yes | ||
| transcript | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| kind | No | |
| name | No | |
| seed | No | |
| error | No | |
| voice | No | |
| warnings | No | |
| truncated | No | |
| error_code | No | |
| transcript | No | |
| ref_seconds | No | |
| imported_from | No | |
| source_format | No | |
| reference_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
由于未提供 annotations,描述承担了全部说明责任,且完成得非常好:它详细说明了音频格式约束(16 位 PCM WAV、2–30 秒、尽可能为干净的单人无伴奏人声)、自动转换行为(转为 24 kHz 单声道)、ffmpeg 回退命令、自动转录标注质量警告、force 覆盖行为以及同意/授权注意事项。这远超 schema 和 annotations 所包含的信息。
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?
开篇一句话简洁地前载了核心目的,随后用带标签的段落解释参数和注意事项。篇幅合理,每句话都提供了有用信息,但 ffmpeg 命令和转录警告略长。
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?
对于一个包含 4 个参数、无 annotations、0% schema 描述覆盖率的变更工具,描述提供了智能体正确调用所需的一切:用途、与兄弟工具的关系、每个参数的含义、输入格式要求、自动转换行为,以及授权注意事项。由于存在 output schema,无需再解释返回值。
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 描述覆盖率为 0%,因此描述必须弥补这一差距;它确实做到了,为全部四个参数提供了含义:name(供 actor_tts 引用)、audio_path(本地路径及格式和时长规格)、transcript(用于克隆模型对齐,自动生成内容会被标记供审查)和 force(覆盖已有角色)。这已远超 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?
明确说明了动作(从一段现成录音铸造声音)和资源(角色),并直接说明它与 create_actor 的区别——唯一区别在于参考音频是由用户提供而非系统生成。这使智能体无需查看任一 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?
清楚地说明了后续流程(actor_tts 稍后通过名称引用该角色),并给出何时提供 transcript 与让系统自动听写的条件。缺少与 import_subject 等同类导入工具的明确对比,但对于何时使用此工具已足够清晰。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_subjectA
用一张现成的图定妆 —— 角色/物件是别处画的也照样能保持一致。
和 create_character / create_object 得到的东西完全一样, 只是定妆图由你提供。 之后 subject_image 让它出任意场景图, 外观都来自这张图。
参数: name: 名字, 之后 subject_image 用它指代 image_path: 参考图的本机路径。要求和我们自己生成的定妆图一样: 单个主体、 正面或四分之三视角、背景干净、看得全。一张有场景有动作的插画 当参考图, 场景会跟着一起被复制过去。 appearance: 这是什么的文字描述 —— 必填, 它会被拼进之后每一张场景图的提示词。 只给参考图而不给描述, 模型对"这是什么"没有着落, 外观照样会漂。 写法同 create_character / create_animal / create_object 的要求。 kind: character / animal / object force: 覆盖已有的
大图会缩到 1024 以内; 带透明通道的图会转成 RGB(透明区交给引擎会变成黑块)。
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | character | |
| name | Yes | ||
| force | No | ||
| appearance | Yes | ||
| image_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| kind | No | |
| name | No | |
| seed | No | |
| error | No | |
| resized | No | |
| warnings | No | |
| appearance | No | |
| error_code | No | |
| source_size | No | |
| stored_size | No | |
| imported_from | No | |
| reference_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it delivers real behavioral detail: images over 1024 are downscaled, alpha channels are converted to RGB (transparency becomes black), and force overwrites an existing subject. It also warns that a scene-containing reference will replicate that scene. Missing permission/auth or failure-mode disclosure 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?
Front-loaded with the one-line purpose before dropping into a structured 参数 list, and each parameter note earns its place with actionable detail. Slightly long, but the length is justified by the 0% schema coverage it has to make up for.
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 no annotations, the description covers overwrite semantics, image preprocessing, and reference-image constraints; the existence of an output schema means return values need not be explained. Auth/permission requirements and error behavior remain 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 description coverage is 0%, so the description must compensate, and it documents every one of the five parameters: name (used later by subject_image), image_path (with concrete requirements: single subject, front or 3/4 view, clean background, fully visible), appearance (required, injected into every subsequent scene prompt, with a warning about drift if omitted), kind, and force.
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 action (import a ready-made image to define a subject's look) and explicitly distinguishes it from siblings: the result is identical to create_character/create_object, only the reference image is user-supplied. An agent can tell it apart from create_character 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?
Explains the workflow context clearly: use this when you already have a reference image, then subject_image generates arbitrary scene images whose appearance derives from that image. The comparison to create_character/create_object implicitly covers the alternative, though it never states an explicit when-not-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_actorsB
列出已铸声的角色(名字 + 当初的声音描述 + 铸声时间)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| count | No | |
| error | No | |
| actors | No | |
| warnings | No | |
| error_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. '列出' implies a read-only, non-mutating operation, and the parenthetical clarifies the returned content, but there is no mention of ordering, pagination, permissions, or what an empty result means. Adequate but thin 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?
A single front-loaded sentence with no filler. It's efficient, though the parenthetical return-field list is somewhat redundant given an output schema exists.
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 parameterless read tool with an output schema, the description supplies enough for correct invocation: it identifies the resource and the data returned. Only the lack of any routing hint against sibling list tools keeps it from a 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?
The tool takes zero parameters, so the baseline is 4. The description correctly adds nothing about inputs, which is appropriate 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?
The description uses a specific verb (列出/list) with a scoped resource (已铸声的角色 – characters that have had voices cast) and even enumerates the returned fields. It's clearly distinguishable from create_actor/delete_actor, but it does not explicitly differentiate itself from the nearby list_subjects sibling.
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 when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as list_subjects or actor_tts. Usage is only inferable from the verb 'list', which is weak for a tool with this many siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subjectsA
列出已定妆的角色、动物和物件。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| count | No | |
| error | No | |
| subjects | No | |
| warnings | No | |
| error_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 列出 implies a read-only list operation, which gives basic safety context, but it does not disclose pagination, return size, or other behavioral details.
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 that front-loads the core action and scope with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with an output schema, the description is nearly complete: it names the resource and the finalized-only scope. A brief note on how it relates to sibling listing tools 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 has zero parameters, so per the rubric the baseline is 4. The description does not need to compensate for any schema gap.
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 the qualifier 已定妆 narrows the scope. It is clear enough to distinguish from generic subject listing, but it does not explicitly contrast itself with siblings such as list_actors.
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 implied: the tool lists finalized characters, animals, and objects. There is no explicit when-to-use guidance, no exclusions, and no mention of alternatives like list_actors for unfinalized actors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_bgA
抠掉图片背景, 输出真正带 alpha 通道的 RGBA PNG。
生图模型画不出 alpha: 你让它画"透明背景", 它是把 PS 那种灰白棋盘格当成不透明 像素画出来的。做游戏精灵图必须用本工具把它转成真的 RGBA。
参数: image_path: 图片的本机路径(其它工具返回的路径可直接用) image_base64: 或者直接给 base64 mode: auto (默认, 按结构证据判断是不是棋盘格: 恰好两级灰度 + 周期方格; 不是就走 通用抠图) / checker (强制只抠棋盘格) / rembg (强制通用显著物体抠图, CPU) quality: best (birefnet-general-lite, ~7s, 峰值内存 ~6.8 GB) / fast (u2netp, ~0.6s, 峰值 ~1.3 GB)。只影响 rembg 分支。 不传则用安装时按本机内存定下的默认值。
返回: RGBA PNG 的本机路径, 附带实际走的分支与透明像素占比。抠出来明显不对 (几乎全透明 / 几乎没抠掉 / 碎成一堆小块 / 主体被啃出洞) 时会附一行 ⚠️ 警告 —— 那种结果别直接用。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | auto | |
| quality | No | ||
| image_path | No | ||
| image_base64 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| path | No | |
| error | No | |
| model | No | |
| metrics | No | |
| warnings | No | |
| mode_used | No | |
| error_code | No | |
| checker_evidence | No | |
| transparent_ratio | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It does an excellent job: it explains what the checkerboard artifact is, details mode-specific behaviors (auto detection heuristics, forced checker, forced rembg), documents quality trade-offs (speed vs. memory), and discloses return format plus warning conditions for bad results. Minor gap: it doesn't state whether the operation is idempotent or what happens if both image_path and image_base64 are provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and rationale before diving into parameters. It is thorough but not padded; every section earns its place. The only minor deduction is that the Chinese formatting and emoji might slightly increase parsing overhead for an agent, though the structure is logical and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no annotations and 0% schema description coverage, the description covers everything an agent needs: purpose, usage context, all parameters with semantics, return format (even though an output schema exists, the description adds warning conditions not captured there), and failure modes. An agent can call this tool correctly without opening the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It fully documents all four parameters: image_path (local path accepted directly from other tools), image_base64 (alternative input), mode (three valid values with exact behavioral definitions), and quality (two values with model names, runtime, and peak memory, plus note on default behavior based on system memory). This is exemplary compensation for missing schema 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 states a specific verb and resource (remove image background, output real RGBA PNG with alpha) and explains the motivating scenario (generative models paint checkerboards as opaque pixels). It clearly distinguishes itself from siblings like generate_image or slice_sheet, which do not perform background removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use it ('做游戏精灵图必须用本工具把它转成真的 RGBA') and explains the mode selection logic. It does not explicitly state when NOT to use the tool, but the context is clear enough for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sfx_presetsA
列出 gen_sfx 能用的 preset, 以及 overrides 里可以覆盖的全部字段和它们的默认值。
先看这里再去 overrides: 字段名写错了 gen_sfx 会直接失败, 而"有哪些字段"是猜不出来的 (占空比扫描叫 duty_sweep 还是 duty_slide, 低通叫 lpf 还是 cutoff)。
返回: preset 名单 + 参数默认值表 + 采样率。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| rate | No | |
| error | No | |
| params | No | |
| presets | No | |
| warnings | No | |
| error_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and does disclose useful traits: exact field-name sensitivity that causes hard failure in gen_sfx, the fact that valid field names cannot be inferred, and the shape of the return (preset list, defaults table, sample rate). It is a read-only listing so auth/rate-limit disclosure is not critical, but no explicit statement of read-only safety is given.
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 purpose, then the reason to use it, then the return contents. The parenthetical naming examples look verbose but each one illustrates a real ambiguity risk, so every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter discovery tool with an output schema present, the definition is complete: it explains what to consult it for, why it matters, and sums up the return contents. Nothing an agent needs to call it or act on 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?
Zero input parameters, so the baseline is 4. The description additionally explains what the returned field table means and gives examples of ambiguous field names (duty_sweep vs duty_slide, lpf vs cutoff), adding interpretive value beyond the empty 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 (list) and resource (presets usable by gen_sfx), and goes further by naming the overrides fields and their defaults as part of the payload. It is clearly distinguishable from the sibling gen_sfx: this is the discovery/companion tool the agent consults before invoking gen_sfx.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing ('先看这里再去 overrides' – look here before touching overrides) tied to a concrete failure mode (wrong field names make gen_sfx fail). It identifies the sibling gen_sfx as the downstream consumer and the reason guessing field names is unsafe.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slice_sheetA
把排成网格的 sprite sheet 切成单帧 PNG。
让生图模型画"4 帧动画"时它会摆成 2x2 网格而不是 4 张图, 用本工具切开。
参数: image_path / image_base64: 同其它图片工具 rows, cols: 网格行列数(二者都给) frame_width, frame_height: 单帧像素尺寸(与 rows+cols 二选一) trim: 是否把每帧裁到非透明/非背景的外接框(默认 True)
返回: 各帧 PNG 的本机路径
| Name | Required | Description | Default |
|---|---|---|---|
| cols | No | ||
| rows | No | ||
| trim | No | ||
| image_path | No | ||
| frame_width | No | ||
| frame_height | No | ||
| image_base64 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| paths | No | |
| frames | No | |
| warnings | No | |
| error_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does useful work: it discloses the trim default (True), the mutual-exclusivity rule between rows/cols and frame_width/frame_height, and the fact that slicing writes per-frame PNG files to local paths. It does not discuss overwrite behavior or permissions, but the essential write semantics are visible.
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 verb+resource, then the rationale, then a compact parameter block and the return value. Every segment earns its place; only the deferral of image input semantics to other tools is slightly loose.
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?
An output schema exists so return values need not be spelled out, yet the description still names the return shape (local PNG paths). With no annotations and zero schema descriptions, the description supplies the constraints an agent needs to choose between the two sizing modes, making it adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and all 7 params are bare titles, so the description must compensate and largely does: it documents the two image-input alternatives, the rows/cols pair, the frame_width/frame_height alternative, the trim flag with its default, and the exclusivity constraint that the schema cannot express. Only the image_path vs image_base64 distinction is deferred to 'same as other image tools'.
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 ('把排成网格的 sprite sheet 切成单帧 PNG') and even explains the motivating case (image models laying out 2x2 grids instead of separate frames). No sibling tool covers sheet slicing, so the distinction is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger ('让生图模型画"4 帧动画"时它会摆成 2x2 网格而不是 4 张图, 用本工具切开'), which tells the agent exactly when this tool applies. It stops short of naming alternatives or 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.
subject_imageA
让某个已定妆的角色或物件出一张新图, 外观与它之前每一张都一致。
做游戏素材用这个, 不要用 generate_image —— 后者每张长相会变。 subject 不存在会告诉你先去 create_character / create_animal / create_object。
参数: subject: 名字(定妆时定的) scene: 这张图里它在干什么 / 在哪 / 什么角度 —— 只写场景动作视角, 身份由定妆图决定。例如 "opened, seen from behind, on a stone floor"。 人物/动物还可以在这里换装: "wearing heavy red armor" 会换掉定妆图 里那身衣服而保住脸。 width/height: 上限 1024 seed: 随机种子(可选) num_inference_steps: 采样步数(可选, 不传用引擎默认)。多了更精细也更慢 guidance_scale: 提示词贴合度(可选, 不传用引擎默认)。高了更贴提示词但更容易糊
返回: 本机路径
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| scene | Yes | ||
| width | No | ||
| height | No | ||
| subject | Yes | ||
| guidance_scale | No | ||
| num_inference_steps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| path | No | |
| seed | No | |
| error | No | |
| scene | No | |
| width | No | |
| height | No | |
| clamped | No | |
| subject | No | |
| warnings | No | |
| error_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and does well: it discloses the missing-subject failure path, the 1024 dimension cap, that unspecified seed/steps/guidance fall back to engine defaults, and the slower-but-finer tradeoff of more steps. It does not cover output file format, overwrite behavior, or reproducibility guarantees, so it falls 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?
Purpose and the sibling warning are front-loaded in the first two lines, followed by a clean parameter block. Every sentence earns its place — the dress/face example in particular prevents a common misuse without padding.
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?
An output schema exists, so the return value needs no elaboration beyond the one-line note that it yields a local path. Across a 7-parameter, 2-required generation tool, the description covers invocation, prerequisites, dimension limits, optional-parameter defaults, and identity/scene separation — nothing an agent needs 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 0%, so the description must compensate, and it documents all seven parameters. Critically it adds semantics the schema cannot: scene controls action/place/angle only while identity comes from the dated 定妆 image, and clothing can be swapped via scene text ('wearing heavy red armor') while preserving the face. That is genuine meaning 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?
Specific verb+resource (出一张新图 of a 已定妆 character/object) plus the scope constraint that appearance must stay consistent with every prior image. It is immediately distinguishable from the sibling generate_image. No ambiguity about what the tool produces.
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: use this for game assets 不要用 generate_image, with the reason (generate_image mutates the face each time). It also states the prerequisite path — if subject doesn't exist, go to create_character/create_animal/create_object first. Both when-to-use and the alternative are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribeA
听一段录音, 返回里面说的文字。
两个用处, 都是"核对"而不是"生产字幕":
导入参考音时不知道那段录音念的是什么 —— import_actor 不给 transcript 就是 自动调它, 也可以先单独调一次看看听出来的对不对。
验稿: 配完一句台词, 听回来和台词原文比一比。克隆模型偶尔会吞掉尾巴, 而那种"少了半句"的产物听起来完全正常, 只有把它听成文字才看得见。
参数: audio_path: 录音的本机路径, 只收 WAV language: 语种提示 (可选, 如 zh / en)。不给就让模型自己判 —— 它本来就带语种识别, 只有在把方言听成另一种语言时才需要指定。
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | ||
| audio_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| text | No | |
| error | No | |
| source | No | |
| language | No | |
| warnings | No | |
| error_code | No | |
| audio_seconds | No |
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 auto-invocation by import_actor, that the model has built-in language identification, and the real-world failure mode (clone models dropping sentence tails) that motivates verification. It stops short of stating cost/latency or error behavior, so not a full 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 behavior, then uses clearly sectioned blocks for uses and parameters. The script-verification rationale is slightly verbose but each sentence contributes useful context, so only marginally over-length.
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?
An output schema exists, so return values need not be explained. Purpose, both parameters with constraints, and both usage modes are covered, leaving nothing an agent needs in order to call this 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 0%, so the description must compensate and does: audio_path is a local path restricted to WAV, and language is an optional hint (zh/en) whose default is model self-detection, with guidance to supply it only when a dialect is misclassified. This adds meaning well beyond the bare 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+output: listen to a recording and return the spoken text as words. It also distinguishes itself from siblings by clarifying it is for verification, not subtitle production, and that import_actor invokes it automatically.
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?
Enumerates two concrete when-to-use scenarios (checking reference audio during import, validating a dubbed line against its script text) and explicitly excludes the wrong use case ('核对' not '生产字幕'). It also names how it relates to import_actor's automatic invocation.
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.
21 tool updates
v0.5.5- First observed
actor_tts - First observed
continuity_status - First observed
create_actor - First observed
create_animal - First observed
create_character - First observed
create_object - First observed
delete_actor - First observed
delete_subject - First observed
gen_sfx - First observed
generate_image - First observed
generate_music - First observed
generate_speech - First observed
import_actor - First observed
import_subject - First observed
list_actors - First observed
list_subjects - First observed
remove_bg - First observed
sfx_presets - First observed
slice_sheet - First observed
subject_image - First observed
transcribe
TDQS
Scored across 21 tools
Each tool has a clearly distinct purpose, and the descriptions explicitly draw the boundaries between the easily-confused pairs: create_actor+actor_tts (consistent voice) vs generate_speech (one-off), and create_character/subject_image (consistent appearance) vs generate_image (one-off). The casting tools split cleanly by subject kind (character/animal/object) and by source (generate vs import), leaving no meaningful overlap.
Most names follow a clean verb_noun pattern (create_actor, import_actor, list_actors, delete_actor, create_character, generate_image, remove_bg, slice_sheet). A minority deviate with noun_verb or bare-noun forms (actor_tts, subject_image, sfx_presets, continuity_status) and one abbreviation (gen_sfx vs generate_speech/generate_music/generate_image), but the scheme remains readable and predictable overall.
21 tools is on the heavier side, but the server spans several genuinely separate sub-domains (voice casting, image casting, image post-processing, music, procedural SFX, status), so the count is justified rather than padded. Each tool maps to a real capability with no obvious filler.
Coverage is strong: full lifecycle for actors and subjects (create/import/list/delete), plus generation, transcription, background removal, sprite slicing, music, SFX, and a diagnostic status tool. The only minor gap is no in-place update/edit for an actor or subject (you must delete and re-cast), which agents can work around.
Maintenance
Related MCP Connectors
MCP server for Qwen Image 3 AI image generation
MCP server for Wan AI video generation
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for Hailuo (MiniMax) AI video generation
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceA sophisticated MCP server providing advanced memory capabilities with RAG, hallucination detection, and enterprise-grade AI infrastructure for intelligent agent ecosystems.-
- FlicenseNot gradedqualityDmaintenanceAn advanced MCP server that provides stateful voice-controlled AGI capabilities with local STT, TTS, and intent detection. It enables users to execute tools, manage memory, and conduct research through natural multi-turn dialogue with low-latency performance tracking.-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that runs Stability AI's Stable Audio Open 1.0 locally on NVIDIA GPUs, enabling AI agents to generate broadcast-quality 44.1 kHz stereo WAV sound effects from text prompts fully offline with no API costs.Apache 2.0
- AlicenseAqualityDmaintenanceAn MCP server that enables local AI agents to generate images and videos through the OpenRouter API, manage a browsable media library, and track generation costs.11MIT