--- id: trustcall version: "0.0.39" license: MIT license_treatment: permissive maintenance: aging --- # trustcall — Tenacious & trustworthy tool calling built on LangGraph. License: permissive · Maintenance: aging · Downloads: 1.0M/mo ## What it is and what it does Trustcall is a LangGraph-based tool for making LLM-driven structured data extraction and updates more reliable and cost-effective. It works by asking LLMs to generate JSON patch operations (RFC 6902) instead of full JSON blobs, which simplifies the generation task and enables iterative, resilient error recovery. The package handles complex, nested Pydantic schemas, schema dictionaries, and Python functions as validation targets, and automatically retries failed extractions by prompting the LLM to generate only the patches needed to fix validation errors. The core use case is tool calling workflows—extraction, routing, and multi-step agent tasks—where naive LLM JSON generation often fails on complex nested structures or when updating existing objects. By using patches, trustcall reduces both failure rates and token costs: only the parts that failed are regenerated, not the entire output. It depends on langgraph, dydantic, and jsonpatch. Use it for: - Extract complex nested user preferences or configuration objects from conversational input without validation errors. - Update existing JSON documents (e.g., user profiles, memory records) when an LLM receives new information, avoiding unintended deletions. - Build multi-step LLM agent workflows that route between tools or call multiple tools in sequence with reliable structured output. - Reduce token costs in extraction tasks by retrying only the failed portions of a schema rather than regenerating the entire output. - Handle LLM tool calling where the schema is too complex for strict mode or standard JSON schema parsers. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Trustcall helps LLMs reliably generate and update complex JSON structures by using JSON patch operations instead of full regeneration, with built-in retry logic for validation errors. Yes, if you're building LLM-driven extraction or tool-calling workflows with complex nested schemas. The patch-based approach genuinely solves real problems (validation failures on nested structures, information loss on updates) that naive regeneration doesn't handle well. Install friction is low and there are no known vulnerabilities. Monitor the aging maintenance status, but the last release is recent enough that the package is not abandoned. ## Install pip install trustcall uv add trustcall poetry add trustcall ## Installing trustcall Before you install: Low install friction with a pure-Python wheel. Maintenance status is aging—last release was 2025-04-14 and the package is 487 days old—so monitor for updates, but no critical signals present. License in practice: MIT license is permissive; you can use, modify, and distribute trustcall freely in commercial and private projects with minimal restrictions. Quickstart: pip install trustcall from trustcall import create_extractor extractor = create_extractor(llm, tools=[YourSchema]) result = extractor.invoke("Extract data from: ...") Requires Python 3.10 or later and a configured LLM provider with API credentials. Verify before relying: - Whether the aging maintenance status (487 days since first release) signals active maintenance or dormancy. - Performance characteristics when handling deeply nested schemas or very large JSON structures. - Compatibility with LLM providers other than those shown in documentation examples. ## Package facts - License: MIT (permissive) - Python support: supports_current - Install friction: low - Maintenance: aging - Downloads: 1.0M/month (top 5,000 on PyPI) - Known vulnerabilities: none known ## Tags llm json schema extraction, structured output generation, json patch tool calling, langgraph structured extraction, llm validation error recovery, llm-tool-calling, json-extraction, structured-output [View on SkillFed](https://skillfed.io/packages/trustcall) · [View on PyPI](https://pypi.org/project/trustcall/)