Multimodal MCP Server
Provides tools for generating, analyzing, and editing images; transcribing and analyzing audio; and performing multimodal chains using OpenAI's APIs.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Multimodal MCP ServerGenerate a watercolor map of a coastal city"
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.
Multimodal MCP Server
A production-ready Model Context Protocol (MCP) server that brings OpenAI's multimodal capabilities—vision, image generation, speech-to-text, and text-to-speech—to any MCP-compatible client. Built with a file-first architecture for security and transparency, ensuring all operations use explicit input/output paths.
Features
Multimodal MCP server exposing file-oriented tools backed by the OpenAI API:
image_generate- create an image from a prompt and write it to a client-specified destination.image_analyze- interpret an image and return text or schema-validated JSON.image_edit- edit or inpaint an image using a prompt and optional mask.image_extract- extract structured JSON from images with schema enforcement.image_to_spec- convert diagrams or UI into structured specs (Mermaid, OpenAPI, etc.).audio_transcribe- transcribe audio to text (optionally write transcript to a file).audio_analyze- analyze audio content and return text or schema-validated JSON.audio_transform- transform speech-to-speech based on an instruction.audio_tts- generate speech audio from text and write it to a client-specified destination.multimodal_chain- execute a deterministic, explicit sequence of multimodal steps.
The server is file-first: it only reads from explicit input paths/URLs and writes to explicit output paths/URLs.

