-
Notifications
You must be signed in to change notification settings - Fork 7.6k
Description
What version of Codex is running?
codex-cli 0.40.0
Which model were you using?
gpt-5-codex
What platform is your computer?
Darwin 24.6.0 arm64 arm
What steps can reproduce the bug?
Set up an MCP server, such as Atlassian or Grafana:
[mcp_servers.atlassian]
command = "npx"
args = ["-y", "mcp-remote", "https://mcp.atlassian.com/v1/sse"]
[mcp_servers.grafana]
command = "docker"
args = ["run", "--rm", "-i", "-e", "GRAFANA_URL", "-e", "GRAFANA_API_KEY", "mcp/grafana", "-t", "stdio", "-debug"]
[mcp_servers.grafana.env]
GRAFANA_API_KEY = "REDACTED"
GRAFANA_URL = "REDACTED"
Note that /mcp reports the createCompassComponent, createJiraIssue, editJiraIssue, and transitionJiraIssue tools as available from Atlassian, and find_error_pattern_logs and find_slow_requests from Grafana.
Run RUST_LOG=info codex exec "Provide a raw list of all functions available to Codex."
See the error messages output to STDERR.
What is the expected behavior?
Correct parsing of the responses, and tool availability.
What do you see instead?
2025-09-24T16:58:13.448202Z ERROR codex_core::openai_tools: Failed to convert "atlassian__createCompassComponent" MCP tool to OpenAI tool: Error("invalid type: map, expected a boolean", line: 0, column: 0)
2025-09-24T16:58:13.448367Z ERROR codex_core::openai_tools: Failed to convert "atlassian__createJiraIssue" MCP tool to OpenAI tool: Error("invalid type: map, expected a boolean", line: 0, column: 0)
2025-09-24T16:58:13.448392Z ERROR codex_core::openai_tools: Failed to convert "atlassian__editJiraIssue" MCP tool to OpenAI tool: Error("invalid type: map, expected a boolean", line: 0, column: 0)
2025-09-24T16:58:13.448950Z ERROR codex_core::openai_tools: Failed to convert "atlassian__transitionJiraIssue" MCP tool to OpenAI tool: Error("invalid type: map, expected a boolean", line: 0, column: 0)
Additional information
This is the JSON blob for the createJiraIssue tool:
{
"name": "createJiraIssue",
"description": "Create a new Jira issue in a given project with a given issue type.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"additional_fields": { "additionalProperties": {}, "type": "object" },
"assignee_account_id": {
"description": "During issue creation, we can set an assignee for the new issue.\n The input must be an account id of a valid user in the given cloud id.\n There is a tool \"atlassianUserInfo\" to get the account id of the current user.\n There is a tool \"lookupJiraAccountId\" to get the account ids of the existing users in Jira based on the user's display name or email address.",
"type": "string"
},
"cloudId": {
"description": "Unique identifier for an Atlassian Cloud instance in the form of a UUID. Can also be a site URL or extracted from Atlassian URLs - for example, from https://yoursite.atlassian.net/wiki/.... If not working, use the 'getAccessibleAtlassianResources' tool to find accessible Cloud IDs.",
"type": "string"
},
"description": { "description": "The content of the issue's description in Markdown format.", "type": "string" },
"issueTypeName": {
"description": "A Jira issue type categorizes and distinguishes different kinds of work being tracked within a project.\n It's a way to define what a specific piece of work represents.\n For example, in a Jira Software project, there are \"Epic\", \"Story\", \"Task\", \"Bug\" or \"Subtask\" issue types by default.\n Or in Jira Service Management, there are \"Change\", \"IT help\", \"Incident\", \"New feature\", \"Problem\", \"Service request\", \"Service request with approval\" or \"Support\" issue types by default.\n User can remove those default ones and/or define their own issue types as well.\n There is a tool \"getJiraProjectIssueTypesMetadata\" to get the available issue types in a given project.",
"type": "string"
},
"parent": {
"description": "The issue key or id of the parent issue for \"Subtask\" issue types.",
"type": "string"
},
"projectKey": {
"description": "A project key in Jira is a unique identifier (a string of letters, numbers and sometimes underscores) of a project.\n There is a tool \"getVisibleJiraProjects\" to look up which projects the user has create permission to create a new Jira issue.",
"type": "string"
},
"summary": { "type": "string" }
},
"required": ["cloudId", "projectKey", "issueTypeName", "summary"],
"type": "object"
},
"annotations": {
"title": "Create Jira issue",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false
}
}
I believe the issue is that this line expects additionalProperties to necessarily be a bool, but additionalProperties can be another JSON Schema object (reference). In the above response, .inputSchema.properties.additional_fields.additionalProperties is such an object.