{"_id":"@asterpay-io/x402","name":"@asterpay-io/x402","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@asterpay-io/x402","version":"1.0.0","description":"x402 Protocol SDK - AI Agent Payment Infrastructure for Europe","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"},"./agent":{"import":"./dist/agent.mjs","require":"./dist/agent.js","types":"./dist/agent.d.ts"},"./langchain":{"import":"./dist/langchain.mjs","require":"./dist/langchain.js","types":"./dist/langchain.d.ts"}},"scripts":{"build":"tsup src/index.ts src/agent.ts src/langchain.ts --format cjs,esm --dts","dev":"tsup src/index.ts src/agent.ts src/langchain.ts --format cjs,esm --dts --watch","test":"vitest","lint":"eslint src/","prepublishOnly":"npm run build"},"keywords":["x402","payments","ai-agents","crypto","stablecoin","usdc","micropayments","europe","mica","asterpay"],"author":{"name":"AsterPay","email":"petteri@asterpay.io"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/AsterPay/x402-sdk.git"},"homepage":"https://asterpay.io/docs/x402","bugs":{"url":"https://github.com/AsterPay/x402-sdk/issues"},"engines":{"node":">=18"},"dependencies":{"viem":"^2.0.0"},"devDependencies":{"@types/node":"^20.0.0","tsup":"^8.0.0","typescript":"^5.3.0","vitest":"^1.0.0"},"peerDependencies":{"langchain":">=0.1.0"},"peerDependenciesMeta":{"langchain":{"optional":true}},"gitHead":"16c374093d4c191458b7c81a2e4de4b2cdfda7ef","_id":"@asterpay-io/x402@1.0.0","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-lLAN5hxWop/uahQeQQfGPfBuUOHVmoYqg5SDK7U2SadLZnSO0KrYAfaTeL0jCRgjzPaeg4hZjLKgkFdDaxGCJw==","shasum":"697ff227b12cb00e450f5bb370430aee04daaf43","tarball":"https://registry.npmjs.org/@asterpay-io/x402/-/x402-1.0.0.tgz","fileCount":28,"unpackedSize":166626,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCarD0D2QR1cI+2l5wZwliDgxqRm1jjjop4TvKcDSsE7wIgNKuiKpTr+ubrnp/NeCIrwT6QiYAQTxmLzFnn07BwQwA="}]},"_npmUser":{"name":"asterpay","email":"petteri@asterpay.io"},"directories":{},"maintainers":[{"name":"asterpay","email":"petteri@asterpay.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/x402_1.0.0_1769532108095_0.24381040469076143"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-27T16:41:48.029Z","1.0.0":"2026-01-27T16:41:48.241Z","modified":"2026-01-27T16:41:48.478Z"},"maintainers":[{"name":"asterpay","email":"petteri@asterpay.io"}],"description":"x402 Protocol SDK - AI Agent Payment Infrastructure for Europe","homepage":"https://asterpay.io/docs/x402","keywords":["x402","payments","ai-agents","crypto","stablecoin","usdc","micropayments","europe","mica","asterpay"],"repository":{"type":"git","url":"git+https://github.com/AsterPay/x402-sdk.git"},"author":{"name":"AsterPay","email":"petteri@asterpay.io"},"bugs":{"url":"https://github.com/AsterPay/x402-sdk/issues"},"license":"MIT","readme":"# @asterpay/x402\r\n\r\n> **The European x402 Leader** - AI Agent Payment Infrastructure\r\n\r\nx402 Protocol SDK for autonomous AI agent payments. MiCA-compliant, GDPR-ready, with EUR off-ramp support.\r\n\r\n## Features\r\n\r\n- 🤖 **AI Agent Wallet** - Autonomous wallets with spending controls\r\n- ⚡ **x402 Protocol** - HTTP 402 Payment Required handling\r\n- 🔒 **Spending Limits** - Per-transaction, hourly, daily, monthly limits\r\n- 🛡️ **Service Allowlists** - Control which services can be paid\r\n- 🔗 **LangChain Integration** - Ready-to-use tools for AI agents\r\n- 🇪🇺 **EU Compliant** - MiCA-ready, GDPR compliant\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @asterpay/x402\r\n# or\r\nyarn add @asterpay/x402\r\n# or\r\npnpm add @asterpay/x402\r\n```\r\n\r\n## Quick Start\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\nimport { createX402Client, createAgentWallet } from '@asterpay/x402';\r\n\r\n// Create a wallet for your AI agent\r\nconst wallet = createAgentWallet({\r\n  name: 'Research Agent',\r\n  privateKey: process.env.AGENT_PRIVATE_KEY!,\r\n  network: 'base',\r\n  spendingLimits: {\r\n    perTransaction: 1.00,  // Max $1 per transaction\r\n    daily: 10.00,          // Max $10 per day\r\n    monthly: 100.00        // Max $100 per month\r\n  },\r\n  allowedServices: [\r\n    'api.openai.com',\r\n    'api.anthropic.com',\r\n    'api.coingecko.com'\r\n  ]\r\n});\r\n\r\n// Create x402 client\r\nconst client = createX402Client({\r\n  wallet: {\r\n    name: 'Research Agent',\r\n    privateKey: process.env.AGENT_PRIVATE_KEY!,\r\n    network: 'base',\r\n    spendingLimits: { daily: 10.00 }\r\n  },\r\n  autoPayEnabled: true,\r\n  debug: true\r\n});\r\n\r\n// Make requests - 402 responses are handled automatically\r\nconst response = await client.fetch('https://api.paid-service.com/premium-data');\r\nconst data = await response.json();\r\n```\r\n\r\n### LangChain Integration\r\n\r\n```typescript\r\nimport { setupAsterPayForLangChain } from '@asterpay/x402/langchain';\r\nimport { ChatOpenAI } from '@langchain/openai';\r\nimport { AgentExecutor, createOpenAIFunctionsAgent } from 'langchain/agents';\r\n\r\n// Quick setup\r\nconst { tools, wallet, client } = setupAsterPayForLangChain({\r\n  privateKey: process.env.AGENT_KEY!,\r\n  network: 'base',\r\n  dailyLimit: 10,\r\n  monthlyLimit: 100\r\n});\r\n\r\n// Available tools:\r\n// - asterpay_check_balance: Check wallet balance\r\n// - asterpay_check_spending: Check spending limits\r\n// - asterpay_paid_fetch: Fetch URLs with automatic payment\r\n// - asterpay_get_transactions: Get transaction history\r\n\r\nconst llm = new ChatOpenAI({ model: 'gpt-4' });\r\nconst agent = await createOpenAIFunctionsAgent({ llm, tools, prompt });\r\nconst executor = new AgentExecutor({ agent, tools });\r\n\r\n// Agent can now make paid API calls autonomously\r\nconst result = await executor.invoke({\r\n  input: 'Fetch the latest Bitcoin price from the premium API'\r\n});\r\n```\r\n\r\n### Agent Wallet Features\r\n\r\n```typescript\r\nimport { createAgentWallet } from '@asterpay/x402';\r\n\r\nconst wallet = createAgentWallet({\r\n  name: 'Trading Bot',\r\n  privateKey: process.env.BOT_KEY!,\r\n  network: 'base',\r\n  spendingLimits: {\r\n    perTransaction: 0.50,\r\n    hourly: 5.00,\r\n    daily: 20.00,\r\n    monthly: 200.00\r\n  },\r\n  allowedServices: ['api.coingecko.com', 'api.dexscreener.com'],\r\n  blockedServices: ['gambling.com'],\r\n  autoPayEnabled: true,\r\n  maxAutoPayAmount: 0.10\r\n});\r\n\r\n// Check balance\r\nconst balance = await wallet.getBalance();\r\nconsole.log(`Balance: $${balance}`);\r\n\r\n// Check if payment would be allowed\r\nconst check = wallet.canPay({ \r\n  amount: 0.05, \r\n  service: 'api.coingecko.com' \r\n});\r\nconsole.log(check); // { allowed: true }\r\n\r\n// Get spending summary\r\nconst spending = wallet.getSpendingSummary();\r\nconsole.log(spending.daily); // { spent: 2.50, limit: 20, remaining: 17.50 }\r\n\r\n// Get transaction history\r\nconst txs = wallet.getTransactions({ limit: 10 });\r\n```\r\n\r\n### Custom Approval Logic\r\n\r\n```typescript\r\nconst client = createX402Client({\r\n  wallet: walletConfig,\r\n  autoPayEnabled: true,\r\n  onApproval: async (payment, context) => {\r\n    // Custom logic before payment\r\n    console.log(`Payment request from ${context.url}`);\r\n    console.log(`Amount: ${payment.maxAmountRequired}`);\r\n    \r\n    // Return true to approve, false to reject\r\n    const amountUsd = parseInt(payment.maxAmountRequired) / 1_000_000;\r\n    return amountUsd < 1.00; // Only approve < $1\r\n  },\r\n  onTransaction: (tx) => {\r\n    console.log(`Payment completed: ${tx.txHash}`);\r\n    // Log to analytics, update UI, etc.\r\n  },\r\n  onError: (error) => {\r\n    console.error('Payment error:', error);\r\n    // Alert, retry logic, etc.\r\n  }\r\n});\r\n```\r\n\r\n## Supported Networks\r\n\r\n| Network | Chain ID | Status |\r\n|---------|----------|--------|\r\n| Base | 8453 | ✅ Mainnet |\r\n| Base Sepolia | 84532 | ✅ Testnet |\r\n| Polygon | 137 | ✅ Mainnet |\r\n| Polygon Amoy | 80002 | ✅ Testnet |\r\n| Arbitrum | 42161 | ✅ Mainnet |\r\n| Arbitrum Sepolia | 421614 | ✅ Testnet |\r\n| Ethereum | 1 | ✅ Mainnet |\r\n| Ethereum Sepolia | 11155111 | ✅ Testnet |\r\n| BNB Chain | 56 | ✅ Mainnet |\r\n| BNB Testnet | 97 | ✅ Testnet |\r\n\r\n## API Reference\r\n\r\n### `createX402Client(options)`\r\n\r\nCreates an x402 client for handling HTTP 402 responses.\r\n\r\n```typescript\r\nconst client = createX402Client({\r\n  wallet: AgentWalletConfig,\r\n  autoPayEnabled?: boolean,    // Default: true\r\n  onApproval?: PaymentApprovalCallback,\r\n  onTransaction?: TransactionCallback,\r\n  onError?: ErrorCallback,\r\n  debug?: boolean              // Default: false\r\n});\r\n```\r\n\r\n### `createAgentWallet(config)`\r\n\r\nCreates an AI agent wallet with spending controls.\r\n\r\n```typescript\r\nconst wallet = createAgentWallet({\r\n  name: string,\r\n  privateKey: string,\r\n  network: SupportedNetwork,\r\n  spendingLimits?: SpendingLimits,\r\n  allowedServices?: string[],\r\n  blockedServices?: string[],\r\n  autoPayEnabled?: boolean,\r\n  maxAutoPayAmount?: number\r\n});\r\n```\r\n\r\n### `setupAsterPayForLangChain(config)`\r\n\r\nQuick setup for LangChain integration.\r\n\r\n```typescript\r\nconst { tools, wallet, client } = setupAsterPayForLangChain({\r\n  privateKey: string,\r\n  network?: string,\r\n  name?: string,\r\n  dailyLimit?: number,\r\n  monthlyLimit?: number,\r\n  perTransactionLimit?: number\r\n});\r\n```\r\n\r\n## Security Best Practices\r\n\r\n1. **Never commit private keys** - Use environment variables\r\n2. **Set spending limits** - Always configure limits for agent wallets\r\n3. **Use allowlists** - Restrict which services can receive payments\r\n4. **Monitor transactions** - Use `onTransaction` callback for logging\r\n5. **Test on testnet first** - Use Base Sepolia or Polygon Amoy\r\n\r\n```typescript\r\n// ✅ Good: Environment variable\r\nconst wallet = createAgentWallet({\r\n  privateKey: process.env.AGENT_PRIVATE_KEY!,\r\n  ...\r\n});\r\n\r\n// ❌ Bad: Hardcoded key\r\nconst wallet = createAgentWallet({\r\n  privateKey: '0x1234...', // NEVER DO THIS\r\n  ...\r\n});\r\n```\r\n\r\n## EUR Off-Ramp (Coming Soon)\r\n\r\nAsterPay is the only x402 facilitator with EUR off-ramp support:\r\n\r\n```typescript\r\n// Coming in v1.1\r\nimport { createEurOffRamp } from '@asterpay/x402';\r\n\r\nconst offRamp = createEurOffRamp({\r\n  apiKey: process.env.ASTERPAY_API_KEY!,\r\n  iban: 'DE89370400440532013000'\r\n});\r\n\r\n// Automatically convert USDC to EUR\r\nawait offRamp.withdraw({\r\n  amount: 100, // $100 USDC\r\n  // Arrives in EUR via SEPA Instant\r\n});\r\n```\r\n\r\n## Support\r\n\r\n- 📧 Email: petteri@asterpay.io\r\n- 📚 Docs: https://asterpay.io/docs\r\n- 💬 Telegram: https://t.me/asterpaycommunity\r\n- 🐦 Twitter: https://x.com/asterpayio\r\n\r\n## License\r\n\r\nMIT © AsterPay\r\n","readmeFilename":"README.md","_rev":"1-20687e4a7fc48a7c24d29c0ed37a539e"}