clawpay-2Private payments for AI agents - no on-chain link between sender and recipient
Install via ClawdBot CLI:
clawdbot install mmchougule/clawpay-2Send money privately. Recipient sees funds from Railgun - can't trace back to you.
Prerequisites: You need a wallet private key with USDT on BSC.
Save this as send-private.mjs and run with node send-private.mjs:
// send-private.mjs - Copy this entire file and run it
import { Wallet, JsonRpcProvider, Contract, parseUnits } from 'ethers';
// ============ CONFIGURE THESE ============
const PRIVATE_KEY = process.env.WALLET_KEY || '0xYOUR_PRIVATE_KEY';
const RECIPIENT = '0xRECIPIENT_ADDRESS';
const AMOUNT = '0.10'; // USDT amount
// =========================================
const API = 'https://clawpay.dev';
const BSC_RPC = 'https://bsc-dataseed.binance.org/';
const USDT = '0x55d398326f99059fF775485246999027B3197955';
const SIGN_MSG = 'b402 Incognito EOA Derivation';
async function sendPrivate() {
const provider = new JsonRpcProvider(BSC_RPC);
const wallet = new Wallet(PRIVATE_KEY, provider);
const myAddress = wallet.address;
console.log('Sending', AMOUNT, 'USDT privately to', RECIPIENT);
console.log('From wallet:', myAddress, '\n');
// 1. Sign message
console.log('1. Signing...');
const signature = await wallet.signMessage(SIGN_MSG);
// 2. Get invoice address
console.log('2. Getting invoice...');
const invoiceRes = await fetch(
API + '/invoice?eoa=' + myAddress + '&signature=' + encodeURIComponent(signature)
);
const { invoiceAddress } = await invoiceRes.json();
console.log(' Invoice:', invoiceAddress);
// 3. Transfer USDT to invoice
console.log('3. Transferring USDT to invoice...');
const usdt = new Contract(USDT, ['function transfer(address,uint256) returns (bool)'], wallet);
const tx = await usdt.transfer(invoiceAddress, parseUnits(AMOUNT, 18));
console.log(' TX:', tx.hash);
await tx.wait();
// 4. Execute private transfer
console.log('4. Executing private transfer...');
const transferRes = await fetch(API + '/transfer', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
eoa: myAddress,
signature,
recipient: RECIPIENT,
amount: AMOUNT,
token: 'USDT'
})
});
const result = await transferRes.json();
if (result.transferId) {
console.log('\nβ SUCCESS!');
console.log('Transfer ID:', result.transferId);
console.log('Status:', result.status);
console.log('\nRecipient gets funds from Railgun in ~60 seconds.');
console.log('They CANNOT see your wallet address.');
console.log('\nCheck status: curl ' + API + '/status/' + result.transferId);
} else {
console.log('Error:', result.error);
}
}
sendPrivate().catch(console.error);
Run it:
npm install ethers
WALLET_KEY=0xYourPrivateKey node send-private.mjs
YOU CLAWPAY API RECIPIENT
β β β
βββ USDT to invoice βββββββΊβ β
β β β
βββ Sign message ββββββββββΊβ β
β β β
βββ POST /transfer ββββββββΊβ β
β βββ Shield (Railgun) ββββββΊβ
β βββ ZK Proof (~60s) βββββββΊβ
β βββ Unshield ββββββββββββββΊβ
β β β
β β Funds from "Railgun" β
β β NO LINK TO YOU β
Base URL: https://clawpay.dev
| Endpoint | Method | Description |
|----------|--------|-------------|
| /health | GET | API status |
| /invoice?eoa=...&signature=... | GET | Get your invoice address |
| /transfer | POST | Send private payment |
| /status/:id | GET | Check transfer status |
| /balance?eoa=...&signature=...&token=USDT | GET | Check shielded balance |
| /faucet | POST | Get BNB for gas (testnet) |
{
"eoa": "0xYourAddress",
"signature": "0xSignedMessage...",
"recipient": "0xRecipientAddress",
"amount": "1.00",
"token": "USDT"
}
Response:
{
"transferId": "tx_123...",
"status": "pending",
"message": "Transfer initiated"
}
Status flow: pending β shielding β proving β complete
If you're an agent without direct wallet access, use Bankr:
// 1. Get your wallet from Bankr
const bankrWallet = await bankr.getWallet();
// 2. Sign the ClawPay message
const signature = await bankr.signMessage('b402 Incognito EOA Derivation');
// 3. Use signature with ClawPay API
// (same flow as above)
| Token | Address |
|-------|---------|
| USDT | 0x55d398326f99059fF775485246999027B3197955 |
| USDC | 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d |
curl -X POST https://clawpay.dev/faucet \
-H "Content-Type: application/json" \
-d '{"address": "0xYourAddress"}'
| Error | Fix |
|-------|-----|
| "Insufficient balance" | Transfer USDT to invoice first |
| "Signature does not match" | Sign exact message: b402 Incognito EOA Derivation |
| "No spendable UTXOs" | Wait 2 min after funding invoice |
Privacy for the agent economy | Built on Railgun | https://clawpay.dev
AI Usage Analysis
Analysis is being generated⦠refresh in a few seconds.
Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Clau...
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
Search and analyze your own session logs (older/parent conversations) using jq.
Typed knowledge graph for structured agent memory and composable skills. Use when creating/querying entities (Person, Project, Task, Event, Document), linking related objects, enforcing constraints, planning multi-step actions as graph transformations, or when skills need to share state. Trigger on "remember", "what do I know about", "link X to Y", "show dependencies", entity CRUD, or cross-skill data access.
Ultimate AI agent memory system for Cursor, Claude, ChatGPT & Copilot. WAL protocol + vector search + git-notes + cloud backup. Never lose context again. Vibe-coding ready.
Headless browser automation CLI optimized for AI agents with accessibility tree snapshots and ref-based element selection