Codex Delegate MCP
Delegates coding work to the OpenAI Codex CLI, with tools to run tasks, cancel them, and diagnose setup.
delegate — hand a coding task to Codex in one of four modes:
agent(implement changes),plan(return a structured plan),ask(answer questions), orreview(review uncommitted work, a base branch, or a commit). Takes aspecbrief and an existingworkspace, plus optional model, reasoning effort, Fast mode, web search, timeout, andresumeThreadIdto continue a prior thread.cancel — stop active runs by
delegationId, bythreadId, or all of them; waits for settlement and warns if a process survives the kill deadline.doctor — diagnose setup issues (plugin/CLI/login, recursion, workspace) and, with
deep, check quota help and the model catalog.
Delegates coding tasks to the OpenAI Codex CLI, enabling agents to plan, implement, ask questions, and review code, with structured results, thread management, and cancellation.
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., "@Codex Delegate MCPRefactor auth module to async/await and add unit tests"
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.
Codex Delegate
Stop burning your frontier agent's limits on boilerplate.
Delegate implementation to the OpenAI Codex CLI — your agent writes the brief and reviews the diff.
Use your best coding agent where its judgment matters most: understanding the task, shaping the plan, and reviewing the result.
Codex Delegate is the MCP bridge that lets Claude Code, Cursor, Copilot — or any MCP client — hand implementation to the OpenAI Codex CLI, then get a clean, structured result back for review.

🧠 Frontier quality, kept
Your assistant does what frontier models are actually for: understands the task, writes a precise brief, reviews the finished diff. Codex holds its own as the implementer — guided and checked by a smarter orchestrator. The result reads like frontier work, because a frontier model planned it and signed off on it.
Related MCP server: harness-bridge
⚡ Done faster
Codex tears through multi-file edits while a frontier chat model would still be streaming the first file. You delegate, keep working with your assistant, and the diff shows up done.
🔋 Your limits stop being the bottleneck
Delegated work runs on the OpenAI Codex CLI and its own usage — separate from your orchestrator's chat quota, though the Codex side still bills its own way. Your Claude, Cursor, or Copilot subscription spends tokens on the brief and the review; Codex does the grinding. On API? That's the per-token grind moved off your main bill.


