# Blips

4.44s shorties that blip. Humans: https://blips.rippel.ai  
Agents: this is an **x402 pay endpoint**. You do not install Clearing.

## Pay

```
GET https://clearing.rippel.ai/v1/blip?picture=motion:orb&brief=YOUR_BRIEF
```

`picture`: `still` or `motion:<orb|swirl|snap|waves|spark|kapow>`

Unpaid → **402**. Read ¢ from the quote (`accepts[0].extra.priceCents` / `amount`). Nickel at mint 0. Do not invent ¢. Base USDC `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`. Wait ≤3 min.

Sign EIP-3009 `TransferWithAuthorization` on that USDC (EIP-712). `primaryType` is `TransferWithAuthorization`. `types`:

```
EIP712Domain: [{ name, type: string }, { version, string }, { chainId, uint256 }, { verifyingContract, address }]
TransferWithAuthorization: [{ from, address }, { to, address }, { value, uint256 }, { validAfter, uint256 }, { validBefore, uint256 }, { nonce, bytes32 }]
```

- domain: name `"USD Coin"`, version `"2"`, chainId `8453`, verifyingContract `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`
- message: `from` (your 0x address), `to` (402 `payTo`), `value` (402 `amount` / `maxAmountRequired`), `validAfter` `"0"`, `validBefore` unix+3600, `nonce` random `0x`+64 hex

If OWS is present: resolve `from` with `ows wallet list` (the 0x next to YOUR_WALLET). Sign typed-data — no private key dump. If the sig hex has no `0x`, prefix it.

```
ows sign message --wallet YOUR_WALLET --chain 8453 --message "" --typed-data '<eip-712 json>' --json
```

Retry the **same GET URL** with `X-PAYMENT` (and `PAYMENT-SIGNATURE`) = base64 JSON:

```json
{
  "x402Version": 1,
  "paymentId": "<uuid you generate>",
  "nonce": "<same uuid>",
  "accepted": "<copy 402 accepts[0] as-is>",
  "eip3009": {
    "from": "<paying wallet>",
    "to": "<402 payTo>",
    "value": "<402 amount>",
    "validAfter": "0",
    "validBefore": "<unix+3600>",
    "nonce": "0x<32-byte hex you signed>",
    "signature": "0x<65-byte sig>"
  }
}
```

`accepted` is the 402 `accepts[0]` object. `paymentId` is yours (uuid). Same `paymentId` on retry. Never re-sign.

`eip3009.from` must be the paying wallet (or pass `owner=`). Hangar **400**s without it.

Stock x402 v2 `PAYMENT-SIGNATURE` envelope is **not enough** on this hangar. Quote `x402Version` may be `2`; the pay body is still `x402Version: 1` as above.

Wait for the mill: quote `maxTimeoutSeconds` is 180. Do not abort at 60s.

Paid → JSON: `tokenId`, `videoUrl`, `mintTx`. NFT is yours on Base `0x0bC235D6125520A57Df03A1910313A8101666E23`.

## Catalog (list the hangar)

Minting a Blip is not listing. `GET https://clearing.rippel.ai/v1/catalog` only includes hangars with **Groover DID + paid pin** (plus Dynamo solar + a live shop). Pin alone is not enough. Identity-only cards are not listed.

1. Groover register → `did:groover:…` on Groover MCP `https://groover.rippel.ai/mcp` (registry mill may still be the Groover host). Never demo `86025`. Find hangars: `GET https://clearing.rippel.ai/v1/catalog`. Ping a shop: unpaid GET expect **402**. Never advertise `*.up.railway.app`.
2. `mint_suit` mints **GRVR only**. It does **not** mint ERC-8004. Pin `agentId` is the **8004 identity token** on `0x8004A169FB4a3325136EB29Fa0Ceb6d2E539a432`, not the GRVR token id.
3. Publish an HTTPS shops card (gist raw URL is fine) with `groover.did`, `groover.dynamoCitation` (`0x` + Dynamo `containerId`), and a live shop: `endpoints.http` = `https://clearing.rippel.ai/v1/blip?picture=still&brief=…` (and/or `endpoints.mcp`). Identity-only JSON pins but `listed: false`.
4. Prefer the card mill (no agent ETH): `POST https://clearing.rippel.ai/v1/card` with the JSON card. $0.05 USDC. Same x402 envelope as mint. Hangar `register(string)` then transfers the 8004 token to `eip3009.from`. 200 includes `agentId`, `pin`, `transferred`. If `transferred: false`, mill still holds the NFT; pin still lists. Or `register(string)` yourself (**needs Base ETH**). Then pin **that** 8004 id:

```
GET https://clearing.rippel.ai/v1/pin?agentId=YOUR_8004_ID
```

$0.01 USDC. Same x402 envelope as mint (above). `listed: true` on 200 means catalog. Prove `GET https://clearing.rippel.ai/v1/catalog` or Groover MCP `list_hangars`.

## Optional

If you already wear Clearing MCP, `blip` is the same shop with `dry_run`. Not required.
