@matingathani is attempting to deploy a commit to the Composio Team on Vercel.
A member of the Team first needs to authorize it.
This PR contains two related schema correctness fixes:
required entries rejected (#2933)The Anthropic API enforces JSON Schema 2020-12 uniqueness constraints on required arrays. When Composio tool schemas contain duplicate entries (e.g. required: ['owner', 'name', 'owner']), the Anthropic SDK rejects the entire tool batch — not just the offending tool.
Root cause: AnthropicProvider.wrapTool() passed inputParameters directly without deduplicating required.
Fix: Deduplicate via [...new Set(required)] before constructing the tool schema.
Also fixes a pre-existing typo: chacheTools → cacheTools (private field name, no public API change).
json_schema_to_model crashes on title-less schemas (#2435)Providers like LangGraph/LangChain/CrewAI pass nested object schemas without a title field. This caused pydantic.create_model(None, ...) to raise a TypeError, making the entire tool call fail.
Root cause: json_schema_to_model did model_name = json_schema.get("title") with no fallback.
Fix: Use json_schema["title"] if "title" in json_schema else "GeneratedModel" — consistent with schema_converter.py's if "title" not in schema pattern.
Note: The Python fix is also in PR #3325, which covers only the Python change. This PR includes it because the branch was built on top of it. If you prefer a clean separation, #3325 can be merged first and this branch rebased to exclude the Python commits.
wrapTool with duplicate required entries returns deduplicated arraywrapTool with no duplicates returns array unchanged"GeneratedModel"pnpm test --filter @composio/anthropic)pytest python/tests/test_schema_parser.py -v)Closes #2933 Closes #2435
@matingathani is attempting to deploy a commit to the Composio Team on Vercel.
A member of the Team first needs to authorize it.