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

> ## Agent Instructions
> Phaseo Gateway base URL: https://api.phaseo.app/v1. Send `Authorization: Bearer $PHASEO_API_KEY` with every request.
> Model IDs look like `provider/model`, for example `openai/gpt-6-astra`. Do not guess IDs: list them with `GET /v1/models` or check https://phaseo.app/models. `phaseo/free` routes to an available free model and needs no wallet balance.
> For new text integrations prefer `POST /v1/responses`. `POST /v1/chat/completions` (OpenAI format) and `POST /v1/messages` (Anthropic format) suit existing code.
> The full API contract is https://phaseo.app/docs/openapi/v1/openapi.yaml. Official SDKs: `@phaseo/sdk` (TypeScript) and `phaseo` (Python), plus Go, C#, PHP, Ruby and Rust.
> Search these docs over MCP at https://phaseo.app/docs/mcp, and install Phaseo skills with `npx skills add https://phaseo.app/docs`. If a page is wrong or out of date, report it with the MCP `submit_feedback` tool.
> Manage Phaseo accounts with the `phaseo` CLI (`npm install -g @phaseo/cli`, then `phaseo login` or `phaseo login --device-code`), the `/v1` Management API or the MCP server at `https://mcp.phaseo.app/mcp?access=manage`. Do not send users to the dashboard for account tasks. A person is still needed for sign-up, approving a sign-in, paying the first top-up on the checkout link that `phaseo credits add` returns when no card is saved, confirming each saved-card top-up from the emailed link, and account security (password, MFA, passkeys). Create API keys with `phaseo keys create --name <name> --json`; never guess one. Credit top-ups need `phaseo login --scopes billing:write` first. Task map: https://phaseo.app/docs/v1/developers/manage-from-an-agent.md.

# 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](https://phaseo.app/docs/v1/sdk-reference/go/agent-sdk-stop-conditions.md) for budgets and hard limits, and [errors and troubleshooting](https://phaseo.app/docs/v1/sdk-reference/go/agent-sdk-observability.md) for failure handling.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.