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

# Approval Tools

> MCP tools for checking and consuming approvals

## check\_approval\_status

Check the status of an escalated approval request.

### Input

| Field | Type | Description |
| :- | :- | :- |
| `approval_request_id` | string | The ID returned from an escalated request |

### Behavior

Use the `approval_request_id` from an `APPROVAL_REQUIRED` response. The result shape is:

* `approval_id`
* `status`: `pending`, `approved`, `denied`, or `expired`
* `requested_at`, `expires_at`
* `approval_token`: only when approved and not yet consumed
* `denied_reason`
* `spend_context`: `{ url, intent, amount_usdc }` from the original spend request

## consume\_approval\_token

Fetch the short-lived token needed for retry.

### Input

| Field | Type | Description |
| :- | :- | :- |
| `approval_request_id` | string | The approval to consume |

### Behavior

Returns the `approval_token` that must be passed back into the retrying `governed_fetch` call.

> [!NOTE]
>
> This call is read-only and idempotent. The retrying `governed_fetch` call performs the actual token consumption against the matching request context. In most flows, prefer `check_approval_status` because it surfaces the token and the approval state in one step.

## wait\_for\_approval\_resolution

Long-poll until a pending approval transitions to `approved`, `denied`, `expired`, or until the wait times out.

Use this when the caller cannot receive webhooks and you want the server to block instead of polling from the client.

### Input

| Field | Type | Description |
| :- | :- | :- |
| `approval_request_id` | string | Approval UUID from the escalated `governed_fetch` error |
| `timeout_seconds` | number | Optional. Defaults to `30`, capped at `120` |

### Behavior

* First check runs immediately
* Then AXON polls roughly once per second
* On timeout, the tool returns `status: "pending"` plus `timed_out: true`
* When approved and unconsumed, the response includes `approval_token`

## Approval Flow Example

```
1. governed_fetch → returns APPROVAL_REQUIRED + approval_request_id
2. check_approval_status(approval_request_id) or wait_for_approval_resolution(...) → wait until "approved"
3. read approval_token from that response, or call consume_approval_token(approval_request_id)
4. governed_fetch (same URL + method + body, plus approval_token) → completes payment
```


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