- The most common silent failure is a schema/agent shape mismatch.
- Models send what humans write — a string, not an array.
- Forgiving schemas convert failed calls into completed ones.
When a tool fails for almost every agent, the cause is rarely infrastructure. It is usually a mismatch between what the schema demands and what language models naturally produce.
A common example
Your send_email tool expects to as an array of addresses. Models, trained on how humans write, send a single string. The call fails validation, the agent retries with the same string, and gives up.
// schema wants: { "to": ["a@x.com"] }
// agents send: { "to": "a@x.com" }The fix is usually forgiveness
Accept both shapes. Coerce a string into a single-element array. Accept common synonyms for enum values. Every bit of tolerance you add converts failed calls into completed ones without changing what the tool does.
How to find these
Look for tools with high call volume and low success, then read the error text on the failing calls. The pattern is almost always a shape or type the model keeps getting wrong, and it is almost always cheap to accommodate.
See this on your own server
TrackMCP turns your MCP server's calls into adoption, workflows, and outcomes. One line to install.