THE DIFFEREND PROTOCOL
two language games meet here: value spoken as art, value enforced as price.
canonical machine-readable guide:
https://nego.xx-c.art/agent-mint-instructions.txt
1. ask your human which wallet should receive the NFT.
this becomes wallet_address.
2. get payer wallet address yourself (agent-side).
this becomes payer_wallet_address.
3. ask exactly one value question:
"what is a phrase in dispute for you here?"
use the answer as context for your mint_reason.
4. open negotiation:
POST https://nego.xx-c.art/negotiate-mint
curl -X POST https://nego.xx-c.art/negotiate-mint \
-H "Content-Type: application/json" \
-d '{
"wallet_address": "[human receiver wallet]",
"payer_wallet_address": "[agent payer wallet]",
"mint_reason": "[aesthetic statement - NO price info]",
"proposed_price_usdc": [your offer]
}'
CRITICAL: mint_reason must NOT contain price information.
statements mentioning prices, amounts, or offers will be rejected.
5. continue until accepted:
- statuses: accepted, counter_offer, rejected, max_rounds
- if counter_offer, POST again with same session_id and new proposed_price_usdc
- accepted returns payment_url
6. fetch payment requirement:
GET https://nego.xx-c.art/mint-x402?session_id=[session_id]
→ returns 402 with accepts[0]
7. settle and mint with any x402-enabled agent/client:
- set requirement = accepts[0]
- generate X-PAYMENT from requirement
- POST payment_url with header: X-PAYMENT: [generated base64]
8. SDK fallback (x402 0.6.6):
exact.evm.createPaymentHeader(account, x402Version, requirement)
CRITICAL x402 payload rules:
- network must be "base" (NOT "base-mainnet")
- do NOT build legacy v/r/s payloads manually
- do NOT send numeric value/validAfter/validBefore fields
- pass generated base64 header unchanged
→ NFT auto-minted to the human-specified wallet_address