the image was created by the MCP server
Audio description of the project
the audio file was created by the MCP server
For detailed tool semantics and client usage patterns, see docs/m3cp-manual.md.
Related MCP server: sanzaru
Run Locally
python -m multimodal_mcp.mainOr via the console script (after installing with uv sync):
mcp-multimodal-serverRunning Tests
Install the package with dev dependencies:
uv sync
Run all tests:
uv run pytestRun tests with coverage:
uv run pytest --cov=multimodal_mcpLive Integration Tests
Live integration tests make actual API calls to OpenAI and are disabled by default. To run them:
RUN_LIVE_TESTS=1 uv run pytestNote: Live tests require:
Valid
OPENAI_API_KEYin your.envfileConfigured model environment variables (
OPENAI_MODEL_VISION, etc.)Will consume OpenAI API credits
MCP Configuration (mcp.json)
Add the server to your MCP client's configuration. For Claude Desktop or other MCP-compatible clients, add to your .vscode/mcp.json:
{
"servers": {
"multimodal_mcp": {
"type": "stdio",
"command": "uv",
"args": ["--directory", "${workspaceFolder}", "run", "multimodal_mcp_server.py"]
}
},
"inputs": []
}Or if you've installed the package and want to use the console script:
{
"servers": {
"multimodal_mcp": {
"type": "stdio",
"command": "mcp-multimodal-server"
}
},
"inputs": []
}Note: The server will automatically load the OPENAI_API_KEY from the .env file in the workspace directory. Make sure your .env file contains:
OPENAI_API_KEY=your-openai-api-keyYou can also override other environment variables in the env object if needed (e.g., OPENAI_BASE_URL, ENABLE_REMOTE_URLS, etc.).
Environment Variables
Required:
OPENAI_API_KEY
Optional configuration:
OPENAI_BASE_URLOPENAI_ORG_IDOPENAI_PROJECTOPENAI_MODEL_VISIONOPENAI_MODEL_IMAGEOPENAI_MODEL_IMAGE_EDITOPENAI_MODEL_STTOPENAI_MODEL_TTSOPENAI_MODEL_AUDIO_ANALYZEOPENAI_MODEL_AUDIO_TRANSFORMENABLE_REMOTE_URLS(default false)ENABLE_PRESIGNED_UPLOADS(default false)ALLOW_INSECURE_HTTP(default false)ALLOW_MKDIR(default false)MAX_INPUT_BYTES(default 25MB)MAX_OUTPUT_BYTES(default 25MB)LOG_LEVEL(default INFO)MCP_TEMP_DIR(default system temp dir)
Note: If the model environment variables are not set, pass a model override in the tool call.
The server loads a local .env file automatically if present.
Example MCP Tool Calls (Pseudo-code)
# image_generate
client.call_tool(
"image_generate",
{
"prompt": "A watercolor map of a coastal city",
"output_ref": "/tmp/city.png",
"size": "1024x1024",
"format": "png",
"overwrite": True,
},
)
# image_analyze
client.call_tool(
"image_analyze",
{
"image_ref": "/tmp/city.png",
"instruction": "Summarize the visual style",
"response_format": "text",
},
)
# image_edit
client.call_tool(
"image_edit",
{
"image_ref": "/tmp/city.png",
"prompt": "Add a subtle fog layer",
"output_ref": "/tmp/city-edited.png",
"overwrite": True,
},
)
# image_extract
client.call_tool(
"image_extract",
{
"image_ref": "/tmp/form.png",
"instruction": "Extract form fields",
"json_schema": {"type": "object", "properties": {"name": {"type": "string"}}},
},
)
# image_to_spec
client.call_tool(
"image_to_spec",
{
"image_ref": "/tmp/diagram.png",
"target_format": "mermaid",
"output_ref": "/tmp/diagram.mmd",
"overwrite": True,
},
)
# audio_transcribe
client.call_tool(
"audio_transcribe",
{
"audio_ref": "/tmp/meeting.wav",
"timestamps": True,
"output_ref": "/tmp/meeting.txt",
"overwrite": True,
},
)
# audio_analyze
client.call_tool(
"audio_analyze",
{
"audio_ref": "/tmp/meeting.wav",
"instruction": "Summarize tone and speaker dynamics",
"response_format": "text",
},
)
# audio_transform
client.call_tool(
"audio_transform",
{
"audio_ref": "/tmp/meeting.wav",
"instruction": "Translate to Spanish and keep a calm tone",
"output_ref": "/tmp/meeting-es.mp3",
"overwrite": True,
},
)
# audio_tts
client.call_tool(
"audio_tts",
{
"text": "Welcome to the demo!",
"output_ref": "/tmp/welcome.mp3",
"format": "mp3",
"overwrite": True,
},
)
# multimodal_chain
client.call_tool(
"multimodal_chain",
{
"steps": [
{
"tool": "image_analyze",
"args": {
"image_ref": "/tmp/diagram.png",
"instruction": "Summarize the architecture",
},
"outputs_as": "analysis",
},
{
"tool": "audio_tts",
"args": {
"text": {"$ref": "analysis.metadata.text"},
"output_ref": "/tmp/summary.mp3",
"overwrite": True,
},
},
]
},
)Security Notes
The server only reads inputs explicitly provided by the client.
Remote URLs are disabled unless
ENABLE_REMOTE_URLS=true.Presigned uploads are disabled unless
ENABLE_PRESIGNED_UPLOADS=true.Output directories are only created when
ALLOW_MKDIR=true.Ensure the server has access only to the files and network locations you intend it to reach.
Implementation details
See the notes and details about the technical implementation here
Principles of Participation
Everyone is invited and welcome to contribute: open issues, propose pull requests, share ideas, or help improve documentation.
Participation is open to all, regardless of background or viewpoint.
This project follows the FOSS Pluralism Manifesto,
which affirms respect for people, freedom to critique ideas, and space for diverse perspectives.
License and Copyright
Copyright (c) 2026, Iwan van der Kleijn
This project is licensed under the MIT License. See the LICENSE file for details.
Available Tools
10 toolsaudio_analyzeC
Analyze audio content and return text or schema-validated JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_ref | Yes | ||
| instruction | Yes | ||
| response_format | No | text | |
| json_schema | No | ||
| model | 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 provided, so the description must disclose behavioral traits. It only mentions output types but omits important details like supported audio formats, size limits, or whether the operation is destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it sacrifices important details. It is not verbose, but the brevity leads to under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no annotations, and sibling tools that overlap, the description is insufficient. It does not explain return values (despite output schema existing) or handle parameter behaviors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any parameters. While parameter names like audio_ref and instruction are somewhat suggestive, no additional meaning is provided to aid correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes audio content and returns text or schema-validated JSON. It differentiates from siblings like audio_transcribe by mentioning structured output, though it could be more specific.
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 tool versus alternatives like audio_transcribe or audio_transform. The description does not specify prerequisites or contexts where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audio_transcribeC
Transcribe audio to text and optionally write the transcript to a file.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_ref | Yes | ||
| language | No | ||
| prompt | No | ||
| timestamps | No | ||
| diarize | No | ||
| output_ref | No | ||
| overwrite | No | ||
| model | No | ||
| output_headers | 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 must disclose behavioral traits but only mentions the core function and optional file output. It omits details on audio format constraints, language support, destructive potential, rate limits, or any side effects, which is insufficient for safe invocation.
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 short sentence, which is concise but lacks structure. While it earns its place by stating the primary action, it would benefit from splitting into a purpose statement and a brief usage note, especially given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters, no schema descriptions, no annotations, and an output schema (not described), the description is vastly incomplete. It fails to describe output format, parameter interactions, or any contextual details needed for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no parameter-level information. It does not clarify the meaning or format of audio_ref, language, prompt, timestamps, or any of the 9 parameters, forcing the agent to rely solely on parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: transcribe audio to text, with an optional file write. It uses a specific verb (Transcribe) and resource (audio), and implicitly differentiates from sibling tools like audio_analyze or audio_tts by describing a distinct purpose.
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 is provided on when to use this tool vs. alternatives like audio_analyze or image_extract. The description lacks exclusions, prerequisites, or context on typical use cases, leaving the agent without decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audio_transformC
Transform speech audio based on an instruction and write output audio.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_ref | Yes | ||
| instruction | Yes | ||
| output_ref | Yes | ||
| voice | No | ||
| format | No | ||
| overwrite | No | ||
| model | No | ||
| output_headers | 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 must fully convey behavioral traits. It states it transforms and writes audio, but does not disclose side effects, whether it overwrites by default (overwrite parameter exists but not explained), or what transformations are possible. The description is too vague to inform an agent about behavior beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it is too short given the tool's complexity. It lacks necessary detail, sacrificing clarity for brevity. Every sentence should earn its place, but this one leaves many gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high parameter count (8), no schema descriptions, no annotations, and the presence of an output schema, the description is severely incomplete. It does not explain the transformation mechanism, valid instructions, or output format. It fails to provide enough context for an AI agent to use 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 compensate by explaining parameters. It only hints at output_ref ('write output audio') and instruction ('based on an instruction'), but fails to describe voice, format, model, overwrite, and output_headers. This is insufficient for an 8-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'transform' and the resource 'speech audio', and includes the output action 'write output audio'. It distinguishes from sibling tools like audio_analyze, audio_transcribe, and audio_tts, which serve different purposes.
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 does not provide any guidance on when to use this tool versus alternatives. It lacks context such as 'use this to modify existing speech audio' or 'do not use for transcription'. No explicit when-to-use or when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audio_ttsC
Generate speech audio from text and write it to the output reference.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| output_ref | Yes | ||
| voice | No | ||
| format | No | ||
| speed | No | ||
| overwrite | No | ||
| model | No | ||
| output_headers | 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 provided, so description must carry full burden. Description only states core function without disclosing behavioral traits like destructiveness, authentication needs, rate limits, or side effects (e.g., overwrite 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?
Single sentence is concise but omits necessary detail; not all information is front-loaded effectively. Acceptable but not optimal as it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters and no annotations, description is far too brief. Output schema exists to cover return values, but the description does not address when to use optional parameters, default behaviors, or potential failures, leaving critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and description adds no meaning beyond static field names. It hints at 'output reference' but does not explain format, voice, speed, or other optional parameters. Highly insufficient for an 8-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool generates speech audio from text and writes to an output reference. It uses a specific verb (Generate) and resource (speech audio from text), distinguishing it from siblings like audio_transcribe or audio_analyze which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., audio_transcribe, audio_transform). Does not mention prerequisites, exclusions, or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_analyzeC
Analyze an image and return text or schema-validated JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| image_ref | Yes | ||
| instruction | Yes | ||
| response_format | No | text | |
| json_schema | No | ||
| max_output_tokens | No | ||
| detail | No | ||
| language | No | ||
| model | 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 exist, so the description must fully disclose behavior. It only mentions output format but omits side effects, safety (e.g., read-only), latency, or auth requirements. This is insufficient for a tool with no 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?
The description is a single sentence with no redundancy, but it is overly terse given the complexity of the tool. It could be longer without sacrificing conciseness.
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 8 parameters, no schema descriptions, and no annotations, the description is incomplete. It does not cover parameter usage, output details, or provide examples. An output schema exists but is not referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the tool description does not explain any of the 8 parameters. The description adds no meaning beyond the parameter names, leaving the agent without guidance on how to use them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes an image and returns text or JSON. The verb 'analyze' and resource 'image' are specific, and it distinguishes from sibling tools like image_edit or image_generate.
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 is provided on when to use this tool versus alternatives, nor any prerequisites or context. The description lacks explicit when-to-use or when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_editC
Edit or inpaint an image and write the result to the output reference.
| Name | Required | Description | Default |
|---|---|---|---|
| image_ref | Yes | ||
| prompt | Yes | ||
| output_ref | Yes | ||
| mask_ref | No | ||
| format | No | ||
| size | No | ||
| overwrite | No | ||
| model | No | ||
| output_headers | 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 should disclose behavioral traits like side effects, permissions, or error handling. It only states the action, missing critical details such as whether the original image is modified or if overwrite behavior 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?
The description is very concise (one sentence), but at the expense of completeness given the tool's complexity (9 parameters, output schema). It is under-specified and does not earn its single sentence.
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 an output schema, the description does not explain return values. Sibling tools exist but are not mentioned. For a tool with many optional parameters, the description is 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%, and the description adds no meaning to any of the 9 parameters. It does not explain what image_ref, prompt, output_ref, or optional parameters like mask_ref or format represent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it edits or inpaints an image and writes to an output reference, distinguishing it from generation and analysis tools. However, it could be more specific about the type of editing (e.g., prompt-driven changes).
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 tool versus siblings like image_generate or image_analyze. No prerequisites or exclusion criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_extractC
Extract structured data from an image with schema validation.
| Name | Required | Description | Default |
|---|---|---|---|
| image_ref | Yes | ||
| instruction | Yes | ||
| json_schema | Yes | ||
| language | No | ||
| max_output_tokens | No | ||
| model | 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 exist, so the description should fully disclose behavior. It does not mention any side effects, permissions, or operational constraints. The tool likely uses a vision model, but this is not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence), but it is under-specified. It could be expanded slightly without losing conciseness to add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters (3 required) and an output schema, the single-sentence description is insufficient. It does not cover how to use required fields or what the output contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, meaning no parameter docs. The description only hints at json_schema via 'schema validation' but does not explain any of the 6 parameters, leaving the agent without guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool extracts structured data from an image with schema validation, which distinguishes it from sibling tools like image_analyze (generic analysis) and image_to_spec (conversion). The verb 'extract' and resource 'image' are specific.
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 is provided on when to use this tool versus alternatives like image_analyze or image_to_spec. The description lacks any context about appropriate use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_generateC
Generate an image from a prompt and write it to the output reference.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| output_ref | Yes | ||
| size | No | ||
| background | No | ||
| quality | No | ||
| format | No | ||
| overwrite | No | ||
| seed | No | ||
| safety | No | ||
| model | No | ||
| output_headers | 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 only states the basic action but doesn't disclose side effects, error behavior, or output structure beyond writing to a reference.
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 very concise at 12 words, but it is under-specified for a tool with 11 parameters. It does not earn its place as it omits critical details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, no annotations, and 0% schema coverage, the description is incomplete. It lacks parameter details, usage context, and behavioral notes.
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?
With 0% schema description coverage and 11 parameters, the description adds no meaning to any parameter. It fails to compensate for the schema's lack of 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 clearly states the action 'generate an image' and specifies writing to the output reference. It distinguishes from sibling tools like image_analyze and image_edit.
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 tool versus alternatives like image_edit or which model to choose. No mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_to_specC
Convert an image into a structured textual spec.
| Name | Required | Description | Default |
|---|---|---|---|
| image_ref | Yes | ||
| target_format | Yes | ||
| instruction | No | ||
| output_ref | No | ||
| overwrite | No | ||
| model | No | ||
| output_headers | 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 for behavioral disclosure. It fails to mention any traits such as being read-only, destructive, or requiring specific permissions, and does not describe side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence) but under-specified. It is front-loaded but provides insufficient information, making it more incomplete than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters and an output schema, the description is severely inadequate. It does not explain the output format, how parameters control behavior, or any return value semantics.
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%, yet the description adds no meaning to any of the 7 parameters. It does not explain what 'image_ref', 'target_format', 'instruction', etc., represent or how they affect the output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('convert') and the output ('structured textual spec'), but it does not differentiate from sibling tools like image_analyze or image_extract, which also produce textual outputs from images.
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 is provided on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description does not help an agent decide between siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
multimodal_chainC
Execute a deterministic sequence of multimodal steps.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | ||
| final_output_ref | No | ||
| overwrite | 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 mentions 'deterministic' but does not disclose side effects, required permissions, error behavior, or the nature of the steps. This is insufficient for a tool that likely orchestrates multiple operations.
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 sentence, making it concise, but it sacrifices necessary detail. It is front-loaded but too brief to be fully useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, zero parameter descriptions in schema, and a terse description, the tool is inadequately documented. An output schema exists but is not shown; even with it, the description alone fails to provide a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description offers no explanation of the parameters (steps, final_output_ref, overwrite). The agent has no clue what values to provide for these fields, severely limiting correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Execute' and the resource 'deterministic sequence of multimodal steps,' which conveys the core function. It distinguishes from sibling tools that handle single modalities like audio or image processing. However, it could be more precise about what constitutes a 'multimodal step.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or context. The description does not help an agent decide between this and sibling tools beyond the generic 'multimodal' aspect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose within its modality (audio or image). The audio tools cover analysis, transcription, transformation, and TTS without overlap, and the image tools cover analysis, editing, extraction, generation, and spec conversion. The multimodal_chain tool is unique.
Tool names follow a consistent pattern: modality_verb (e.g., audio_analyze, image_generate). All use snake_case with clear, descriptive verbs. The naming is predictable and easy to understand.
10 tools is well-scoped for a multimodal server covering audio and image operations. Each tool earns its place, covering common tasks without being excessive or sparse.
The tool surface is largely complete for audio and image modalities, including analysis, generation, transformation, and extraction. A minor gap is the lack of a standalone audio extraction tool (though audio_analyze can handle it), and video is not covered, but that may be out of scope.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Focused MCP server for OpenAI image/audio generation (v2.0.0). Wraps endpoints via HAPI CLI.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables interaction with OpenAI's Chat Completion and Assistants APIs, supporting assistant management, file operations, and direct queries to GPT models through standardized MCP tools.92
- AlicenseAqualityAmaintenanceStateless MCP server that wraps OpenAI's Sora, Whisper, GPT-4o Audio, and TTS APIs for generating videos, images, and processing audio.96MIT
- FlicenseNot gradedqualityCmaintenanceA local MCP server exposing the OpenAI platform REST API as tools for file management, fine-tuning, inference, images, audio, batch processing, and organization usage/costs.
- FlicenseNot gradedqualityCmaintenanceMCP server that wraps OpenAI's GPT Image API to generate context-appropriate images for PPT/Word documents via a single generate_image tool.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/soyrochus/m3cp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server