--- title: "Advanced Tool Configuration" description: "Advanced features and patterns for Agency Swarm tools." icon: "wand-magic-sparkles" --- Besides standard Pydantic features, you can also use a special `ToolConfig` class to customize tool behavior within the framework: ## Available `ToolConfig` Parameters The following parameters are supported, with version compatibility noted: | Name | Type | Description | When to Use | Default Value | |--------------------|---------|-------------|-------------|---------------| | `one_call_at_a_time` | `bool` | Prevents concurrent execution for a specific tool. If you want to adjust parallel tool calling for all tools, prefer configuring `model_settings=ModelSettings(parallel_tool_calls=...)`. Use this per-tool setting when you need strict sequencing. | Use for database operations, API calls with rate limits, or actions that depend on previous results. | `False` | | `strict` | `bool` | Enables strict mode, which ensures the agent will always provide **perfect** tool inputs that 100% match your schema. Has limitations. See [OpenAI Docs](https://platform.openai.com/docs/guides/structured-outputs#supported-schemas). | Use for mission-critical tools or tools that have nested Pydantic model schemas. | `False` | ## Usage To use one of the available parameters, simply add a `class ToolConfig` block to your tool class: ```python class MyCustomTool(BaseTool): # ... class ToolConfig: one_call_at_a_time = True strict = False async def run(self): # ... ```