Skip to content

Tool schemas contain duplicate required entries, violating JSON Schema 2020-12 #2933

@jb-chief

Description

@jb-chief

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions