Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Execute on-chain transactions with user-granted permissions. Built on MetaMask ERC-7715. No private keys, full guardrails.
Execute on-chain transactions with user-granted permissions. Built on MetaMask ERC-7715. No private keys, full guardrails.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Give your AI agent crypto superpowers with MetaMask ERC-7715 permissions.
WalletPilot enables AI agents to execute on-chain transactions using MetaMask's ERC-7715 permission standard. Users grant scoped permissions (spend limits, chain restrictions) once, then agents can execute freely within those limits. Key Features: No private keys shared - users keep their MetaMask Configurable guardrails (spend limits, chain allowlists) Multi-chain support (Ethereum, Polygon, Arbitrum, Optimism, Base) Built on MetaMask's official Smart Accounts Kit
Get an API key at walletpilot.xyz Install the SDK: npm install @walletpilot/sdk
Request wallet permissions from user. import { WalletPilot, PermissionBuilder } from '@walletpilot/sdk'; const pilot = new WalletPilot({ apiKey: 'wp_...' }); const permission = new PermissionBuilder() .spend('USDC', '100', 'day') // Max $100 USDC per day .spend('ETH', '0.1', 'day') // Max 0.1 ETH per day .chains([1, 137, 42161]) // Ethereum, Polygon, Arbitrum .expiry('30d') // Valid for 30 days .build(); const { deepLink } = await pilot.requestPermission(permission); console.log('User should open:', deepLink);
Execute a transaction using granted permissions. const result = await pilot.execute({ to: '0x1234...', // Target contract data: '0xabcd...', // Calldata (e.g., swap) value: '0', // ETH value (optional) chainId: 1, // Chain ID }); console.log('Transaction hash:', result.hash);
Check token balances (uses standard RPC, no permission needed). import { createPublicClient, http } from 'viem'; import { mainnet } from 'viem/chains'; const client = createPublicClient({ chain: mainnet, transport: http(), }); const balance = await client.getBalance({ address: '0x...' });
Execute a token swap via DEX aggregator. // Get swap quote from 1inch, 0x, or similar const quote = await fetch('https://api.1inch.io/v5.0/1/swap?...'); const { tx } = await quote.json(); // Execute via WalletPilot await pilot.execute({ to: tx.to, data: tx.data, value: tx.value, chainId: 1, });
Send tokens to an address. import { encodeFunctionData, erc20Abi } from 'viem'; // Encode ERC20 transfer const data = encodeFunctionData({ abi: erc20Abi, functionName: 'transfer', args: ['0xRecipient...', 1000000n], // 1 USDC (6 decimals) }); await pilot.execute({ to: '0xUSDC_ADDRESS...', data, chainId: 1, });
Get transaction history. const state = pilot.getState(); console.log('Active permissions:', state.permissions); // Or via API const response = await fetch('https://api.walletpilot.xyz/v1/tx/history/PERMISSION_ID', { headers: { 'Authorization': 'Bearer wp_...' }, }); const { data } = await response.json(); console.log('Recent transactions:', data);
PermissionExampleDescriptionspend{ token: 'USDC', limit: '100', period: 'day' }Max token spend per periodchains[1, 137, 42161]Allowed chain IDscontracts['0x...']Allowed contract addressesexpiry'30d'Permission expiration
ChainIDNameEthereum1mainnetPolygon137polygonArbitrum42161arbitrumOptimism10optimismBase8453base
No Private Keys: Users keep full custody via MetaMask Scoped Permissions: Agents can only act within granted limits Time-Limited: Permissions automatically expire Revocable: Users can revoke permissions anytime Auditable: All transactions logged and visible
Base URL: https://api.walletpilot.xyz EndpointMethodDescription/v1/permissions/requestPOSTRequest new permission/v1/permissions/:idGETGet permission details/v1/tx/executePOSTExecute transaction/v1/tx/:hashGETGet transaction status
import { WalletPilot, PermissionBuilder } from '@walletpilot/sdk'; async function defiAgent() { const pilot = new WalletPilot({ apiKey: process.env.WALLETPILOT_KEY }); // Check if we have active permissions const state = pilot.getState(); if (!state.connected) { // Request permission const permission = new PermissionBuilder() .spend('USDC', '500', 'day') .chains([1, 42161]) .expiry('7d') .description('DeFi trading agent') .build(); const { deepLink } = await pilot.requestPermission(permission); console.log('Approve in MetaMask:', deepLink); return; } // Execute trades const swapData = await getSwapQuote('USDC', 'ETH', '100'); await pilot.execute({ to: swapData.to, data: swapData.data, chainId: 1, }); console.log('Swap executed!'); }
Documentation GitHub API Reference
Trading, swaps, payments, treasury, liquidity, and crypto-financial operations.
Largest current source with strong distribution and engagement signals.