OpenAI Universal Model MCP
Provides tools for interacting with the OpenAI Platform API, including dynamic model discovery and recommendation, text/reasoning/vision via Responses, Chat Completions, image generation and editing, audio transcription and speech generation, embeddings, moderation, Realtime and GPT-Live session creation, file upload, and an allowlisted REST inference endpoint.
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., "@OpenAI Universal Model MCPList the OpenAI models I can use and recommend one for coding"
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.
OpenAI Universal Model MCP
OpenAI Platform 的通用模型 MCP + Agent Skills 專案。 以動態探索為核心,讓 Codex、Claude Desktop、Cursor、VS Code 及其他 MCP Host 可以使用同一個 MCP Server 呼叫帳號有權限使用的 OpenAI API 模型。
專案版本:0.1.2 · 文件與能力登錄檔核對日期:2026-11-08
設計目標
不硬編碼可用模型清單:每次透過
GET /v1/models取得目前 API Key 可見的模型。能力與端點分離:Models API 不會提供完整能力規格,因此以官方文件建立能力登錄檔,未知模型一律標示
unknown,不猜測。依任務選擇 API:Responses、Chat Completions、Images、Audio、Embeddings、Moderation、Realtime、GPT-Live 各自使用正確端點。
尊重帳號權限:模型可見不等於所有端點都可用;實際呼叫由 API 權限驗證。
安全預設:API Key 只從環境變數或本機
.env讀取;不接受工具參數傳入 Key;產生檔案限制在 artifact 目錄;進階 REST 工具採 endpoint allowlist。Agent-first / Human-friendly:MCP tools 供代理呼叫,Skills 提供選型規則,人類可以用 PowerShell 和 MCP Inspector 驗證。
Related MCP server: OpenAI Assistant MCP Server
功能總覽
Area | MCP tools | API surface |
Discovery |
|
|
Routing |
| Live model list + capability registry |
File input |
|
|
Text / reasoning / vision |
|
|
Chat/audio-compatible models |
|
|
Image generation |
|
|
Image editing |
|
|
File transcription |
|
|
Speech generation |
|
|
Embeddings |
|
|
Moderation |
|
|
Realtime |
|
|
Realtime translation |
|
|
GPT-Live |
|
|
Advanced |
| Allowlisted inference endpoints only |
Diagnostics |
|
|
The server also exposes the openai://model-capabilities resource and choose_openai_model prompt.
1. Requirements
Windows 10/11, macOS, or Linux
Python 3.11+
uvpackage manager (recommended)An OpenAI Platform project API key with the required model permissions and billing configured
This is an API integration, not a bridge to ChatGPT's consumer model selector. ChatGPT product access does not automatically make every ChatGPT model available through the API; the official catalog explicitly separates ChatGPT-only models from API-recommended models. API usage is subject to the Platform project, endpoint permissions, rate limits, and API billing. Eligible ChatGPT Pro and Business subscriptions may claim separate API credits by linking an eligible subscription to an API organization; those credits do not expand ChatGPT or signed-in Codex usage limits.
2. Install on Windows (PowerShell)
Unzip the project, open PowerShell in the project directory, then run:
Set-ExecutionPolicy -Scope Process Bypass
.\scripts\install.ps1The installer runs uv sync --extra dev and creates .env from .env.example if needed.
Edit .env:
notepad .envSet your key:
OPENAI_API_KEY=sk-proj-REPLACE_WITH_YOUR_KEY
OPENAI_TIMEOUT_SECONDS=180
OPENAI_ARTIFACT_DIR=artifactsDo not put a real key in Git, screenshots, prompts, or MCP tool arguments.
3. Verify API access
.\scripts\test.ps1
.\scripts\run.ps1For an interactive tool test (requires Node.js/npx for MCP Inspector):
uv run mcp dev src/openai_universal_model_mcp/server.py --with-editable .Call openai_health_check, then openai_list_models. Use openai_inspect_model before selecting a model for a non-standard endpoint.
4. Connect to Codex
Copy the example from examples/codex-config.toml into your Codex config.toml, and replace the project directory with the actual absolute path.
Example:
[mcp_servers.openai_universal_models]
command = "uv"
args = [
"--directory",
"D:\\AI\\openai-universal-model-mcp",
"run",
"python",
"-m",
"openai_universal_model_mcp.server"
]
# Codex does not forward arbitrary environment variables to MCP servers.
# Needed only when the key is in the OS environment instead of .env.
env_vars = ["OPENAI_API_KEY"]The recommended launch command is uv run python -m openai_universal_model_mcp.server. This avoids package-relative imports failing when a server file is loaded as a standalone script.
Restart Codex after editing the MCP configuration. The MCP process reads the .env file in the project root; a key already set in the process environment takes precedence.
5. Connect to Claude Code / Claude Desktop / Cursor / VS Code
Claude Code (user scope, available in every project):
claude mcp add --scope user openai-universal-models -- uv --directory D:/path/to/openai-universal-model-mcp run python -m openai_universal_model_mcp.server
claude mcp listFor the other hosts, see:
examples/claude-desktop-config.jsonexamples/cursor-mcp.json
Replace the example path with the absolute project path. Host configuration formats can vary by version; keep the command and arguments aligned with the host's current MCP documentation.
6. Agent usage examples
Find all visible models
Call openai_list_models with include_shutdown=false.Select a reasoning model
Call openai_recommend_model(task="reasoning", budget_preference="balanced").
Then call openai_inspect_model with the recommended model ID.Use a model directly
Call openai_create_response:
- model: gpt-6.1-sol
- input_text: Explain Rust ownership with a small example.
- reasoning_effort: medium
- max_output_tokens: 1200Generate an image
Call openai_generate_image:
- model: gpt-image-2.6-sunburst
- prompt: A cinematic photorealistic miniature greenhouse at dawn.
- size: auto
- quality: high
- output_format: pngThe generated file is written to artifacts/ by default. GPT Image 2.6 supports complexity controls, SVG output, and animated GIF output. For a 16-frame GIF at 120 ms per frame, set output_format=gif, frame_count=16, frame_duration_ms=120, and optionally complexity=high. The Image API accepts GIF output for generation and edits; SVG is generation-only and requires n=1.
Call openai_generate_image:
- model: gpt-image-2.6-sunburst
- prompt: A seamless looping cinematic chibi character animation, fixed camera, consistent character and background.
- output_format: gif
- frame_count: 16
- frame_duration_ms: 120
- complexity: highUse a local PDF or image as model input
First call openai_upload_file with confirm_upload=true only after the user explicitly authorizes sending the file to OpenAI Platform. Then reference the returned file_id in openai_create_response using the appropriate input_file or input_image item.
Analyze an image with a general model
Use openai_create_response with input_json containing a Responses API message whose content includes input_text and input_image. Supply a supported HTTPS image URL, a data: URL, or a previously uploaded file ID. For example:
[
{
"role": "user",
"content": [
{"type": "input_text", "text": "Describe this image."},
{"type": "input_image", "image_url": "https://example.com/image.jpg", "detail": "high"}
]
}
]Transcribe audio
Call openai_transcribe_audio:
- file_path: D:\\recordings\\meeting.wav
- model: gpt-transcribe
- response_format: jsonCreate embeddings
Call openai_create_embeddings:
- model: text-embedding-3-small
- input_text: The source text to embed.
- include_vectors: false7. Skills
Skills are in skills/. They are written in English for consistent agent execution and include Traditional Chinese trigger phrases so Chinese-language users can invoke them naturally.
openai-platform-universal: main routing and operating policyopenai-model-discovery: dynamic catalog and lifecycle checksopenai-model-routing: task-to-model and endpoint selectionopenai-image-generation: image creation and editingopenai-audio-realtime: transcription, speech, Realtime, GPT-Liveopenai-embeddings-safety: embeddings and moderationopenai-api-extension: safe extension policy for new endpoints
Use AGENTS.md as the project-level instruction file for coding agents. To install the bundled skills into a Codex-style skills directory, run .\scripts\install-skills.ps1 or pass an explicit -TargetPath for another agent runtime.
8. Important compatibility boundaries
/v1/modelsreturns model identifiers and basic fields; it does not return full modalities, context windows, pricing, or endpoint compatibility.A model being listed does not guarantee the current project can use every endpoint or feature.
shutdown_dateis checked before recommending a model. A listed model with a past shutdown date is excluded from recommendations by default.Unknown model IDs remain discoverable but are marked with unknown capability metadata. Do not infer endpoint compatibility from the name alone.
Realtime and GPT-Live are persistent media sessions. MCP tools create an ephemeral client secret or return an SDP answer; the application must establish and maintain the actual WebRTC/WebSocket audio stream.
Speech generation models and endpoint support can change. Pass a currently supported model ID and verify it against the current official audio docs.
The safe REST tool allows only a fixed set of inference endpoints and model discovery. It does not expose destructive, organization-admin, billing, or arbitrary URL access.
9. Tests and quality gates
uv run pytest
uv run ruff check .
uv run python -m compileall srcUnit tests cover registry status, recommendation filtering, model ID validation, endpoint allowlisting, and output path containment. Live API tests are intentionally opt-in because they can incur charges.
10. Official references
The model catalog and API docs change over time. Treat the following official documentation as the source of truth:
Model catalog: https://developers.openai.com/api/docs/models/all
API credits for eligible ChatGPT subscribers: https://developers.openai.com/api/docs/guides/chatgpt-api-credits
Models guide: https://developers.openai.com/api/docs/models
List models: https://developers.openai.com/api/reference/resources/models/methods/list
Retrieve model: https://developers.openai.com/api/reference/resources/models/methods/retrieve
Responses API: https://developers.openai.com/api/reference/resources/responses/methods/create
Image generation: https://developers.openai.com/api/docs/guides/image-generation
Transcription: https://developers.openai.com/api/docs/guides/transcription
Embeddings: https://developers.openai.com/api/docs/guides/embeddings
Moderation: https://developers.openai.com/api/docs/guides/moderation
Realtime client secrets: https://developers.openai.com/api/reference/resources/realtime/subresources/client_secrets/methods/create
GPT-Live session creation: https://developers.openai.com/api/reference/resources/live/methods/create
Official MCP Python SDK: https://py.sdk.modelcontextprotocol.io/
Project status: Initial implementation package. Live model access, organization approvals, and endpoint compatibility must be verified with the user's own API key. No API calls are made during installation or unit tests.
Available Tools
18 toolsopenai_create_chat_completionC
Call Chat Completions for models or audio workflows that require that API surface.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| audio_json | No | ||
| temperature | No | ||
| messages_json | Yes | ||
| modalities_json | No | ||
| save_audio_output | No | ||
| response_format_json | No | ||
| max_completion_tokens | 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 supplied, so the description carries the full behavioral burden, yet it says nothing about this being a billable, non-idempotent inference call, how audio output is persisted (save_audio_output defaults to true), or what happens with token limits. Only a vague hint about which API surface to use is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, but brevity here comes from under-specification rather than economy; the one clause that exists is vague rather than informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema means return values need not be described, but for an 8-parameter inference tool with zero annotation and zero schema description coverage, the definition leaves an agent without enough information to construct valid arguments or anticipate side effects such as audio file creation and cost.
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, but it explains none of them - notably that messages_json, audio_json, modalities_json, and response_format_json are JSON-encoded strings, and what temperature=-1 or max_completion_tokens=0 mean as sentinel 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 names the API surface (Chat Completions) and a verb (Call), so the resource is identifiable, but 'models or audio workflows that require that API surface' is circular and never says concretely what the tool produces (a completion) or how it differs from the sibling openai_create_response, which is the obvious alternative.
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 gestures at when to use it ('models or audio workflows that require that API surface'), which weakly implies a compatibility/legacy escape hatch, but it never names an alternative such as openai_create_response, openai_generate_speech, or openai_transcribe_audio, and gives no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_create_embeddingsB
Create text embeddings. Vector values are omitted by default to keep MCP responses compact.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| dimensions | No | ||
| input_json | No | ||
| input_text | No | ||
| include_vectors | 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 does disclose one genuinely useful trait: vectors are omitted by default to keep responses compact, which explains the include_vectors default. It says nothing about what is returned instead (count, dimensions, usage), batching limits, cost, or whether inputs can be arrays.
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 with zero filler, and the most surprising behavior (omitted vectors) is front-loaded immediately after the purpose statement. Nothing needs trimming.
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 with no schema descriptions and no annotations is a heavy documentation load, and the description addresses essentially none of it. The presence of an output schema excuses it from explaining return values, but the input ambiguity between input_text and input_json is a real gap for a tool whose entire job is accepting input text.
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, but it only indirectly touches include_vectors. The most confusing pair, input_text versus input_json (both default empty strings), is left entirely unexplained, as is dimensions defaulting to 0.
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 text embeddings" states a specific verb and resource, and the sibling list (chat completions, images, audio, moderation) makes the domain unambiguous. It stops short of naming the provider endpoint semantics or what kind of input is embedded, so it is clear but not maximally precise.
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 choose this over siblings such as openai_create_response or openai_create_chat_completion, and no prerequisites or constraints are given. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_create_live_sessionC
Create a GPT-Live WebRTC session from an SDP offer and return the SDP answer.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | gpt-live-1 | |
| sdp_offer | Yes | ||
| session_json | No | ||
| safety_identifier | 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 supplied, so the description carries the full behavioral burden. It discloses only the input/return pairing (offer in, answer out) and says nothing about session lifetime, side effects, billing, auth requirements, or how the model parameter affects the resulting session.
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 efficient sentence with the core action front-loaded and no redundant phrasing. It is well-structured but so terse that concision comes at the cost of the missing parameter and behavioral detail.
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 output schema covers the return value, so the description need not explain the SDP answer. However, for a four-parameter session-creation tool with zero annotation and zero schema-description coverage, the description leaves too much unexplained for an agent to invoke it confidently.
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 four parameters, and the description only implicitly covers sdp_offer. The meanings of 'model' (default gpt-live-1), 'session_json', and 'safety_identifier' are left entirely undocumented, so the description does not compensate for the 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 ('Create a GPT-Live WebRTC session'), and adds the mechanism ('from an SDP offer') plus the result ('return the SDP answer'). It does not explicitly differentiate itself from siblings like openai_create_realtime_client_secret, but the WebRTC/SDP framing makes the operation 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?
There is no guidance on when to choose this tool over the related realtime-session tools, and no mention of prerequisites such as authentication, an existing model, or what SDP offers are valid. The agent must infer the usage context from the wording alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_create_realtime_client_secretC
Create a short-lived Realtime client secret. The main API key is never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | gpt-realtime-2.1 | |
| session_json | No | ||
| session_type | No | ||
| safety_identifier | No | ||
| expires_in_seconds | 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 it does disclose two real behavioral traits: the credential is ephemeral ('short-lived') and the main API key is never exposed in the response. It omits auth requirements, what the secret grants, and how expiry interacts with the expires_in_seconds default.
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 by the key security property. Nothing is wasted, but the brevity comes at the cost of substance rather than being achieved through efficient compression.
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 output schema covers return values, so that need not be described. However, a 5-parameter tool with 0% schema coverage, no annotations, and a free-form session_json string requires far more explanation than this two-sentence description supplies.
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 5 parameters, so the description must compensate and does not. 'Short-lived' hints at expires_in_seconds, but model, session_json, session_type, and safety_identifier get no explanation at all — critically, the format and expected contents of session_json are left completely undefined.
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: 'Create a short-lived Realtime client secret.' This is enough to distinguish it from most siblings (create_response, create_chat_completion), though it does not explicitly contrast with the nearby openai_create_realtime_translation_secret beyond the word 'Realtime'.
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 tool versus the sibling secret/session tools (openai_create_realtime_translation_secret, openai_create_live_session). The agent must infer from the name that this is for bootstrapping a browser/mobile Realtime connection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_create_realtime_translation_secretC
Create a short-lived client secret for the Realtime Translation API.
| Name | Required | Description | Default |
|---|---|---|---|
| session_json | Yes | ||
| safety_identifier | No | ||
| expires_in_seconds | 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 supplied, the description carries the entire behavioral burden, and it discloses little beyond the fact that the secret is short-lived. It does not state auth requirements, what the caller should do with the returned secret, whether creation is idempotent or revocable, or how expiry interacts with sessions.
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 single sentence is front-loaded and wastes no words, which is good. But its brevity here reflects under-specification rather than disciplined economy, so it does not fully earn the terseness.
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. Still, for a secret-creation tool with zero annotation coverage and an opaque required JSON parameter, the definition leaves out critical call-construction and behavioral detail an agent needs.
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 three parameters, including a required 'session_json' string whose expected shape is entirely undocumented. The description adds no meaning to session_json, safety_identifier, or expires_in_seconds, so an agent cannot construct a valid call from the definition alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource: 'Create a short-lived client secret for the Realtime Translation API.' That is clearly more informative than a tautology and hints at the translation-specific scope. However, it never distinguishes this from the near-identical sibling openai_create_realtime_client_secret, leaving the agent to infer which one to call.
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 explicit guidance on when to use this tool versus the sibling openai_create_realtime_client_secret or openai_create_live_session, and no prerequisites are listed. The only implied context is that it relates to the Realtime Translation API, which is incidental rather than directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_create_responseC
Call the Responses API for text, reasoning, image input, tools, or structured output.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| store | No | ||
| input_json | No | ||
| input_text | No | ||
| tools_json | No | ||
| include_raw | No | ||
| temperature | No | ||
| instructions | No | ||
| reasoning_effort | No | ||
| text_format_json | No | ||
| tool_choice_json | No | ||
| max_output_tokens | No | ||
| safety_identifier | No | ||
| previous_response_id | 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 supplied, so the description carries the full behavioral burden and largely drops it. It says nothing about what 'store' means for persistence, whether calls are billable/rate-limited, what 'include_raw' returns, or what the sentinel defaults (-1 temperature, 0 max_output_tokens, empty strings) do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler — well structured for scanning. Its brevity is also its weakness, since the space saved is space the agent needed for the 14 opaque parameters.
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 required. But for a 14-parameter, unannotated API wrapper with zero schema coverage, one capability sentence leaves the agent without the payload-format and behavioral 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% across 14 parameters, so the description must compensate and does not. Terms like 'tools', 'structured output', and 'image input' loosely gesture at tools_json/text_format_json/input_json, but there is no guidance on the JSON payload formats, the input_json-vs-input_text precedence, or the meaning of the negative/zero 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 gives a specific verb ('Call') and resource ('the Responses API') plus the capability surface (text, reasoning, image input, tools, structured output). It is clear what the tool does, but it never names or contrasts with the closest sibling, openai_create_chat_completion, so the agent must infer that this is the newer/alternate completion path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the capability list; there is no explicit statement of when to choose this over openai_create_chat_completion or openai_safe_api_request. With 17 sibling tools, a routing sentence would materially help, but the capability enumeration does hint at the appropriate cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_edit_imageC
Edit one local image with a GPT Image model. An optional alpha mask may be supplied.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | auto | |
| model | Yes | ||
| prompt | Yes | ||
| quality | No | auto | |
| filename | No | openai_edited_image | |
| mask_path | No | ||
| background | No | auto | |
| complexity | No | ||
| image_path | Yes | ||
| frame_count | No | ||
| output_format | No | png | |
| frame_duration_ms | No | ||
| safety_identifier | No | ||
| output_compression | 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 behavioral burden, and it discloses almost nothing beyond the verb. It does not state that the operation produces a new local file (implied only by the undocumented 'filename' parameter), whether the source image is modified in place, what the mask actually constrains, or what happens on failure. With 14 parameters and zero annotation coverage, this is a substantial gap, though the output schema covers return values.
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 with the core operation front-loaded and no filler. The text is efficient, but its brevity reflects under-specification rather than disciplined editing.
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 14-parameter mutation tool with no annotations, this definition is far too thin; an agent cannot confidently populate most arguments or predict side effects. The presence of an output schema removes the need to describe return values, but the input-side and behavioral gaps remain large.
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 14 parameters, so almost all semantics rest on the description, which explains only the mask. Critical knobs such as model, size, quality, output_format, output_compression, background, frame_count/frame_duration_ms (suggesting animation support), complexity, and safety_identifier are left entirely unexplained beyond their titles 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 gives a specific verb and resource: 'Edit one local image with a GPT Image model,' which clearly separates it from openai_generate_image by naming editing rather than generation. It also notes the mask input. It stops short of explicitly routing the agent away from the sibling image generator, so it is clear but not fully differentiated.
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 only guidance-like sentence is 'An optional alpha mask may be supplied,' which is a parameter note rather than a when-to-use statement. There is no indication of when an agent should choose this over openai_generate_image, what prerequisites exist (API key, model availability, local file access), or what cases should use generation instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_generate_imageC
Generate images with GPT Image 2.x; supports 2.6 complexity and GIF frame controls.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| size | No | auto | |
| model | Yes | ||
| prompt | Yes | ||
| quality | No | auto | |
| background | No | auto | |
| complexity | No | ||
| moderation | No | auto | |
| frame_count | No | ||
| output_format | No | png | |
| filename_prefix | No | openai_image | |
| frame_duration_ms | No | ||
| safety_identifier | No | ||
| output_compression | 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 disclosure burden and largely drops it. It does not say the call is a billable write/side-effecting operation, that output is likely written to disk (implied only by the filename_prefix parameter), how moderation behaves, or what happens with multi-frame GIF generation.
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 core action front-loaded and no filler. It is tight, though its brevity is partly under-specification rather than true efficiency.
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 14-parameter generation tool with zero schema descriptions and no annotations, the description is far too thin. The existence of an output schema excuses it from explaining returns, but it leaves model selection, image options, and GIF mechanics entirely 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 for 14 bare parameters, and it only gestures at three of them: 'complexity', frame count, and frame duration via 'GIF frame controls'. Parameters like size, quality, moderation, background, output_compression, safety_identifier, and n receive no explanation in either the schema or the 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?
States a specific verb and resource ('Generate images with GPT Image 2.x'), which an agent can distinguish from the sibling openai_edit_image. The qualifiers about '2.6 complexity' and 'GIF frame controls' hint at capabilities but are cryptic rather than precise about scope.
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 when-to-use guidance is given: nothing says when to pick this over openai_edit_image, what a valid model value looks like, or whether the prompt must be self-contained. The only inference available is that generating implies new images rather than editing existing ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_generate_speechC
Generate speech audio and save it locally. Supply a model supported by the current speech endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| speed | No | ||
| voice | No | alloy | |
| filename | No | openai_speech | |
| input_text | Yes | ||
| instructions | No | ||
| response_format | No | mp3 |
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 supplied, the description carries the full behavioral burden, and it does disclose the key trait: generated audio is written to local disk rather than returned inline. However, it says nothing about where the file lands, whether an existing file with the same name is overwritten, what the default filename or extension becomes, or any rate/cost considerations.
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 its side effect, with no filler. The brevity is appropriate, though the second sentence is a constraint rather than a structural aid to understanding the parameters.
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, but for a 7-parameter mutation tool with zero annotation and zero schema coverage the description is too thin. Missing are the meaning of the tuning parameters (voice, speed, response_format, instructions) and the file destination/overwrite behavior implied by "save it locally".
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 seven parameters, so the description must compensate and largely fails to. It only hints at model (must be endpoint-supported), input_text, and filename ("save it locally"); voice, speed, response_format, and instructions are left entirely unexplained in both schema and prose.
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?
"Generate speech audio and save it locally" gives a specific verb plus resource and notes the file-writing side effect, which distinguishes it from siblings like openai_transcribe_audio and openai_generate_image. It stops short of explicitly naming those siblings as alternatives, but the operation itself 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?
The only guidance is "Supply a model supported by the current speech endpoint" - a constraint, not a when-to-use rule. There is no mention of when this should be preferred over openai_transcribe_audio (the inverse operation) or any prerequisite such as API key scope or output directory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_get_modelC
Retrieve one model record from GET /v1/models/{model_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes |
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 supplied, so the description carries the full behavioral burden, yet it only states the endpoint path. It does not disclose auth requirements, error behavior for an unknown or inaccessible model_id, whether any data is modified, or what the record contains beyond 'model record'. The GET path is the only behavioral signal, and it is a weak one.
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 or repetition. It is efficient, though the terseness borders on under-specification given the overlapping siblings.
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 detail is fairly excused, and the single required parameter is self-evident. The remaining gap is the absence of any annotation context or sibling disambiguation, which matters because two other tools in this server also operate on a single model.
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 only meaning for model_id comes from the description's {model_id} path template, which at least tells the agent it is a path identifier for a specific model. It adds nothing about accepted identifier forms (e.g. whether names like 'gpt-4o' work versus internal ids), which is the one detail that would actually have helped.
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 ('Retrieve') and resource ('one model record') and even cites the underlying endpoint GET /v1/models/{model_id}, which makes the operation unambiguous. It implicitly separates itself from openai_list_models by saying 'one model record', but it never distinguishes itself from the sibling openai_inspect_model, leaving a real ambiguity about which single-model tool to pick.
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 explicit when-to-use or when-not-to-use guidance; the agent must infer that this is the lookup-by-id tool. The sibling list contains openai_inspect_model and openai_recommend_model, both plausibly overlapping with this one, and the description offers no routing rule between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_health_checkA
Check local configuration and connectivity to the OpenAI Platform API.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 supplied, so the description carries the full disclosure burden; it establishes that the tool inspects configuration and makes a connectivity check, implying a network call, but does not say whether it is read-only, whether it consumes quota/rate limits, or how it behaves on failure. The presence of an output schema covers the return-value side, which limits the gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, hedging, or restatement of the tool name. Every word contributes to the scope definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter diagnostic with an output schema, the description covers what is being checked and against what target. Only minor gaps remain: what "local configuration" encompasses (env vars, key presence) and whether the connectivity probe has side effects.
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 there is nothing for the description to disambiguate; baseline 4 applies. The description also does not invent parameters that do not exist.
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 ("Check") and two concrete resources (local configuration and connectivity to the OpenAI Platform API), which clearly separates it from the sibling tools that all perform model, file, or generation operations. It does not explicitly name a sibling for contrast, but the diagnostic scope 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?
The diagnostic intent is implied — an agent can infer this is a pre-flight/troubleshooting call — but the description never says when to run it versus just calling openai_safe_api_request or openai_list_models, nor does it state prerequisites (e.g., that an API key must be configured locally).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_inspect_modelB
Inspect live API visibility plus locally documented capabilities and compatible endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes |
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 supplied, so the description carries the full burden. It does disclose a meaningful trait beyond the name: the result combines a live API probe with locally documented data, implying a network call and a merged response. It does not state that the tool is read-only, what happens when the model is unknown or unreachable, or whether the live check can fail independently of the local data.
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 compact sentence with no filler, and the dual-source framing is front-loaded. The phrase "live API visibility" is somewhat abstract jargon that could be plainer, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return values, and the one-parameter surface is small. However, the identifier format is undocumented and the relationship to openai_get_model is unresolved, leaving gaps an agent must guess at before calling.
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 single required parameter model_id has no title beyond its key. The description never explains the expected identifier format (e.g., a canonical OpenAI model name versus a local alias) or whether unknown IDs are tolerated. For the one input the agent must supply, this leaves real ambiguity.
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 pairs a specific verb ("Inspect") with a specific resource (a model) and names the two information sources it merges: live API visibility and locally documented capabilities/endpoints. That is materially more informative than the bare name. It stops short of distinguishing itself from the sibling openai_get_model, so an agent cannot tell from the text alone which of the two to pick.
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 explicit when-to-use guidance, no exclusions, and no reference to any alternative. With openai_get_model, openai_list_models, and openai_recommend_model all in the sibling set, the description should say when inspection is preferable to a plain metadata fetch. The agent is left to infer usage from the word "inspect".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_list_modelsB
List model IDs visible to this API key. Filter shutdown models unless explicitly requested.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| include_shutdown | 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 supplied, so the description carries the full behavioral burden. It does disclose one meaningful trait beyond structure: shutdown models are filtered out by default unless explicitly requested, which is real behavioral context. It says nothing about the API key's permission scoping beyond 'visible', rate limits, or how the 1000-model default limit interacts with the result set.
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 resource and scope, then the one non-obvious default behavior. Nothing is 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?
An output schema exists, so return values need no explanation, and the tool is a simple list operation. However, with zero schema description coverage the description should have covered the meaning of 'query' and 'limit'; that omission leaves an agent guessing on two of three inputs.
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 three parameters are bare. The description only illuminates include_shutdown (default filtering of shutdown models); it never explains what 'query' matches against (ID substring? owner? capability?) or what 'limit' means against a default of 1000. Two of three parameters remain undefined in both the schema and the prose.
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 ('List model IDs') plus an explicit scope ('visible to this API key'), which cleanly separates it from the singular siblings openai_get_model and openai_inspect_model. It does not name those siblings outright, 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?
Usage is implied: reach for this when you need an inventory of available models, and set include_shutdown when shutdown models are actually wanted. There is no explicit statement of when not to use it or a named alternative (e.g. openai_recommend_model for picking a model), so guidance is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_moderate_contentC
Classify text or supported image inputs with the Moderations API.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | omni-moderation-latest | |
| input_json | No | ||
| input_text | 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 behavioral burden and does very little with it. It does not say whether the operation is read-only, what happens with the empty-string defaults, how input_text and input_json relate, or what constraints apply to supported image inputs.
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 single sentence is front-loaded and contains no filler. It is efficient, though its brevity contributes to gaps elsewhere rather than being a structural flaw in itself.
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. However, with three parameters at 0% schema coverage, no annotations, no required parameters, and empty-string defaults that are likely to fail, the definition is too thin 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 for three undocumented parameters. It hints that text or image inputs are supported, but does not explain 'model', 'input_json', or 'input_text', nor does it clarify their formats or mutual exclusivity.
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, 'Classify', with a named resource, 'text or supported image inputs', and identifies the Moderations API. It clearly differs from sibling tools such as chat completions, image generation, or embeddings, though it does not explicitly contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the tool is used for moderation-style classification but gives no explicit when-to-use guidance, no exclusions, and no alternatives. An agent is left to infer that this is the right tool for content moderation rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_recommend_modelB
Recommend an available model for a supported task using the live model list and curated priorities.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| budget_preference | No | balanced |
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 supplied, so the description carries the full burden. It does disclose something useful: the recommendation is derived from a live model list plus curated priorities, implying the output shifts as availability changes and is not a static hardcoded mapping. It does not state that the operation is read-only, whether it makes network calls, or any rate/latency characteristics.
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 and no redundancy. It is efficient, though the terseness is partly responsible for the missing parameter and usage detail.
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 tool is simple with only two parameters. However, for a recommendation tool the domain of valid 'task' values and the accepted 'budget_preference' values are the core information an agent needs and are entirely absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does not: neither 'task' nor 'budget_preference' is explained. Critically, budget_preference has a default of 'balanced' but no enum or listed valid values, and 'supported task' is undefined, leaving the agent to guess acceptable inputs.
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 ('recommend an available model') and adds the mechanism ('live model list and curated priorities'), which distinguishes it from siblings like openai_list_models and openai_get_model. The only dilution is the phrase 'for a supported task', which doesn't define what a supported task is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool to call when choosing which model to use, but there is no explicit statement of when to prefer it over openai_list_models or openai_get_model, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_safe_api_requestC
Advanced JSON REST call restricted to approved model and inference endpoints; no destructive methods.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| method | Yes | ||
| body_json | No | ||
| query_json | 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 supplied, so the description carries the full behavioral burden. It discloses an endpoint allowlist and a no-destructive-methods rule, which is real signal, but says nothing about auth requirements, which HTTP methods are actually permitted, error/response behavior, or rate limits — critical gaps for an escape-hatch REST 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?
One sentence, front-loaded with the core identity and followed by the two governing constraints. Only "Advanced" fails to earn 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 needn't be explained, but for a generic, unrestricted-shape REST escape hatch with no annotations the agent still cannot tell which paths/methods will be rejected or what the allowlist covers. That is the single most important thing to know before invoking it, and it is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no per-parameter detail, but the schema is fully self-documenting: method, path, body_json, and query_json are self-explanatory names with 0% description coverage yet intuitive semantics. The phrase "JSON REST call" reinforces the format expectation for the two JSON parameters. A baseline of 4 is appropriate where the schema needs no elaboration.
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 the resource class ("approved model and inference endpoints") and the operation type ("JSON REST call"), which separates it from the task-specific siblings, but "Advanced" is filler and the verb is generic — it never says what a caller would actually do with it (e.g., hit endpoints not covered by dedicated 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?
It states a negative constraint ("no destructive methods") which is a partial when-not, but gives no guidance on when to prefer this over the 17 sibling tools that wrap the same endpoints, and no prerequisites for what counts as an "approved" endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_transcribe_audioC
Transcribe a local audio/video file using the Audio Transcriptions API.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | gpt-transcribe | |
| prompt | No | ||
| language | No | ||
| file_path | Yes | ||
| response_format | No | json |
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 provides almost nothing: no mention of size limits, supported formats, cost, latency, or whether the call is synchronous. The only behavioral signal is that the input file is local rather than already uploaded.
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 zero filler. Nothing is redundant or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a 5-parameter transcription tool with no annotations and 0% schema coverage, the definition omits essential operational details like format constraints, model selection guidance, and language handling.
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 5 parameters, so the description must compensate and largely does not. 'Local audio/video file' maps loosely to file_path, but model, prompt, language, and response_format receive no explanation of valid values or effects.
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: 'Transcribe a local audio/video file', plus names the backing API. It is clearly distinct from siblings like openai_generate_speech (TTS) or openai_create_realtime_translation_secret, though it never explicitly contrasts itself with openai_upload_file.
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 when-to-use or when-not-to-use guidance, no prerequisites, and no mention of the alternative workflow implied by the sibling openai_upload_file. The phrase 'local audio/video file' hints that file_path is a filesystem path rather than a file ID, but that is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openai_upload_fileB
Upload a local file to OpenAI Files for Responses input. Requires explicit confirm_upload=true.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| confirm_upload | 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. It usefully discloses a confirmation gate, implying a mutating, persistent side effect, but says nothing about what is created server-side, whether the file persists or can be deleted, size/format restrictions, or what happens when confirm_upload is false — all critical for an upload 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 by the hard prerequisite; no filler. It is arguably too terse rather than padded, which is a different problem from verbosity.
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 description is not required, and the two-parameter surface is small. Still, a mutating upload tool with zero annotations leaves the agent without side-effect, persistence, or constraint information that would matter before invoking it, so it is not fully 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 coverage is 0%, so the description must compensate for both parameters. It gives real meaning for confirm_upload (must be true, i.e., a deliberate opt-in guard) but adds almost nothing for file_path beyond 'local file', leaving path format, relative vs absolute, and constraints undocumented in both schema and prose.
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 (upload) and resource (a local file into OpenAI Files) plus the intended consumer (Responses input), which lets an agent separate this from create_response, create_chat_completion, and the model-inspection siblings. It stops short of 5 only because it does not explicitly name the follow-up tool or contrast with any other file-related path.
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 phrase 'for Responses input' implies the context in which this should be used, and 'Requires explicit confirm_upload=true' gives a gating prerequisite. There is no when-not guidance, no mention of size or format limits, and no statement of what to do if the upload is not needed (e.g., inline content), so the agent must infer the boundaries.
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.
18 tool updates
v0.1.2- First observed
openai_create_chat_completion - First observed
openai_create_embeddings - First observed
openai_create_live_session - First observed
openai_create_realtime_client_secret - First observed
openai_create_realtime_translation_secret - First observed
openai_create_response - First observed
openai_edit_image - First observed
openai_generate_image - First observed
openai_generate_speech - First observed
openai_get_model - First observed
openai_health_check - First observed
openai_inspect_model - First observed
openai_list_models - First observed
openai_moderate_content - First observed
openai_recommend_model - First observed
openai_safe_api_request - First observed
openai_transcribe_audio - First observed
openai_upload_file
TDQS
Scored across 18 tools
Most tools map to clearly distinct resources/actions (image generate vs edit, transcribe vs speech, moderation vs embeddings). There is mild overlap between openai_inspect_model, openai_get_model, openai_list_models, and openai_recommend_model, and between openai_create_response, openai_create_chat_completion, and openai_safe_api_request, but descriptions do enough to separate them. The three realtime secret/session tools are close cousins but still distinguishable by intent.
All names share the openai_ prefix and overwhelmingly follow verb_noun (create_response, generate_image, transcribe_audio, list_models). A few deviate in form—openai_health_check and openai_safe_api_request read as noun/adjective phrases rather than verb_noun—but the pattern remains predictable overall.
18 tools is on the heavier side, but the server spans models, files, responses, chat, images, audio, embeddings, moderation, and realtime, so each tool covers a genuinely different API surface. Only the model-introspection group (inspect/get/list/recommend) feels slightly padded.
Core inference surfaces are well covered, but file handling is a dead end: openai_upload_file has no list, retrieve, or delete counterpart. Broader OpenAI lifecycle areas such as batches, fine-tuning, and vector stores/assistants are absent, so agents hitting those needs will fall back to safe_api_request or fail.
Maintenance
Related MCP Connectors
Chat, image, video, and audio models from many vendors behind one remote MCP server and one key.
Connect MCP clients to 2,000+ AI models without managing provider API keys.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Related MCP Servers
- -licenseCqualityNot gradedmaintenanceEnables interaction with OpenAI-compatible APIs (like Ollama) through MCP tools. Provides access to chat completions, model listings, and embeddings generation from local or remote OpenAI-style endpoints.3-
- 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-
- FlicenseNot gradedqualityBmaintenanceEnables agents to discover, evaluate, and serve task-specialist models (embeddings, reranking, classification, extraction) with OpenAI-compatible endpoints and MCP tools for routing, embedding, reranking, and extraction.-
- AlicenseAqualityBmaintenanceIntegrates OpenAI APIs into MCP-compatible clients, providing tools for text generation, chat completions, model discovery, image creation/editing, audio transcription, speech synthesis, embeddings, and content moderation.9150 npmMIT