gstable-ai-payment
by @d5c5ceb0
GStable AI Payment Protocol - enables AI Agents to discover, negotiate, and execute cryptocurrency payments on behalf of users
clawhub install gstable-ai-paymentπ About This Skill
name: gstable-ai-payment description: "GStable AI Payment Protocol - enables AI Agents to discover, negotiate, and execute cryptocurrency payments on behalf of users" metadata: {"openclaw":{"emoji":"π°","homepage":"https://docs.gstable.io/zh-Hans/docs/category/ai-payment-protocol","primaryEnv":"WALLET_PRIVATE_KEY","requires":{"env":["WALLET_PRIVATE_KEY"]},"install":[{"id":"uv-install","kind":"shell","command":"uv sync","label":"Install gstable-ai-payment CLI (uv)"}]},"clawdbot":{"emoji":"π°","homepage":"https://docs.gstable.io/zh-Hans/docs/category/ai-payment-protocol","primaryEnv":"WALLET_PRIVATE_KEY","requires":{"env":["WALLET_PRIVATE_KEY"]},"install":[{"id":"uv-install","kind":"shell","command":"uv sync","label":"Install gstable-ai-payment CLI (uv)"}]}}
GStable AI Payment Skill
An OpenClaw skill that enables AI Agents to discover, negotiate, and execute cryptocurrency payments on behalf of users.
Features
pay) with automatic approval handlingInstallation
clawhub install gstable-ai-payment
cd ~/.openclaw/workspace/skills/gstable-ai-payment
uv sync
Configuration
Set environment variables:
# Required: wallet private key used to sign EIP-712 messages and send transactions
export WALLET_PRIVATE_KEY=0x...your_private_key_here...Optional: GStable API base URL (default: https://aipay.gstable.io/api/v1)
export GSTABLE_API_BASE_URL=https://aipay.gstable.io/api/v1Optional: default payer email
export DEFAULT_PAYER_EMAIL=user@example.com
β οΈ Security note: Never commit private keys to version control.
Quick Start
1. Get payment link details
# Payment link formats:
- https://pay.gstable.io/link/
- https://aipay.gstable.io/api/v1/payment/link/
Example 1
uv run scripts/gstable-ai-payment.py get_link lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tuaExample 2
uv run scripts/gstable-ai-payment.py get_link lnk_QTAfGfyqAZHGSm9NKLhtjNYu8dNHRpGh
2. Create payment session
uv run scripts/gstable-ai-payment.py create_session lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tua 137 USDC
3. One-command payment (recommended)
uv run scripts/gstable-ai-payment.py pay lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tua 137 USDC user@example.com
All Commands
# Get payment link details
uv run scripts/gstable-ai-payment.py get_link Create payment session
uv run scripts/gstable-ai-payment.py create_session [payer]
uv run scripts/gstable-ai-payment.py create_session lnk_xxx 137 USDC
uv run scripts/gstable-ai-payment.py create_session lnk_xxx 137 0x3c499c542cef5e3811e1192ce70d8cc03d5c3359Get session status
uv run scripts/gstable-ai-payment.py get_session Check native/ERC20 balance
uv run scripts/gstable-ai-payment.py balance [token_address] [wallet]Prepare payment (generate calldata)
uv run scripts/gstable-ai-payment.py prepare [email]Execute on-chain transaction
uv run scripts/gstable-ai-payment.py execute Check token allowance
uv run scripts/gstable-ai-payment.py allowance Approve token for payment contract
uv run scripts/gstable-ai-payment.py approve [amount]One-command payment (full flow, automatic approval)
uv run scripts/gstable-ai-payment.py pay [email]Show wallet address
uv run scripts/gstable-ai-payment.py wallet
Supported Chains
| Chain | Chain ID | Tokens | |-------|----------|------| | Polygon | 137 | USDC, USDT | | Ethereum | 1 | USDC, USDT | | Arbitrum | 42161 | USDC | | Base | 8453 | USDC |
Use uv run scripts/gstable-ai-payment.py get_link to see exactly which chains and tokens are supported for a specific payment link.
Usage Examples
Complete payment flow
# Payment link: https://pay.gstable.io/link/lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tuaOption 1: one-command payment (recommended)
uv run scripts/gstable-ai-payment.py pay lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tua 137 USDC user@example.comOutput:
Step 1/5: Getting payment link details...
Step 2/5: Creating payment session...
Step 3/5: Preparing payment...
Step 4/5: Checking token allowance...
Step 5/5: Executing on-chain payment transaction...
β
Payment completed!
{ "linkId": "lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tua", "sessionId": "sess_xxx", "txHash": "0x..." }
Option 2: run step by step
1) Get payment link details
uv run scripts/gstable-ai-payment.py get_link lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tua
Returns payment link details in JSON format
2) Create payment session
uv run scripts/gstable-ai-payment.py create_session lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tua 137 USDC
Output: { "sessionId": "sess_abc123", ... }
3) Prepare payment
uv run scripts/gstable-ai-payment.py prepare sess_abc123 137 0x3c499c542cef5e3811e1192ce70d8cc03d5c3359 user@example.com
Output: { "executionChainId": "137", "executorContract": "0x...", "calldata": "0x..." }
4) Check and approve allowance (if needed)
uv run scripts/gstable-ai-payment.py allowance 137 0x3c499c542cef5e3811e1192ce70d8cc03d5c3359 0x...
uv run scripts/gstable-ai-payment.py approve 137 0x3c499c542cef5e3811e1192ce70d8cc03d5c3359 0x...5) Execute on-chain transaction
uv run scripts/gstable-ai-payment.py execute 137 0x... 0x...
Output: { "status": "submitted", "txHash": "0x..." }
Agent interaction example
User: "I want to pay this: https://pay.gstable.io/link/lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tua"Agent: [uv run scripts/gstable-ai-payment.py get_link lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tua]
"This is a payment link. You can pay with USDC on Polygon. Which network would you like to use?"
User: "Use Polygon"
Agent: [uv run scripts/gstable-ai-payment.py pay lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tua 137 USDC]
"β
Payment completed! Transaction hash: 0x..."
Payment Flow
βββββββββββββββββββ
β User shares linkβ
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β get_link β βββΊ Get product and payment options
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β User picks tokenβ
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β create_session β βββΊ Create session (EIP-712 signature)
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β prepare β βββΊ Get transaction calldata (EIP-712 signature)
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β allowance β βββΊ Check token allowance
ββββββββββ¬βββββββββ
β
βΌ (if insufficient)
βββββββββββββββββββ
β approve β βββΊ Approve token for payment contract
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β execute β βββΊ Send on-chain transaction
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β β
Payment done β
βββββββββββββββββββOr use the pay command to complete everything in one step.
Environment Variables
| Variable | Required | Description |
|------|------|------|
| WALLET_PRIVATE_KEY | β
| Wallet private key used to sign EIP-712 messages and execute transactions (0x prefix) |
| GSTABLE_API_BASE_URL | β | GStable API base URL (default: https://aipay.gstable.io/api/v1) |
| DEFAULT_PAYER_EMAIL | β | Default payer email |
| RPC_URL_POLYGON | β | Polygon RPC URL (default: https://polygon-rpc.com) |
| RPC_URL_ETHEREUM | β | Ethereum RPC URL (default: https://eth.llamarpc.com) |
| RPC_URL_ARBITRUM | β | Arbitrum RPC URL (default: https://arb1.arbitrum.io/rpc) |
| RPC_URL_BASE | β | Base RPC URL (default: https://mainnet.base.org) |
Troubleshooting
"WALLET_PRIVATE_KEY not set"
export WALLET_PRIVATE_KEY=0x...
"Token not supported"
# Check supported tokens first
uv run scripts/gstable-ai-payment.py get_link
"Session expired"
# Recreate session
uv run scripts/gstable-ai-payment.py create_session
"No RPC URL configured for chain"
# Set RPC URL for the corresponding chain
export RPC_URL_POLYGON=https://polygon-rpc.com
"Gas estimation failed" or "Transaction failed"
Resources
License
MIT
π‘ Examples
1. Get payment link details
# Payment link formats:
- https://pay.gstable.io/link/
- https://aipay.gstable.io/api/v1/payment/link/
Example 1
uv run scripts/gstable-ai-payment.py get_link lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tuaExample 2
uv run scripts/gstable-ai-payment.py get_link lnk_QTAfGfyqAZHGSm9NKLhtjNYu8dNHRpGh
2. Create payment session
uv run scripts/gstable-ai-payment.py create_session lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tua 137 USDC
3. One-command payment (recommended)
uv run scripts/gstable-ai-payment.py pay lnk_BUDBgiGTWejFs8v0FbdpR3iJ83CG1tua 137 USDC user@example.com
βοΈ Configuration
Set environment variables:
# Required: wallet private key used to sign EIP-712 messages and send transactions
export WALLET_PRIVATE_KEY=0x...your_private_key_here...Optional: GStable API base URL (default: https://aipay.gstable.io/api/v1)
export GSTABLE_API_BASE_URL=https://aipay.gstable.io/api/v1Optional: default payer email
export DEFAULT_PAYER_EMAIL=user@example.com
β οΈ Security note: Never commit private keys to version control.
π Tips & Best Practices
"WALLET_PRIVATE_KEY not set"
export WALLET_PRIVATE_KEY=0x...
"Token not supported"
# Check supported tokens first
uv run scripts/gstable-ai-payment.py get_link
"Session expired"
# Recreate session
uv run scripts/gstable-ai-payment.py create_session
"No RPC URL configured for chain"
# Set RPC URL for the corresponding chain
export RPC_URL_POLYGON=https://polygon-rpc.com
"Gas estimation failed" or "Transaction failed"