> ## 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.

# Outputs and retries

> Validate final output, retry model calls, and inspect completed Go runs.

Use output validation to keep the value returned by an agent inside the contract expected by your application. Model retries apply to failed model requests; tool retries should remain explicit inside the tool implementation when they are safe.

## Configure model retries

```go theme={null}
agent := phaseoagent.CreateAgent(phaseoagent.AgentDefinition{
  ID: "research-agent",
  Model: "openai/gpt-5.4-nano",
  ModelRetry: phaseoagent.ModelRetryConfig{
    MaxRetries: 3,
    BaseDelay:  500 * time.Millisecond,
    MaxDelay:   4 * time.Second,
  },
})
```

The run record preserves the number of model attempts for each step. A retry does not discard prior completed tool results.

## Validate the final result

Set `OutputSchema` on `AgentDefinition` when downstream code requires a structured result. Validation runs before the result is marked complete, so invalid output fails at the agent boundary rather than later in your application.

## Inspect the result

```go theme={null}
result, err := agent.Run(ctx, phaseoagent.RunOptions{Input: prompt, Client: client})
if err != nil { return err }

fmt.Println(result.Output)
fmt.Println(result.Run.Status)
fmt.Println(result.Usage.TotalTokens)
fmt.Println(result.Usage.Cost)
```

Use [stop conditions](./agent-sdk-stop-conditions) for budgets and hard limits, and [errors and troubleshooting](./agent-sdk-observability) for failure handling.
