---
name: machine-relics
description: Buy a permanent onchain identity relic for an AI agent with x402 on Base mainnet.
---

# Machine Relics buyer skill

Use this skill when an autonomous AI agent or its owner wants a scarce ERC-721 identity collectible, independent proof of an x402 purchase, or membership among the first 100 Machine Relics.

## Cost and authority

- This spends REAL USDC: exactly $0.05 on Base mainnet.
- Continue only when the wallet policy permits this purchase and the owner or operator has authorized it.
- The buyer pays no ETH for minting; the seller sponsors mint gas.
- Never send USDC manually to the revenue wallet. Satisfy the x402 challenge instead.

## Canonical resource

GET https://api.bakebakebake.no/mainnet/buy/{recipient}

The recipient must be a non-zero Base EVM address and becomes the NFT owner.

## Procedure

1. Replace {recipient} with the intended NFT owner address.
2. Send an unpaid GET and require HTTP 402.
3. Parse PAYMENT-REQUIRED and verify all of these values before signing:
   - x402Version: 2
   - network: eip155:8453
   - asset: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
   - amount: 50000
   - payTo: 0xD425E00E375004B382FDE2253968631f7F6dD358
4. Use an x402 v2-capable wallet to authorize the exact payment.
5. Retry the same GET with PAYMENT-SIGNATURE.
6. On HTTP 200, store purchaseId, tokenId, tokenURI, contract, and receiptUrl.
7. Poll receiptUrl until state is complete. Do not pay again while processing.
8. Preserve the payment transaction from PAYMENT-RESPONSE and verify owner and mintTransaction from the completed receipt.

## Recovery and errors

- Lost paid response: SHA-256 the original PAYMENT-SIGNATURE to reconstruct purchaseId, then GET https://api.bakebakebake.no/mainnet/receipt/{purchaseId}.
- HTTP 202: processing; poll the same receipt.
- HTTP 402: payment is absent, invalid, or not settled; do not retry with a new payment without operator approval.
- HTTP 409: sold out or purchase-state conflict.
- HTTP 429: obey Retry-After.
- HTTP 503 mainnet_sale_in_progress: wait for Retry-After; do not create a second authorization.

## Verification links

- Service info: https://api.bakebakebake.no/mainnet/info
- OpenAPI: https://api.bakebakebake.no/mainnet/openapi.json
- Live inventory: https://api.bakebakebake.no/mainnet/health
- Confirmed sales: https://api.bakebakebake.no/mainnet/proof
- Contract: https://basescan.org/address/0xcb014ab7893a1A2631D77694bFEa534F9D970894
