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

# Excerpts and sending

> get_excerpt and send_draft always require phone approval.

## `get_excerpt`

Tier: `raw_read` — **always** prompts the phone.

```json theme={null}
{ "thread_ref": "t_…", "approval_id": "ap_…" }
```

| Field         | Rules                                            |
| ------------- | ------------------------------------------------ |
| `thread_ref`  | Required (from structured/`ask` sources)         |
| `approval_id` | Omit first call; required on retry after approve |

### Flow

1. Call with `thread_ref` only → `approval_required` + `match_code` + `approval_id`.
2. Show match code + verified domain.
3. Retry with the same `thread_ref` and `approval_id`.

Success:

```json theme={null}
{
  "excerpt": "…",
  "subject": "…",
  "date": 1760000000,
  "found": true
}
```

Excerpt is length-capped (\~1200 chars). `found: false` if nothing shareable.
Wrong/spent `approval_id` → `not_approved`.

## `create_draft` / `draft_reply`

Tier: `compose`. Nothing is sent.

### `create_draft`

```json theme={null}
{
  "to": ["someone@example.com"],
  "subject": "…",
  "body": "…"
}
```

Limits: `to` ≤ 10, `subject` ≤ 200, `body` ≤ 20000.
Success: `{"created":true,"draft_id":"d_…"}`.

### `draft_reply`

```json theme={null}
{ "thread_ref": "t_…", "intent": "Politely decline and suggest next week" }
```

`intent` ≤ 400. Thread must be in grant. Same `{created, draft_id}` success.

## `send_draft`

Tier: `send` — **always** prompts the phone.

```json theme={null}
{ "draft_id": "d_…", "approval_id": "ap_…" }
```

Same two-step pattern as `get_excerpt`. Success: `{"sent":true,"draft_id":"d_…"}`.
