Summary
help (and likely other zero-argument MCP tools) are exposing inputSchema as {"type":"object"} without an explicit properties field.
OpenAI/Codex rejects the converted function schema with:
Invalid schema for function 'inboxapi__help': In context=(), object schema missing properties.
Local validation
I checked the CLI proxy code path locally. tools/list responses are rewritten, but schemas that already look like a bare object are passed through without normalization. That means a no-arg MCP tool can still surface as:
which becomes an OpenAI function parameters object missing properties.
Expected
For no-argument tools, the schema should include explicit empty properties, for example:
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
Impact
This blocks adding InboxAPI as an MCP server in OpenClaw/Codex whenever a tool like help is converted into an OpenAI-style function tool.
Notes
It may be worth normalizing all no-argument MCP tools, not just help, so every inputSchema that is logically empty still emits an explicit empty properties object.
Summary
help(and likely other zero-argument MCP tools) are exposinginputSchemaas{"type":"object"}without an explicitpropertiesfield.OpenAI/Codex rejects the converted function schema with:
Local validation
I checked the CLI proxy code path locally.
tools/listresponses are rewritten, but schemas that already look like a bare object are passed through without normalization. That means a no-arg MCP tool can still surface as:{ "type": "object" }which becomes an OpenAI function
parametersobject missingproperties.Expected
For no-argument tools, the schema should include explicit empty properties, for example:
{ "type": "object", "properties": {}, "required": [], "additionalProperties": false }Impact
This blocks adding InboxAPI as an MCP server in OpenClaw/Codex whenever a tool like
helpis converted into an OpenAI-style function tool.Notes
It may be worth normalizing all no-argument MCP tools, not just
help, so everyinputSchemathat is logically empty still emits an explicit emptypropertiesobject.