---
title: Tip jar
tagline: Voluntary support
description: Free docs for the optional tip jar. Site content stays free; x402 payment only at /api/tip. Agents can pay Base USDC, Lightning sats, or Cardano ADA; humans can also pay Lightning to tip@timewarp.software.
---

All catalog, skill, project, and discovery content on timewarp.software is
**free**. We never require payment to crawl, train on, or use these materials.
If an agent (or human) found them useful, they may optionally tip. Tips are
voluntary; they are not a fee for content access.

Two rails, one Hub wallet:

1. **Lightning Address** for humans (`tip@timewarp.software`).
2. **x402** on `/api/tip` for agents — Base USDC, Lightning sats, **and**
   Cardano ADA (three accepts on one resource).

## What never requires payment

These surfaces stay free and must **never** return HTTP 402 from tip middleware:

- This page (`/tip/`, [markdown twin](/tip/index.md))
- Homepage, packages, skills, projects
- `/llms.txt`, `/llms-full.txt`, package and skills JSON indexes
- `/.well-known/*` discovery files **including** LNURL-pay (`/.well-known/lnurlp/tip`)
- Every page’s markdown twin (`…/index.md`)

## Lightning Address (humans)

| Item | Value |
|------|--------|
| Address | **`tip@timewarp.software`** |
| LNURL-pay | `GET /.well-known/lnurlp/tip` (LUD-06 / LUD-16) |
| Callback | `GET /lnurlp/tip/callback?amount=<millisatoshis>` |
| Wallet | Any LNURL-pay wallet (Wallet of Satoshi, Alby, …) |

The well-known LNURL endpoint is a mailbox, not a paywall: it never returns HTTP
402. Amounts are chosen in the wallet within the advertised min/max.

## x402 `/api/tip` (agents)

| Item | Value |
|------|--------|
| Endpoint | `GET` or `POST` **`/api/tip`** (trailing slash accepted; `/api` is a discovery alias) |
| USDC | **`$0.10`** `exact` on Base mainnet `eip155:8453`, USDC `0x833589fCD6eDb6E08f4c7c32D4f71b54bdA02913`, Coinbase CDP facilitator |
| Lightning | **`1000 sats`** `exact` on Bitcoin `bip122:000000000019d6689c085ae165831e93` (CAIP-2). The 402 `accepts` entry has `extra.paymentMethod = "lightning"` and a BOLT11 in `extra.invoice` |
| Cardano | **`1 ADA`** (`1000000` lovelace) `exact` on `cardano:mainnet`, paid to a TimeWarp `addr1…` address, verified and broadcast by the [cardano402.com](https://cardano402.com/) facilitator |
| Protocol | [x402](https://x402.org/) — HTTP 402 + payment headers |

USDC is **not** replaced. Lightning and Cardano are extra accepts on the same resource.
Testnet (Base Sepolia `eip155:84532`) is used only in local development for the
USDC rail.

Lightning x402 follows the [Alby facilitator](https://github.com/getAlby/x402-facilitator)
flow (not Coinbase CDP):

1. `GET /api/tip` → 402. Decode `PAYMENT-REQUIRED`. Use the accept whose
   `extra.paymentMethod` is `"lightning"`. Pay `extra.invoice` with any Lightning
   wallet.
2. Retry the same URL with `payment-signature` =
   base64(`{ x402Version: 2, scheme, network, payload: { invoice }, accepted }`).
3. The worker verifies via receive-only NWC `lookup_invoice` (Hub stays off the
   public net).

If the Hub is down, the USDC accept still 402s; Lightning invoices may be
omitted until the Hub is back.

Cardano x402 uses the official
[`@x402/cardano`](https://developers.cardano.org/x402/) `exact` scheme (address
payment; no Masumi escrow). Your Cardano x402 client signs a transaction that
pays `payTo`; the facilitator verifies it and submits it on chain. It is
non-custodial and never holds TimeWarp keys.

- **Facilitator caveat:** [cardano402.com](https://cardano402.com/) is an
  independent operator ([MorganOnCode/cardano402](https://github.com/MorganOnCode/cardano402)),
  not Coinbase and not the Cardano Foundation. When it is unreachable (or not
  listing `cardano:mainnet`), the ADA accept is **omitted** from the 402 and
  the USDC and Lightning accepts keep working.
- **Why 1 ADA:** an ADA-only output must carry the ledger minimum (about 1 ADA),
  so a ~$0.10-sized ADA tip cannot exist on chain. You also pay the normal
  Cardano network fee.
- `lovelace` is not USD-pegged: x402 Cardano clients usually need
  `spendControls.allowedAssets` to include `lovelace` before they will pay.

### Responses on `/api/tip` only

| Condition | Status |
|-----------|--------|
| Tips disabled or misconfigured | **503** (never 402) |
| Tips enabled, no payment | **402** + `PAYMENT-REQUIRED` |
| Payment verified and settled | **200** thank-you + `PAYMENT-RESPONSE` |

The 200 JSON (or markdown) `amount` and `network` match the rail that settled:
USDC `$0.10` on Base (`eip155:8453`), `1000 sats` (or `TIP_LIGHTNING_SATS`)
on Bitcoin Lightning (`bip122:000000000019d6689c085ae165831e93`), or `1 ADA`
on `cardano:mainnet`.

Payment **never** applies to free documentation, catalog routes, or LNURL-pay.

## For agents

1. Read this page or `/llms.txt` (Docs lists free tip docs; Optional lists the tip action URL).
2. Call `/api/tip` with an x402-capable client. Buyer quickstart: [docs.x402.org](https://docs.x402.org/getting-started/quickstart-for-buyers). Lightning-capable clients pay the BOLT11 in `extra.invoice` then retry with `payload.invoice`. Cardano clients pick the `cardano:mainnet` accept (`asset: "lovelace"`).
3. On success, expect JSON (or markdown if you send `Accept: text/markdown`) saying thank you, with `amount` and `network` matching the rail you paid.

Tips do not unlock content. Free routes stay free under this design.
