AgentScope Media MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AgentScope Media MCPGenerate an image of a red fox in a snowy forest at sunrise."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AgentScope Media MCP
Python MCP 服务:通过 AgentScope Platform 调用语音、图片、ASR 和视频模型。无网页、无本地模型、无账户 JWT 接口。
状态:开发版本。已开始真实接口联调,逐项结果见 验证记录。PyPI 尚未发布。
本地启动
安装 uv 后,在项目目录运行:
uv sync --locked
uv run agentscope-media-mcpstdio 服务由 MCP 客户端启动;直接在终端运行时等待协议输入属于正常行为。
密钥通过启动进程的 AGENTSCOPE_API_KEY 环境变量提供,不要写进源码。
未填写密钥仍可以初始化和列出工具,调用媒体接口时会返回配置错误。
本地客户端配置:
{
"mcpServers": {
"agentscope-media": {
"command": "uv",
"args": ["--directory", "/home/fanxing/repos/agentscope-media-mcp", "run", "--locked", "agentscope-media-mcp"],
"env": {"AGENTSCOPE_API_KEY": "<填写模型API Key>"}
}
}
}Related MCP server: MiniMax MCP JS
模型与工具
工具 | 模型/功能 |
list_models | 九个模型的静态清单,可按能力筛选 |
synthesize_speech | qwen-audio-3.0-tts-flash / qwen-audio-3.0-tts-plus |
generate_image / edit_image | qwen-image-3.0 |
transcribe_audio | qwen-audio-3.0-asr-flash |
generate_video | happyhorse-1.1-t2v / i2v / r2v、wan3.0-video |
edit_video | happyhorse-1.0-video-edit |
upload_media | 将 base64 data URL 上传到平台 |
get_task | 根据上游 task_id 查询结果 |
TTS 必须指定该模型支持的 voice,避免猜测音色。Wan 文本输入已通过一次真实生成测试,其他输入模式尚未验证。
480P、720P、1080P 可作为视频分辨率输入;实际可用性以具体模型和网关验证为准。
图片尺寸使用 1024*1024 形式,不保证任意尺寸都被模型接受。
调用流程
配音:选择 Flash 或 Plus,填写文本和有效 voice ID,调用 synthesize_speech。
图生视频:先取得公共图片 URL,再指定 happyhorse-1.1-i2v 和 image_url。
参考生视频:指定 happyhorse-1.1-r2v 和 reference_urls,可在提示词中引用 [Image 1]。
视频任务提交后保存 task_id,间隔查询 get_task,直到成功或失败。
图片、音频结果直接返回媒体 URL 或文本;如果上游返回任务,则保留任务编号。
服务不下载任意 URL,不读取调用者电脑上的路径,不永久保存作品。 API 返回链接可能过期,需要由调用者及时保存。 生成 POST 请求不自动重试;submission_unknown 表示受理结果不明,不应盲目重复生成。
配置
环境变量 | 默认值 |
AGENTSCOPE_API_KEY | 无;生成请求必需 |
AGENTSCOPE_MEDIA_BASE_URL | |
AGENTSCOPE_HTTP_CONCURRENCY | 4 |
AGENTSCOPE_CONNECT_TIMEOUT | 15 秒 |
AGENTSCOPE_READ_TIMEOUT | 180 秒 |
AGENTSCOPE_UPLOAD_MAX_BYTES | 10485760(10 MiB) |
并发限制是同时进行的 HTTP 请求数,不是上游运行中的视频任务数。 不连接 Credits、定价和用户信息接口,无费用审批。 媒体 HTTP 客户端使用直连,不继承本机代理变量;不会修改系统或其他应用的网络配置。
测试和打包
uv sync --locked --group dev
uv run pytest
uv run ruff check .
uv build
uv run python scripts/check_wheel.py魔搭部署
可先从 GitHub 安装,选择 uvx 配置;建议将 main 换成经过验证的提交号固定版本:
{
"mcpServers": {
"agentscope-media": {
"command": "uvx",
"args": ["--from", "git+https://github.com/fanxing724/agent-mcp.git@main", "agentscope-media-mcp"],
"env": {"AGENTSCOPE_API_KEY": "<部署时填写>"}
}
}
}魔搭托管运行 stdio 进程并提供远程连接,程序本身不监听 HTTP 端口。 平台的密钥填写和托管限制需实际部署验证。
请求字段参考及验证边界见 接口说明。
Available Tools
9 toolsedit_imageC
Edit reference images using qwen-image-3.0 and public image URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| size | No | ||
| prompt | Yes | ||
| image_urls | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one real constraint: image URLs must be public. Beyond that it says nothing about cost, latency, whether an async task is created (get_task exists as a sibling, hinting at job semantics), or what happens with multiple reference images.
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?
One sentence with no filler, and the model name and URL constraint are front-loaded. It is efficient, though its brevity reflects under-specification rather than disciplined pruning.
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, but for a 4-parameter generative tool with no annotations and 0% schema coverage, the description should cover seed/size semantics and likely async task behavior. Too much is left for the agent to guess.
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 four parameters are undocumented. The description hints at image_urls ('public image URLs') but says nothing about prompt, seed, or size — notably whether size accepts named presets or WxH strings, which the bare string type leaves ambiguous.
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 ('Edit reference images') plus the underlying model name and an input constraint, which is enough to tell it apart from edit_video and generate_image at a high level. It lacks an explicit differentiation statement against generate_image, the nearest sibling, so it stops 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 guidance on when to use this versus generate_image or edit_video, and no stated prerequisites beyond the implied 'public image URLs' constraint. The agent must infer the selection rule from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_videoC
Submit HappyHorse video editing with up to five reference images; returns task_id.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| prompt | Yes | ||
| video_url | Yes | ||
| resolution | No | ||
| reference_urls | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it does disclose two genuinely behavioral facts: this is an async submission returning a task_id, and reference images are capped at five. It omits cost/rate-limit/permission behavior and what to do with the task_id, leaving real gaps for an unannotated mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the key facts front-loaded and zero filler. It is efficient, though the brevity leaves the semantic gaps noted elsewhere.
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?
Five parameters at 0% schema coverage and no annotations is a heavy documentation burden; the description covers only the async contract and the reference-image cap. An output schema exists so return values needn't be explained, but the input semantics are largely undocumented.
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 only clarifies reference_urls with a 'up to five' cap. It says nothing about seed, resolution (720P/1080P enum), or what the required video_url and prompt should contain.
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: submitting a HappyHorse video-editing task, and notes it returns a task_id. The tool name plus 'video editing' distinguishes it from edit_image and generate_video, though the description itself never names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus edit_image or generate_video, and no prerequisites such as whether video_url must first come from upload_media. The async follow-up (polling get_task) is not mentioned, so the agent must infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageC
Generate an image with qwen-image-3.0. Optional size uses width*height syntax.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| size | No | ||
| prompt | Yes | ||
| negative_prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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. It does not disclose whether generation is synchronous or asynchronous (the presence of get_task as a sibling hints at polling), what happens on failure, cost/rate limits, or whether seed makes results deterministic. Only the size syntax hint is extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and model, with the size hint appended. Nothing is wasted, though the terseness reflects missing content rather than efficient coverage.
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 needn't be explained, but the definition still lacks parameter semantics for seed and negative_prompt, async/polling behavior, and any differentiation from edit_image. For a four-parameter generation tool with no annotations, this is substantially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for four bare parameters. It explains the width*height syntax for size but says nothing about seed (e.g., reproducibility) or negative_prompt (what it suppresses), leaving two of four parameters undocumented.
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 ('Generate an image') and names the backing model (qwen-image-3.0), so an agent knows exactly what the tool does. It does not explicitly distinguish itself from the sibling edit_image, which is the main adjacent operation, 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 guidance on when to use this versus edit_image or generate_video, nor on any prerequisites such as authentication or model availability. Usage is only implied by the verb 'Generate'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_videoA
Submit video generation; query task_id later. i2v needs image_url; r2v needs 1–9 reference_urls. Wan text-only mapping passed one smoke test; other modes are unverified. Omit optional parameters to use upstream defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| model | Yes | ||
| ratio | No | ||
| prompt | Yes | ||
| duration | No | ||
| image_url | No | ||
| resolution | No | ||
| reference_urls | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the critical behavior: this is an async submit-and-poll operation, and some model mappings are unverified (only Wan text-only smoke-tested). It leaves out error handling, rate limits, and where the submit actually lands, but the async contract is the key risk an agent faces and it is front-loaded.
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?
Very short and front-loaded – the submit/poll contract comes first, then mode requirements, then the verification caveat. The telegraphic style ('t2v', 'i2v', 'r2v') risks being opaque to an agent that has not read the model enum, which costs it a point.
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 needn't be explained, and the async pattern is covered. But it says to query task_id 'later' without naming get_task as the tool to poll with, and several generation-shaping parameters (duration, resolution, ratio, seed) remain entirely undescribed on an 8-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate; it explains image_url, reference_urls (including the 1-9 bound), and the omit-for-defaults convention. However, seed, ratio, duration, resolution (enum), and the four model values beyond the i2v/r2v distinction are undocumented in both places, leaving half the surface unexplained.
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 ('Submit video generation') plus the async continuation ('query task_id later'), which distinguishes it from edit_video and generate_image. It stops short of explicitly naming those siblings, so an agent must infer the boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete mode-selection guidance: i2v requires image_url, r2v requires 1-9 reference_urls, and optional params should be omitted to get upstream defaults. It does not say when to prefer generate_video over edit_video for modifying an existing video, which is the main sibling ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskB
Query an upstream task using the same API Key. Keep polling explicitly at intervals; pending/running is not generation success. UNKNOWN may mean the task expired.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does a fair job: it discloses that the call must use the same API Key as the originating request, that responses can be intermediate (pending/running) versus terminal, and that UNKNOWN likely means expiry. It omits error/auth failure behavior and whether results are cached, 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?
Three short sentences, front-loaded with the core action and no filler. Slight cost in terseness: the first sentence is clipped and could more plainly say it fetches task status.
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 needn't be explained, and the lifecycle notes cover a lot. Still missing the provenance of task_id and any explicit relationship to the generating sibling tool, leaving an agent to guess how to obtain the identifier.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the sole required parameter task_id has no title beyond 'Task Id'. The description never explains where task_id comes from or its format, so it does not compensate for the undocumented parameter.
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: query an upstream task. The mention of polling and generation success makes the intent (status retrieval for an async job) inferable, and no sibling tool covers task lookups. It never literally says it returns task status, which keeps it 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?
Gives operational guidance ('keep polling explicitly at intervals', 'pending/running is not generation success', 'UNKNOWN may mean the task expired') that implies use after submitting a generation request. However it never names which sibling produces the task or when not to call it, so the when-to-use signal is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsB
List all nine configured models; no credentials or network access required.
| Name | Required | Description | Default |
|---|---|---|---|
| capability | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does disclose useful behavior: no credentials or network access is required. It does not explain filtering behavior, whether results are static/configured, or how the optional capability input changes the returned set, so the transparency is adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the key information front-loaded. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so return values need not be explained. However, the description leaves out the optional capability filtering behavior, which is important given the 0% schema description coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the only optional parameter, capability, is not mentioned at all. Worse, the description says it lists all nine models, which could mislead an agent about how the capability filter works.
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 gives a clear verb and resource: list configured models. It also states the count, which makes the tool concrete, but it does not explicitly distinguish itself from sibling media-generation tools beyond the obvious list-versus-act distinction.
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: use this tool to discover available models, and the no-credentials note suggests it is safe for setup or capability checks. However, it does not explicitly say when to choose this over other tools or how the optional capability filter should affect usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
synthesize_speechC
Synthesize speech. Supply a voice ID supported by the chosen model; none is guessed.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| model | No | qwen-audio-3.0-tts-flash | |
| voice | Yes | ||
| format | No | ||
| instruction | No | ||
| sample_rate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 it discloses only one trait: voice IDs are validated against the chosen model and never guessed. It says nothing about permissions, cost, sync vs. async execution (notable given the get_task sibling), or what artifact is produced, which is a large gap for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed immediately by the one constraint the agent cannot infer. There is no filler to trim.
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?
A six-parameter tool with zero schema descriptions, no annotations, and an output schema is a complex surface, and the description addresses only two of the parameters. An agent would have to guess at output format, instruction semantics, and execution behavior before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across six parameters, yet the description only touches 'voice' and its dependency on 'model'. The meaning of text, format, instruction and sample_rate is left entirely undocumented in both schema and description, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Synthesize speech'), which unambiguously identifies a text-to-speech operation. It doesn't explicitly contrast with siblings, but the modality difference from generate_image, transcribe_audio and edit_video is self-evident, so an agent can still select it reliably.
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 / when-not-to-use guidance and no mention of alternatives such as transcribe_audio or the get_task sibling. The second sentence is a parameter constraint, not usage guidance, so the agent is left to infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_audioC
Transcribe a public audio URL using qwen-audio-3.0-asr-flash.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | ||
| audio_url | Yes | ||
| enable_itn | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It hints at a real constraint (the URL must be publicly reachable, not authenticated or local), which is genuinely useful, but says nothing about cost, latency, max duration, failure modes, or whether transcription is offline/batch vs synchronous.
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 sentence with no waste, but it is under-specified rather than concise — there is room to add the missing parameter and behavior detail without bloat.
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. However, for a 3-parameter tool with 0% schema description coverage and no annotations, the description is far too thin to let an agent call it correctly, particularly regarding language and ITN.
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 all three parameters are undocumented in structured data. The description only implicitly covers audio_url (must be public) and gives no meaning for 'language' or 'enable_itn' (inverse text normalization), leaving two of three parameters unexplained.
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 ('Transcribe') and resource ('a public audio URL') plus the backing model, so the action is unambiguous. It does not differentiate from siblings, but the siblings (image/video/speech generation, task polling) are far enough away that overlap is unlikely.
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 versus synthesize_speech/upload_media, no prerequisite about URL accessibility beyond the adjective 'public', and no note about supported formats or size limits. The agent must infer the usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_mediaA
Upload base64 image/audio/video data (default decoded limit 10 MiB). Returns media URLs. Prefer existing public URLs for large files; local paths are not accepted.
| Name | Required | Description | Default |
|---|---|---|---|
| data_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the full burden and does well: it discloses the ~10 MiB decoded size limit, accepted input form (base64), the rejection of local file paths, and what is returned (media URLs). It omits auth requirements and whether uploads expire or are scoped, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and output, followed by the constraint. Nothing redundant or padded.
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, yet the description still usefully names the return (media URLs). Size limit and input restrictions are covered; only the data_url format detail and any lifetime/permission notes are missing for a one-parameter upload tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single parameter is 0%, so the description must compensate. Saying 'base64 ... data' plus 'local paths are not accepted' implies data_url must be a base64 data URL, but the exact string format (data: URI prefix, MIME handling) is never stated.
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: 'Upload base64 image/audio/video data' and what it produces ('Returns media URLs'). It implicitly distinguishes itself from generation siblings (generate_image, synthesize_speech) by being an ingest operation, but never names or contrasts a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete routing guidance: prefer existing public URLs for large files, and local paths are not accepted. It does not say when an agent should call this versus just passing a URL to edit_image/edit_video, so a little inference is left.
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.
9 tool updates
v0.1.0- First observed
edit_image - First observed
edit_video - First observed
generate_image - First observed
generate_video - First observed
get_task - First observed
list_models - First observed
synthesize_speech - First observed
transcribe_audio - First observed
upload_media
TDQS
Scored across 9 tools
Each tool targets a distinct resource+action (models, image gen/edit, video gen/edit, TTS, ASR, upload, task polling). The generate_image/edit_image and generate_video/edit_video pairs could superficially be confused, but descriptions clarify the difference (from-scratch vs reference-based).
All nine tools follow a consistent snake_case verb_noun pattern (list_models, generate_image, edit_video, synthesize_speech, transcribe_audio, get_task, upload_media). No mixed conventions.
Nine tools is well-scoped for a media generation/editing server, with one tool per major capability plus task polling and media upload. No redundancy or dead weight.
Surface covers the full media lifecycle: generation, editing, upload, transcription, TTS, and async task polling. Minor gaps remain — no way to discover valid voice IDs (required by synthesize_speech but 'none is guessed'), and no task cancel/list operations.
Maintenance
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Discover and call AI agents via MCP. Supports A2A agents and platform agents with async tasks.
Prepaid inference for agents over hosted MCP. Chat, image, and video.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables image and video generation and editing through MCP tools, including image editing, upscaling, background removal, video generation, image-to-video, and video extension. Video generation runs asynchronously with job status and result retrieval.MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible clients to generate images and videos, synthesize speech, clone and design voices, and create related media outputs.549 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible clients to generate images and videos, synthesize speech, clone voices, and design custom voices through provider APIs.549 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible clients to generate images and videos, synthesize speech, clone or design voices, and manage media outputs through MiniMax APIs. It supports dynamic configuration and multiple transport modes for local or hosted integration.549 npmMIT