What's Wrong?
add_issue_comment's inputSchema gained a top-level anyOf in v1.10.0 (introduced by #3085, fixing #3048):
"inputSchema": {
"anyOf": [
{ "required": ["body"] },
{ "required": ["reaction"] }
],
"dependentSchemas": { ... },
"properties": { ... },
"required": ["owner", "repo", "issue_number"],
"type": "object"
}
Anthropic's Claude tool-use API rejects any custom tool whose input_schema uses oneOf/allOf/anyOf at the top level:
API Error: 400 tools.N.custom.input_schema: input_schema does not support oneOf, allOf, or anyOf at the top level
Since MCP clients typically send the entire tool list in one request, this single non-conformant schema causes the whole request to fail with a 400 — even if add_issue_comment itself is never invoked in that turn.
Who hits this
Clients that eagerly forward the full MCP tool list to the Claude Messages API without sanitizing schemas first. Concretely:
Interactive Claude Code sessions are generally unaffected because they defer full tool-schema loading via Tool Search (see anthropics/claude-code#64113 and #63436), but that mitigation does not apply to headless/CI/subagent invocations, so this is a real-world breaking regression for anyone running Claude-based automation against this server.
Suggested fix
Other tools in this same release already express "at least one of A or B" without a top-level combinator, by nesting under properties/dependentSchemas instead (e.g. issue_write, projects_write, update_issue_assignees, update_issue_labels, update_issue_type). Could add_issue_comment's validation be restructured the same way?
Version
v1.10.0 (regression from v1.9.0 — introduced by #3085). The change is on main, so the latest main is affected as well.
Related
Client-side (Claude Code) issues describing the same 400 mechanism and proposing schema sanitization before forwarding:
What's Wrong?
add_issue_comment'sinputSchemagained a top-levelanyOfin v1.10.0 (introduced by #3085, fixing #3048):Anthropic's Claude tool-use API rejects any custom tool whose
input_schemausesoneOf/allOf/anyOfat the top level:Since MCP clients typically send the entire tool list in one request, this single non-conformant schema causes the whole request to fail with a 400 — even if
add_issue_commentitself is never invoked in that turn.Who hits this
Clients that eagerly forward the full MCP tool list to the Claude Messages API without sanitizing schemas first. Concretely:
claudeCLI in headless mode (claude -p), e.g. as used byanthropics/claude-code-actionin GitHub Actions withghcr.io/github/github-mcp-serverconfigured as a Docker MCP server. The 400 is request-level tool-schema validation, so it is model- and provider-independent (see Subagent/Workflow creation forwards raw MCP tool schemas → 400 on connector tool with top-level oneOf/anyOf/allOf anthropics/claude-code#63436).@anthropic-ai/claude-agent-sdkwithout a schema-sanitization layer.Interactive Claude Code sessions are generally unaffected because they defer full tool-schema loading via Tool Search (see anthropics/claude-code#64113 and #63436), but that mitigation does not apply to headless/CI/subagent invocations, so this is a real-world breaking regression for anyone running Claude-based automation against this server.
Suggested fix
Other tools in this same release already express "at least one of A or B" without a top-level combinator, by nesting under
properties/dependentSchemasinstead (e.g.issue_write,projects_write,update_issue_assignees,update_issue_labels,update_issue_type). Couldadd_issue_comment's validation be restructured the same way?Version
v1.10.0 (regression from v1.9.0 — introduced by #3085). The change is on
main, so the latestmainis affected as well.Related
Client-side (Claude Code) issues describing the same 400 mechanism and proposing schema sanitization before forwarding:
claude -preturns 400 when a connector tool has a top-level anyOf/oneOf/allOf in input_schema anthropics/claude-code#64113 (headlessclaude -p)