OpenAI Agents empty tool arguments: Sume no-argument tools
Agents SDK 0.22.1 fails closed on empty tool arguments. Sume's no-argument tools take {}, while paid tools need idempotency_key and cannot run empty.

Sume has tools that legitimately take no arguments, and they accept an empty JSON object {}. Paid tools cannot run empty: they require idempotency_key, so an empty or missing arguments payload cannot submit paid work.
OpenAI Agents Python 0.22.1 (2026-09-08) lists "fix(core): fail closed on empty tool arguments (#4545)". The release notes give no more detail, so this post does not guess what the SDK counts as empty. Sume side: MCP tools and gates and the MCP server code, read 2026-10-01.
Which Sume tools take no arguments?
In the server code, a shared empty schema (an object with no properties and none required) backs the read tools below. Discover the current set in a session with tools_list, and fetch one contract with tools_schema.
| Tool | Purpose |
|---|---|
mcp_health | Endpoint readiness, auth source and safety posture |
tools_list | List every tool visible in the session |
account_me | Account read |
balance_get | Balance read |
catalog_list | Catalog read |
health_service, health_v1 | Health reads |
image-models_list, video-router_models | Model list reads |
Does {} count as a valid payload for them?
Yes by schema: an object with no required keys is satisfied by {}. Object schemas also set additionalProperties: false, so the contract does not allow extra keys on a no-argument tool. If your SDK treats an empty string or missing arguments as a failure, send the literal {} for these tools.
What stops an empty call from spending money?
The gate table in the docs lists idempotency_key as required on write and paid tools: a stable key for transport and dedup, not human approval. A paid call with empty arguments has no key, so it fails validation instead of submitting. dry_run=true previews admission and cost without submitting, and max_spend_usd is enforced only when provided.
How do I test this in an agent?
Call tools_schema with name set to a tool you want to inspect, then run one no-argument read such as mcp_health with {} and one paid tool without a key, and confirm the second fails. For approval flows on top of validated arguments, see OpenAI Agents Python conditional approval with Sume dry run.
Sources
Related posts
More in Developers
- OpenAI Agents SDK tool not found: what a Sume call returns
A hosted MCP tool name that differs only in - or _ gets a tool_not_found result with a Did you mean hint; a scope-hidden tool returns insufficient_scope.
- Agents SDK mcp.Client mode auto against Sume's MCP server
With MCP Python SDK v2, the Agents SDK probes the newest protocol and falls back to initialize. Sume's hosted server still serves initialize with 2025-11-25.
- OpenAI Agents Python MCP non-text content as JSON: Sume results
openai-agents-python v0.20.0 serializes non-text MCP blocks as JSON. Sume tool results are text blocks, with media delivered as URLs inside the JSON.
- OpenAI Agents Python MCP backoff ceiling vs Sume retry-after
Set the MCP retry backoff ceiling low enough that a Sume 429 with retry-after is honored first, and never retry a paid create without its idempotency key.
Written by Sume