All notable changes to the FTL Python SDK will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- chore(main): release cli v0.11.0 by @bowlofarugula in #264
- chore(main): release sdk-rust v0.11.0 by @bowlofarugula in #274
- chore(main): release v0.11.0 by @bowlofarugula in #271
- chore(main): release sdk-typescript v0.11.0 by @bowlofarugula in #277
- chore(main): release sdk-rust v0.11.0 by @bowlofarugula in #278
Full Changelog: https://github.com/fastertools/ftl/compare/sdk-python-v0.10.0...sdk-python-v0.11.0
- New decorator-based API with
@ftl.toolfor easier tool creation - Automatic JSON Schema generation from Python type hints
- Automatic return value conversion to MCP format
- Output schema validation with primitive type wrapping
- Async function support - tools can now be defined as
async deffunctions - The SDK automatically detects async functions and handles them appropriately
- Mixed sync/async tools are supported in the same application
- Full test coverage for async functionality
- Core MCP protocol implementation for Spin HTTP handlers
- Helper classes for creating tool responses (
ToolResponse) - Content type helpers (
ToolContent) - Type guards for content validation
- Automatic camelCase to snake_case conversion for tool names
- Full compatibility with componentize-py for WebAssembly compilation
- Comprehensive test suite with pytest
- Type hints throughout the codebase
- Support for Python 3.10+
- Development tools integration (black, ruff, mypy, pytest)
- Tox configuration for multi-version testing
- GitHub Actions CI/CD pipeline
- PyPI publishing automation with trusted publishers
- Primary API is now decorator-based (old
create_toolsstill available for compatibility) - Handler class is now created with
ftl.create_handler()
- Input validation for all tool handlers
- Safe error handling without exposing internals