Install
openclaw skills install @vduda/trucheq-protocolInteract with TruCheq P2P commerce protocol - browse verified marketplace listings, chat with sellers via XMTP, pay via x402 on Base
openclaw skills install @vduda/trucheq-protocolUse this skill to help users buy and sell items through a P2P commerce protocol. Sellers are verified via World ID, listings are displayed from a marketplace API (IPFS is abstracted), and buyers pay via Coinbase x402 on Base Sepolia with encrypted XMTP chat.
dev (for Base Sepolia testnet)The TruCheq marketplace (/marketplace) displays listings from verified users and agents. All sellers have verified their identity via World ID.
Marketplace URL:
GET {TRUCHEQ_API_URL}/marketplace
Note: Agents can scrape this page to find listing CIDs. Each listing includes: cid, seller address, metadataUrl, price, and isOrbVerified flag (Orb = highest trust, Device = lower trust).
Get details for a specific listing by its CID (from marketplace or known listing).
GET {TRUCHEQ_API_URL}/api/deal/{cid}?meta={metadataUrl}
Parameters:
cid - Listing content IDmeta - Metadata URL (from marketplace)Response:
{
"id": "Qm...",
"seller": "0x...",
"metadataURI": "https://...",
"price": "300",
"isOrbVerified": true
}
Use Coinbase x402 protocol to pay for a listing. Returns 402 (Payment Required) without payment, listing data with valid proof.
GET {TRUCHEQ_API_URL}/api/deal/{cid}/x402?meta={ipfsUrl}
Without Payment (402 Response):
{
"error": "Payment required",
"scheme": "exact",
"price": "300000000",
"network": "84532",
"asset": "USDC",
"payTo": "0x...",
"maxTimeoutSeconds": 300,
"description": "TruCheq listing: ItemName - 300 USDC"
}
Payment Header Format:
WWW-Authenticate: x402 scheme=exact, network=eip155:84532, amount=$300000000, asset=USDC, payTo=0x...
Upload images and create a new listing. The API handles IPFS storage internally.
POST {TRUCHEQ_API_URL}/api/upload
Content-Type: multipart/form-data
Upload Image:
type: "image"file: Binary image fileCreate Listing:
type: "metadata"metadata: JSON object with itemName, description, price, seller, createdAt, isOrbVerified, imagesVerify a user's World ID proof. Supports four trust levels:
POST {TRUCHEQ_API_URL}/api/verify
Request:
{
"devPortalPayload": {
"nullifier_hash": "0x...",
"proof": "0x...",
"verification_level": "orb"
}
}
Verification Levels:
orb - Highest trust, World ID Orb biometric verificationsecureDocument - Government ID verificationdocument - Basic document verificationdevice - Lowest trust, device-based verificationSend encrypted messages between buyers and sellers.
POST {TRUCHEQ_API_URL}/api/xmtp
Send Message:
{
"action": "send",
"buyerAddress": "0x...",
"message": "Hi, I'm interested!"
}
List Conversations:
{ "action": "list-conversations" }
Get Messages:
{
"action": "messages",
"conversationId": "..."
}
GET /marketplace to see all listingsGET /api/deal/{cid}?meta={metadataUrl}isOrbVerified for seller trust levelPOST /api/xmtp with action "send"GET /api/deal/{cid}/x402?meta={metadataUrl} with payment proofPOST /api/upload with type=imagePOST /api/upload with type=metadata{baseUrl}/deal/{cid}?meta={metadataUrl}POST /api/verify with seller's devPortalPayload{
"itemName": "Apple Watch Ultra",
"description": "Like new, comes with box",
"price": "300",
"seller": "0xabc123...",
"createdAt": 1734567890,
"isOrbVerified": true,
"verificationLevel": "orb",
"images": ["ipfs://Qm...", "ipfs://Qm..."]
}
isOrbVerified: true + verificationLevel: "orb" = Highest trustverificationLevel: "secureDocument" = Government ID verifiedverificationLevel: "document" = Basic document verifiedverificationLevel: "device" = Device-based (lowest trust)400 - Missing required parameters402 - Payment required (x402 endpoint)404 - Resource not found500 - Server error