Some tool schemas returned by the Composio API have duplicate entries in their required arrays. This violates JSON Schema 2020-12 §6.5.3 which states:
The value of this keyword MUST be an array. Elements of this array, if any, MUST be strings, and MUST be unique.
This causes Anthropic's Claude API to reject the entire tool request with:
tools.N.custom.input_schema: JSON schema is invalid. It must match JSON Schema draft 2020-12
Because Anthropic validates all tool schemas upfront and rejects the batch if any single schema is invalid, this breaks inference for all users who have the affected toolkits connected — not just calls to the offending tools.
Affected tools (as of current snapshots)
| Tool |
Duplicate entry in required |
GITHUB_UPDATE_A_REPOSITORY_VARIABLE |
items 0 and 2 are identical |
INTERCOM_ATTACH_A_CONTACT_TO_A_COMPANY |
items 0 and 1 are identical |
Reproduction
import Ajv2020 from "ajv/dist/2020";
const ajv = new Ajv2020({ strict: true, allErrors: true });
const schema = /* fetch tool schema from Composio API */;
ajv.validateSchema(schema.inputParameters);
// => false, "required must NOT have duplicate items"
Workaround
We deduplicate required arrays client-side at load time.
Suggestion
This is the second schema conformance issue we've hit (the first was #2330 — property keys exceeding 64 chars / containing $ characters). Both cause the same symptom: Anthropic rejects the schema → NoOutputGeneratedError. It might be worth adding ajv 2020-12 validation to your schema generation pipeline to catch these before they ship.
Some tool schemas returned by the Composio API have duplicate entries in their
requiredarrays. This violates JSON Schema 2020-12 §6.5.3 which states:This causes Anthropic's Claude API to reject the entire tool request with:
Because Anthropic validates all tool schemas upfront and rejects the batch if any single schema is invalid, this breaks inference for all users who have the affected toolkits connected — not just calls to the offending tools.
Affected tools (as of current snapshots)
requiredGITHUB_UPDATE_A_REPOSITORY_VARIABLEINTERCOM_ATTACH_A_CONTACT_TO_A_COMPANYReproduction
Workaround
We deduplicate
requiredarrays client-side at load time.Suggestion
This is the second schema conformance issue we've hit (the first was #2330 — property keys exceeding 64 chars / containing
$characters). Both cause the same symptom: Anthropic rejects the schema →NoOutputGeneratedError. It might be worth adding ajv 2020-12 validation to your schema generation pipeline to catch these before they ship.