Zed 1.23.2 optional MCP fields fix: read Sume's tools_schema anyway

Zed 1.23.2 fixed OpenAI model calls to MCP servers that treated optional fields as required. For Sume, tools_schema shows which fields are required.

4 min readSume
All posts

If a Sume tool call from Zed failed because a model filled in an optional field it should have left out, update to Zed 1.23.2, then check the tool contract with tools_schema. Zed's stable release notes for October 7, 2026 say it fixed issues where OpenAI model tool calls to MCP servers treated optional fields as required, causing errors. The fix is in the client; Sume's contract stays the same.

What the release says

The Zed fact comes from the Zed stable releases page (read 2026-10-07). The Sume tools are listed with tools_list, and one tool's input contract is returned by tools_schema, as described on MCP tools and gates.

Where the contract lives

Different clients convert JSON Schema in different ways, so the same Sume tool can behave differently across editors. A model that sees a field in the schema may send an empty value instead of leaving it out.

Required against optional, and where to read it (read 2026-10-07)
ItemWhere it is definedHow to check
Tool names and descriptionstools_listAsk the agent to list tools for your credential
Input contract of one tooltools_schemaAsk for the schema of that tool by name
Which fields are requiredThe required list in the schemaDo not infer it from a client's form view
idempotency_key on paid callsRequired for write and paid callsAlways send one, with a value you generate

When a call fails

When a call fails, take these steps before you retry:

  • Read the error text. A schema rejection names the field.
  • Call tools_schema for that tool and compare it with the arguments the model sent.
  • Resend with only the required fields and any optional ones you mean to set. Reuse the same idempotency_key if the failed attempt may have reached Sume.

Retries

If a call is rejected, no job id comes back, so there is nothing to wait on. A retry after a timeout is different: use the same key, so Sume returns the original job and not a second one.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume