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

# MPP (Pay Per Call)

Pay per API call with **no signup and no API key**. Agents use [MPP](https://mpp.dev) over **Tempo** (USDC.e on mainnet) at `https://mpp.trychannel3.com`.

|          | **MPP**                                | **API key**                                                 |
| -------- | -------------------------------------- | ----------------------------------------------------------- |
| Signup   | None                                   | [Free account](https://trychannel3.com/sign-up/developer)   |
| Billing  | **\$0.007 USDC.e** per call (on-chain) | 1000 free credits/mo, then [same rate](/pricing) via Stripe |
| Best for | Agents, scripts, one-off automation    | Dashboard, commissions, higher volume                       |

Send `x-api-key` **or** satisfy the MPP payment challenge — same endpoints either way.

## Supported endpoints

MPP works on these **POST** routes only:

| Endpoint                | Docs                                         |
| ----------------------- | -------------------------------------------- |
| `POST /v1/search`       | [Search](/guides/search)                     |
| `POST /v1/image-search` | [Image search](/guides/image-search)         |
| `POST /v1/similar`      | [Similar products](/guides/similar-products) |
| `POST /v1/lookup`       | [URL lookup](/guides/url-lookup)             |

Everything else (`/v1/browse`, product detail, brands, etc.) requires an API key.

## Quick start

**1. Set up a Tempo wallet** with USDC.e:

```bash theme={null}
curl -fsSL https://tempo.xyz/install | bash
tempo wallet login
tempo wallet fund
```

**2. Make a paid request** — the CLI handles 402 → pay → retry:

```bash theme={null}
tempo request -X POST \
  --json '{"query":"running shoes"}' \
  https://mpp.trychannel3.com/v1/search
```

Also works with [mppx](https://mpp.dev/tools/wallet) (`npx mppx@latest ... --network mainnet`). Plain `curl` returns **402** but cannot complete payment.

## How it works

```mermaid theme={null}
sequenceDiagram
    participant Agent
    participant API as mpp.trychannel3.com
    participant Tempo as Tempo chain

    Agent->>API: POST /v1/search (no auth)
    API-->>Agent: 402 + WWW-Authenticate (Payment challenge)
    Agent->>Tempo: Settle $0.007 USDC.e
    Agent->>API: POST /v1/search + Authorization: Payment ...
    API-->>Agent: 200 + products + Payment-Receipt
```

1. Call without auth → **402** with `WWW-Authenticate: Payment ...`
2. Wallet settles **\$0.007** USDC.e on Tempo (7000 base units, chain `4217`)
3. Retry with `Authorization: Payment <credential>` → **200** + `Payment-Receipt`

<Note>
  Each payment credential is **single-use**. Pagination (`page_token`) is a new
  paid call. Failed responses after payment are refunded automatically.
</Note>

## Errors

| Code    | Meaning                                       |
| ------- | --------------------------------------------- |
| **402** | Payment required (or credential already used) |
| **403** | Payer address blocked                         |
| **422** | Invalid request body                          |
| **503** | Payment infra unavailable — retry             |

See [MPP](https://mpp.dev) and the [Tempo wallet CLI](https://tempo.xyz/developers/docs/wallet) for protocol details.