Features
📦 One result you can review — a compact JSON block: the final answer,
status, the files Codex's edit tools reported changing, cumulative thread token counts, and thethreadIdto continue from. Fields that carry no signal are omitted.📋 Plan first, then build it on the same thread —
planreturns schema-validated steps for you to approve, andagentimplements them.askanswers questions.reviewruns Codex's own reviewer over uncommitted work, a base branch, or a single commit.🧵 Resume — continue a Codex thread with
resumeThreadId.resumed: falsetells you the context did not carry over.🧑🤝🧑 Run several, cancel cleanly — the same question across models, or independent workers on independent directories.
cancelwaits for the exit and warns when a process outlives the kill deadline.🤝 One-command install — Claude Code, GitHub Copilot CLI, Cursor and VS Code take it as a plugin, with a skill that teaches your agent how to delegate well. Cursor and VS Code install the server in one click; JetBrains, Devin Desktop (Windsurf), Visual Studio and the rest add the stdio server in settings.
🩺
doctor— tells you exactly what's missing if setup isn't right.
Install
You need Node.js 20+ and the OpenAI Codex CLI, already logged in (codex login).
Claude Code
/plugin marketplace add andreilungeanu/codex-delegate-mcp
/plugin install codex-delegate@codex-delegate-mcpThen just ask:
Delegate to Codex: migrate src/api from callbacks to async/await and update the tests, then walk me through what changed.
That's the whole loop — Claude writes the brief, Codex grinds through the files, Claude walks you through the diff.
Cursor
Or add it under Customize → MCPs in the sidebar, or in ~/.cursor/mcp.json (every project) or .cursor/mcp.json (this project):
{
"mcpServers": {
"codex-delegate": {
"command": "npx",
"args": ["-y", "codex-delegate-mcp"]
}
}
}Then ask Cursor to delegate implementation to Codex the same way.
GitHub Copilot CLI
copilot plugin install andreilungeanu/codex-delegate-mcpOr through the marketplace, the same way as Claude Code:
copilot plugin marketplace add andreilungeanu/codex-delegate-mcp
copilot plugin install codex-delegate@codex-delegate-mcpThe server alone, without the skill: copilot mcp add codex-delegate -- npx -y codex-delegate-mcp.
More clients
{
"servers": {
"codex-delegate": {
"type": "stdio",
"command": "npx",
"args": ["-y", "codex-delegate-mcp"]
}
}
}Or run Chat: Install Plugin From Source with this repository's URL (needs the chat.plugins.enabled setting).
Under Settings → Tools → AI Assistant → Model Context Protocol (MCP), click Add and paste this JSON:
{
"mcpServers": {
"codex-delegate": {
"command": "npx",
"args": ["-y", "codex-delegate-mcp"]
}
}
}This config is for Devin Local, the default agent (Local 3.6+). On Windows the file is %APPDATA%\devin\mcp_config.json. Legacy Cascade and older Windsurf builds read ~/.codeium/windsurf/mcp_config.json.
{
"mcpServers": {
"codex-delegate": {
"command": "npx",
"args": ["-y", "codex-delegate-mcp"]
}
}
}Heads-up: Devin Desktop's Cascade agent caps you at 100 tools across all servers.
{
"servers": {
"codex-delegate": {
"type": "stdio",
"command": "npx",
"args": ["-y", "codex-delegate-mcp"]
}
}
}Visual Studio 2022 needs 17.14+. Note the top-level key is servers, not mcpServers. A .mcp.json in the solution directory scopes it to that solution.
OpenCode does not use mcpServers. Local servers go under mcp, with type: "local" and command as one array:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"codex-delegate": {
"type": "local",
"command": ["npx", "-y", "codex-delegate-mcp"],
"enabled": true
}
}
}This is the v1 shape, which OpenCode v2 still reads (v2's native form is mcp.servers).
{
"mcpServers": {
"codex-delegate": {
"command": "npx",
"args": ["-y", "codex-delegate-mcp"]
}
}
}In the IDE: … on the agent panel → MCP Servers → Manage MCP Servers → View raw config. Antigravity 2.0, IDE, and CLI share the Gemini config file. You may need to approve the server's tools on first run.
Same shape as OpenCode: type: "local" and command as one array.
{
"mcp": {
"codex-delegate": {
"type": "local",
"command": ["npx", "-y", "codex-delegate-mcp"],
"enabled": true
}
}
}In the VS Code extension: Settings → MCP → Add Server → Local (stdio). On Windows, if npx is not found, use command cmd with arguments /c, npx, -y, codex-delegate-mcp.
{
"context_servers": {
"codex-delegate": {
"command": "npx",
"args": ["-y", "codex-delegate-mcp"],
"env": {}
}
}
}Zed's native agent uses this, and Zed forwards these servers to external agents over ACP; those agents may also read their own MCP config.
Kiro and any other MCP client
Add the following server to the client's MCP config — for Kiro, ~/.kiro/settings/mcp.json (user) or .kiro/settings/mcp.json (workspace):
{
"mcpServers": {
"codex-delegate": {
"command": "npx",
"args": ["-y", "codex-delegate-mcp"]
}
}
}MIT © Andrei Lungeanu
Configuration · Security · Privacy · Terms · Changelog
Available Tools
3 toolscancelADestructiveIdempotent
Cancel active runs. delegationId selects one (announced in progress before spawn — the only handle if a run wedges at startup), threadId all on its thread, neither all. Waits for settlement; if a process tree survives the kill deadline, it still returns and the delegate result warns. Status: cancelled, nothing-active, or not-found (no active run with this ID).
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | No | ||
| delegationId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds meaningful behavioral context: it waits for settlement, returns even if a process tree survives the kill deadline, and warns via the delegate result. It also enumerates the three possible statuses. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no filler. The most important selection semantics are front-loaded, and the status outcomes are compactly listed at the end. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a cancellation tool with no output schema, the description covers selection semantics, wait behavior, failure behavior, and status outcomes. It does not describe the exact shape of the return value, but the status list and warning note give an agent enough to interpret the result. The sibling tools are simple enough that no further context is needed.
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 carry the parameter semantics, and it does: delegationId selects one run, threadId selects all on a thread, and neither selects all. It also explains the special significance of delegationId as the only handle for a wedged startup. This fully compensates for the empty schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Cancel active runs') and immediately distinguishes the two selection modes (delegationId vs threadId) and the all-runs fallback. It also names the sibling context by explaining when delegationId is the only handle, which clearly separates it from delegate and doctor.
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 explicitly states when to use delegationId (announced in progress before spawn, the only handle if a run wedges at startup), when to use threadId (all runs on its thread), and when to use neither (all active runs). This is direct when-to-use guidance with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delegateADestructive
Delegate a coding task to OpenAI Codex. Never run codex from the shell — use this tool. Check status before trusting result — a run that spawns then fails returns normally. Keep model, reasoningEffort and fast at their defaults unless the user asks. See the delegate skill.
| Name | Required | Description | Default |
|---|---|---|---|
| fast | No | Codex Fast mode; higher credit use. | |
| mode | No | agent implements; plan returns a structured plan; ask answers; review runs native review. | agent |
| spec | Yes | Brief with goal, scope, fixed decisions quoted exactly, and acceptance criteria; reference files instead of pasting code. | |
| model | No | Codex model id. doctor deep:true lists every id. | gpt-6-luna |
| timeoutMs | No | Whole-run cap in ms (default 1h). Mid-turn silence is allowed; startup has a separate 60s first-output deadline. | |
| webSearch | No | Codex's built-in web search. | |
| workspace | Yes | Codex's working directory; not confinement. Must already exist — never create one for the call. | |
| reviewTarget | No | Required in review; forbidden otherwise: uncommitted, base branch, or commit. | |
| resumeThreadId | No | Thread to continue. Reuse its workspace. Forbidden with review. | |
| reasoningEffort | No | Codex reasoning level. doctor deep:true lists each model's levels. | xhigh |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/openWorld/non-idempotent, so the bar is lower, and the description still adds high-value behavior: a run that spawns then fails returns normally, so the agent must poll status rather than trust the return. It does not explain result shape, but that is largely covered by the schema's timeout/workspace semantics.
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?
Five short sentences, front-loaded with purpose, then the routing rule, then the failure trap, then the defaults caveat, then a pointer to deeper docs. Every sentence carries a distinct instruction with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter destructive, open-world tool with no output schema, the description supplies the critical operational nuance (async failure mode, do-not-use-shell, don't override defaults) and defers detail to the delegate skill. Adequate, though a hint about latency/ongoing-run handling or auth expectations would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter already documents its meaning, defaults, and constraints (workspace must exist, timeout semantics, reviewTarget exclusivity). The description only restates the default-preservation advice for model/reasoningEffort/fast, adding no syntax or format detail beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delegate a coding task to OpenAI Codex') and immediately scopes it against the competing approach ('Never run codex from the shell — use this tool'). It is unmistakably distinct from the siblings cancel and doctor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule away from the shell and a pre-condition for trusting output ('Check status before trusting result'), plus default-preservation guidance for model/reasoningEffort/fast. It stops short of stating when this tool is preferred over cancel/doctor, though those are self-evidently different operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doctorARead-onlyIdempotent
Diagnose plugin/CLI/login, recursion, and workspace (default: server cwd). deep adds no-quota help and model-catalog checks.
| Name | Required | Description | Default |
|---|---|---|---|
| deep | No | ||
| workspace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description only needs to add context beyond safety. It adds useful behavior: workspace defaults to server cwd and deep enables no-quota help plus model-catalog checks. It does not describe the output format or clarify ambiguous terms like 'recursion', but the safety profile is already covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first front-loads the diagnostic targets and workspace default, the second covers the 'deep' flag concisely. The phrasing is slightly cryptic, especially 'no-quota help', which prevents 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?
With no output schema, the description should clarify what a diagnosis produces or returns, but it does not. Both parameters and the safe read-only behavior are addressed, yet ambiguous terms such as 'recursion' and 'no-quota help' and the lack of any mention of the tool's output leave meaningful 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%, so the description must compensate for documenting the parameters. It explains 'deep' as adding no-quota help and model-catalog checks, and it gives the workspace default as server cwd. It stops short of specifying workspace format or the exact meaning of 'no-quota help', but both parameters receive meaningful semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb 'Diagnose' and names concrete targets: plugin/CLI/login, recursion, and workspace. It also distinguishes the 'deep' mode by what it adds. It does not explicitly connect to the annotation title's 'Codex delegation setup' or differentiate from sibling tools, so it is not 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?
The verb 'Diagnose' and the list of target areas imply when the tool should be used, and 'deep adds no-quota help and model-catalog checks' gives a condition for enabling extra checks. However, it does not explicitly say when to use doctor versus the sibling tools delegate/cancel.
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.
1 tool update
v2.5.0- Changed
delegate6 fields changed- changed
Input schema / properties / model / defaultPrevious value: -"gpt-5.6-luna"New value: +"gpt-6-luna" - changed
Input schema / properties / model / descriptionPrevious value: -"Codex model id: gpt-5.6-luna, gpt-6-luna, gpt-6-sol, gpt-6-astra, gpt-5.6-sol, gpt-5.6-terra, gpt-5.5."New value: +"Codex model id. doctor deep:true lists every id." - changed
Input schema / properties / reasoningEffort / descriptionPrevious value: -"minimal is rejected by every published model; none is rejected by gpt-6-astra and accepted elsewhere, though the catalog omits it."New value: +"Codex reasoning level. doctor deep:true lists each model's levels." - removed
Input schema / properties / reasoningEffort / enumRemoved value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max", - "ultra" -] - removed
Input schema / properties / reviewTarget / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "uncommitted", - "type": "string" - } - }, - "required": [ - "kind" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "branch": { - "type": "string" - }, - "kind": { - "const": "base", - "type": "string" - } - }, - "required": [ - "kind", - "branch" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "kind": { - "const": "commit", - "type": "string" - }, - "sha": { - "type": "string" - } - }, - "required": [ - "kind", - "sha" - ], - "type": "object" - } -] - added
Input schema / properties / reviewTarget / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "kind": { + "const": "uncommitted", + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "branch": { + "type": "string" + }, + "kind": { + "const": "base", + "type": "string" + } + }, + "required": [ + "kind", + "branch" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "kind": { + "const": "commit", + "type": "string" + }, + "sha": { + "type": "string" + } + }, + "required": [ + "kind", + "sha" + ], + "type": "object" + } +]
1 tool update
v2.3.0- Changed
delegate2 fields changed- changed
Input schema / properties / model / descriptionPrevious value: -"Codex model id: gpt-5.6-luna, gpt-5.6-sol, gpt-5.6-terra, gpt-5.5, gpt-5.4, gpt-5.4-mini."New value: +"Codex model id: gpt-5.6-luna, gpt-6-luna, gpt-6-sol, gpt-6-astra, gpt-5.6-sol, gpt-5.6-terra, gpt-5.5." - changed
Input schema / properties / reasoningEffort / descriptionPrevious value: -"minimal is rejected by every published model; none is accepted though the catalog omits it."New value: +"minimal is rejected by every published model; none is rejected by gpt-6-astra and accepted elsewhere, though the catalog omits it."
1 tool update
v2.2.1- Changed
delegate1 field changed- changed
Input schema / properties / reasoningEffort / descriptionPrevious value: -"gpt-5.6-* reject minimal; older models reject none."New value: +"minimal is rejected by every published model; none is accepted though the catalog omits it."
1 tool update
v2.0.0- Changed
delegate6 fields changed- changed
Input schema / properties / model / defaultPrevious value: -"gpt-5.6-terra"New value: +"gpt-5.6-luna" - changed
Input schema / properties / model / descriptionPrevious value: -"Codex model id: gpt-5.6-terra, gpt-5.6-sol, gpt-5.6-luna, gpt-5.5, gpt-5.4, gpt-5.4-mini and more."New value: +"Codex model id: gpt-5.6-luna, gpt-5.6-sol, gpt-5.6-terra, gpt-5.5, gpt-5.4, gpt-5.4-mini." - changed
Input schema / properties / reasoningEffort / defaultPrevious value: -"high"New value: +"xhigh" - changed
Input schema / properties / reasoningEffort / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / workspace / descriptionPrevious value: -"Codex's working directory; not confinement. Must already exist — never create one for the call. Defaults to the server cwd, often not the project root under npx/plugin. Required on resume: resume has no --cd."New value: +"Codex's working directory; not confinement. Must already exist — never create one for the call." - changed
Input schema / requiredPrevious value: -[ - "spec" -]New value: +[ + "spec", + "workspace" +]
3 tool updates
v1.21.1- Changed
cancel2 fields changed- removed
Input schema / properties / delegationId / descriptionRemoved value: -"Cancel this one delegation, by the id announced in its progress stream" - removed
Input schema / properties / threadId / descriptionRemoved value: -"Cancel every delegation running on this Codex thread"
- Changed
delegate11 fields changed- changed
Input schema / properties / fast / descriptionPrevious value: -"Codex Fast mode (service_tier=fast) — higher credit use"New value: +"Codex Fast mode; higher credit use." - added
Input schema / properties / mode / descriptionAdded value: +"agent implements; plan returns a structured plan; ask answers; review runs native review." - changed
Input schema / properties / model / descriptionPrevious value: -"Codex model id"New value: +"Codex model id: gpt-5.6-terra, gpt-5.6-sol, gpt-5.6-luna, gpt-5.5, gpt-5.4, gpt-5.4-mini and more." - removed
Input schema / properties / networkRemoved value: -{ - "default": true, - "description": "Web search, and network from Codex's shell in agent mode. false seals the run", - "type": "boolean" -} - changed
Input schema / properties / reasoningEffort / descriptionPrevious value: -"Reasoning effort. gpt-5.6-* reject minimal; older models reject none"New value: +"gpt-5.6-* reject minimal; older models reject none." - changed
Input schema / properties / resumeThreadId / descriptionPrevious value: -"Resume an existing Codex thread instead of starting a new one"New value: +"Thread to continue. Reuse its workspace. Forbidden with review." - changed
Input schema / properties / reviewTarget / descriptionPrevious value: -"Required in review mode: uncommitted, base branch, or commit sha"New value: +"Required in review; forbidden otherwise: uncommitted, base branch, or commit." - changed
Input schema / properties / spec / descriptionPrevious value: -"Task brief: goal, scope, decisions already made (quote the user's exact values), acceptance criteria. Point at files to read rather than pasting code."New value: +"Brief with goal, scope, fixed decisions quoted exactly, and acceptance criteria; reference files instead of pasting code." - changed
Input schema / properties / timeoutMs / descriptionPrevious value: -"Hard-cap timeout in milliseconds (default 1h). A long silent command is not a timeout; only the 60s spawn-to-first-output deadline is."New value: +"Whole-run cap in ms (default 1h). Mid-turn silence is allowed; startup has a separate 60s first-output deadline." - added
Input schema / properties / webSearchAdded value: +{ + "default": true, + "description": "Codex's built-in web search.", + "type": "boolean" +} - changed
Input schema / properties / workspace / descriptionPrevious value: -"Working directory for Codex. Optional; defaults to the server process cwd, which for npx and plugin launches is not necessarily your project root — pass it explicitly. Smallest directory holding the task's files; none → project root. Must already exist — never create one for the call. Required when resuming: codex exec resume has no --cd."New value: +"Codex's working directory; not confinement. Must already exist — never create one for the call. Defaults to the server cwd, often not the project root under npx/plugin. Required on resume: resume has no --cd."
- Changed
doctor1 field changed- removed
Input schema / properties / deep / descriptionRemoved value: -"When true, probe codex exec/review/resume --help surfaces"
3 tool updates
v1.18.1- Changed
cancel1 field changed- changed
Output schema / (root)Previous value: -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "status": { - "enum": [ - "cancelled", - "nothing-active", - "not-running", - "not-found" - ], - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" -}New value: +null
- Changed
delegate3 fields changed- changed
Input schema / properties / reasoningEffort / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" +] - changed
Input schema / properties / workspace / descriptionPrevious value: -"Working directory for Codex (defaults to cwd)"New value: +"Working directory for Codex. Optional; defaults to the server process cwd, which for npx and plugin launches is not necessarily your project root — pass it explicitly. Smallest directory holding the task's files; none → project root. Must already exist — never create one for the call. Required when resuming: codex exec resume has no --cd." - changed
Output schema / (root)Previous value: -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "cliVersion": { - "type": "string" - }, - "delegationId": { - "type": "string" - }, - "exitCode": { - "type": "integer" - }, - "filesReportedByEditTools": { - "items": { - "type": "string" - }, - "type": "array" - }, - "plan": { - "additionalProperties": false, - "properties": { - "overview": { - "type": "string" - }, - "steps": { - "items": { - "additionalProperties": false, - "properties": { - "detail": { - "type": "string" - }, - "title": { - "type": "string" - } - }, - "required": [ - "title", - "detail" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "overview", - "steps" - ], - "type": "object" - }, - "reason": { - "enum": [ - "cancelled", - "startup-timeout", - "hard-cap", - "agent-error", - "died-mid-turn", - "exit-nonzero" - ], - "type": "string" - }, - "result": { - "type": "string" - }, - "resultSource": { - "const": "stream-fallback", - "type": "string" - }, - "resumed": { - "type": "boolean" - }, - "status": { - "enum": [ - "completed", - "failed", - "interrupted" - ], - "type": "string" - }, - "threadId": { - "type": "string" - }, - "usage": { - "additionalProperties": false, - "properties": { - "cacheWriteInputTokens": { - "type": "number" - }, - "cachedInputTokens": { - "type": "number" - }, - "inputTokens": { - "type": "number" - }, - "outputTokens": { - "type": "number" - }, - "reasoningOutputTokens": { - "type": "number" - } - }, - "type": "object" - }, - "warnings": { - "items": { - "type": "string" - }, - "type": "array" - }, - "workspace": { - "type": "string" - } - }, - "required": [ - "result", - "status", - "workspace" - ], - "type": "object" -}New value: +null
- Changed
doctor1 field changed- changed
Output schema / (root)Previous value: -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "codex": { - "additionalProperties": true, - "properties": { - "found": { - "type": "boolean" - } - }, - "required": [ - "found" - ], - "type": "object" - }, - "plugin": { - "additionalProperties": true, - "properties": { - "version": { - "type": "string" - } - }, - "required": [ - "version" - ], - "type": "object" - }, - "runtime": { - "additionalProperties": true, - "properties": { - "node": { - "type": "string" - }, - "platform": { - "type": "string" - } - }, - "required": [ - "node", - "platform" - ], - "type": "object" - }, - "warnings": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "plugin", - "codex", - "runtime", - "warnings" - ], - "type": "object" -}New value: +null
2 tool updates
v1.14.1- Changed
cancel3 fields changed- added
Input schema / properties / delegationIdAdded value: +{ + "description": "Cancel this one delegation, by the id announced in its progress stream", + "type": "string" +} - changed
Input schema / properties / threadId / descriptionPrevious value: -"Cancel only when this thread is active"New value: +"Cancel every delegation running on this Codex thread" - changed
Output schema / properties / status / enumPrevious value: -[ - "cancelled", - "nothing-active", - "not-owned" -]New value: +[ + "cancelled", + "nothing-active", + "not-running", + "not-found" +]
- Changed
delegate1 field changed- added
Output schema / properties / delegationIdAdded value: +{ + "type": "string" +}
3 tool updates
v1.11.0- First observed
cancel - First observed
delegate - First observed
doctor
TDQS
Scored across 3 tools
The three tools map to clearly distinct purposes: delegate starts a Codex run, cancel terminates active runs, and doctor diagnoses environment/plugin health. There is no realistic chance of selecting the wrong one for a given intent.
All three names are single lowercase imperative verbs (delegate, cancel, doctor), which is a consistent, predictable style. There's no verb_noun structure, but the convention is uniform enough to be readable.
Three tools fit a deliberately narrow delegation-focused server, with each tool earning its place (start, stop, diagnose). It is slightly thin and leaves no room for status/inspection, but is reasonable for the stated scope.
The surface covers starting, cancelling, and diagnosing runs, but there is no explicit status or list-runs tool even though delegate's description tells agents to 'check status before trusting result'. This leaves a notable gap for inspecting or enumerating runs.
Maintenance
Related MCP Connectors
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
Goal and task planning MCP for Codex and AI agents, with evidence-backed completion.
Coordinate coding agents through MCP using existing AI plans, saved work, and independent checks.
AI-powered spec-to-task decomposition and execution orchestration for coding agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP bridge for calling local coding-agent CLIs (Codex, Claude) from another agent, enabling bounded tasks like code review, verification, and bug hunting.MIT
- AlicenseAqualityAmaintenanceBridges Claude Code and OpenAI Codex through MCP, allowing cross-harness querying, code review, explanation, and implementation delegation.64 npm1MIT
- AlicenseAqualityAmaintenanceBridges multiple CLI coding agents (Codex, Cursor, OpenCode, Claude, Antigravity) into any MCP client, enabling delegation of prompts, parallel execution, and code review workflows.689 npmMozilla Public 2.0
- AlicenseAqualityAmaintenanceLocal-first multi-agent delegation and approval control for Codex via MCP, with persistent task DAG, isolated worktrees, and a web console.141MIT