Quick Start
1
Pick a prebuilt toolset
Use one of the prebuilt toolsets for common scenarios:
2
Register a custom toolset
Create your own toolset by combining tools and other toolsets:
3
YAML configuration
Use toolsets in YAML workflows:
4
CLI usage
Use toolsets directly from command line:
How It Works
Configuration Reference
Toolsets API Reference
TypeScript configuration options
Toolsets Rust Reference
Rust configuration options
Prebuilt Toolsets
ToolsetSpec Fields
Common Patterns
Mixing Explicit Tools and Toolsets
Composition with Includes
Environment-Specific Toolsets
CLI Usage
Use toolsets withpraisonai run and praisonai chat commands:
YAML Usage
Addtoolsets: key under each agent definition:
When to use coding vs development
Both toolsets are useful for code-related tasks but target different workflows.
Choose
coding when the agent makes targeted edits to source files; choose development for broader scripting and dev-tooling tasks.
Model-family-aware edit order
When an agent has a stringllm= model id, the coding toolset advertises the family’s preferred edit primitive first (Claude → apply_patch; GPT → edit_file). Both primitives stay available — only their order changes, matching the guidance the Model Harness prepends to the system prompt.
Unknown or non-string model ids keep the current edit order byte-for-byte — the harness applies no change unless the model id matches a known family.
Custom Toolsets
Register Function
Overwrite Behavior
By default,register_toolset is a silent no-op if the name already exists. Set overwrite=True to replace:
Recursive Includes
Toolsets can include other toolsets with automatic cycle detection:ValueError:
Performance Note
Tool availability is cached for 30 seconds by default. Thelist_available_tools() function uses TTL caching to avoid expensive availability checks on every agent initialization, improving performance when creating many agents.
Best Practices
Pick 'safe' for production sandboxes
Pick 'safe' for production sandboxes
Use the
safe toolset in production environments where you need to restrict tool capabilities. It includes only read-only operations like internet_search and read_file.Compose with 'includes=' rather than copying tool lists
Compose with 'includes=' rather than copying tool lists
Use the
includes parameter to build on existing toolsets instead of duplicating tool lists:Register custom toolsets at app boot, not per-request
Register custom toolsets at app boot, not per-request
Register toolsets once during application initialization, not in request handlers:
Mix explicit 'tools=' with 'toolsets=' when you need one extra tool
Mix explicit 'tools=' with 'toolsets=' when you need one extra tool
Use both parameters when you need a toolset plus one additional tool:
Related
Allowed Tools
Environment variable whitelist for tool restriction
Bot Default Tools
Default tools for bot agents
Load MCP Tools
Model Context Protocol tool loading
Tool Resolver
Resolve tools from local tools.py
Model Harness
Per-model-family prompt and edit-order tuning

