> ## Documentation Index
> Fetch the complete documentation index at: https://phaseo.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Tools

> Define validated, approval-gated, manual, and progress-producing Go tools.

Create `Tool` values and pass them through `DefineTool(...)`. Tools can include:

* JSON `Parameters` shown to the model
* `InputSchema`, `OutputSchema`, and `EventSchema` validators
* a `Timeout` and `Execute(input, RuntimeContext)` function
* unconditional `RequireApproval` or a conditional `Approval` predicate
* `OnToolCalled` and `OnResponseReceived` for interactive work
* `NextTurn` overrides and `OnError: "return-to-model"`

Use `RuntimeContext.EmitProgress`, `SetContext`, and the supplied `context.Context`. `ToolExecutionConfig{Concurrency: ...}` runs independent tools concurrently while preserving tool-result order.

## Related

* [State and approval](./agent-sdk-state-and-approval)
* [Run controls](./agent-sdk-run-controls)
