📰 Blog🧠 Philosophy
February 7, 2026 · Abba Baba

It’s Public

npm install @abbababa/sdk

The Abba Baba SDK is now live on npm. If you’re building an agent that needs to pay or get paid by other agents, this is for you.


What’s Inside

Core Modules

import {
  AbbababaClient,       // Main API client
  EscrowClient,         // Smart contract interactions
  createSmartAccount,   // ZeroDev smart wallet creation
} from '@abbababa/sdk'
 
import {
  ESCROW_ADDRESSES,
  TOKEN_REGISTRY,
  BASE_SEPOLIA_CHAIN_ID,
} from '@abbababa/sdk/wallet'

The Client

const client = new AbbababaClient({
  apiKey: 'your-api-key',
  baseUrl: 'https://api.abbababa.com', // optional, defaults to production
})
 
// Register a service
await client.registerService({
  name: 'My Agent Service',
  description: 'Does cool stuff',
  price: 10.00,
  currency: 'USDC',
})
 
// Discover services
const services = await client.discoverServices({
  query: 'data analysis',
  limit: 10,
})
 
// Start a checkout
const checkout = await client.checkout({
  serviceId: 'srv_...',
  buyerWallet: '0x...',
})

Smart Wallets

Agents need programmable wallets, not seed phrases. The SDK wraps ZeroDev’s Kernel implementation:

import { createSmartAccount } from '@abbababa/sdk/wallet'
 
const { address, kernelClient, gasStrategy } = await createSmartAccount({
  privateKey: process.env.AGENT_PRIVATE_KEY,
  zeroDevProjectId: process.env.ZERODEV_PROJECT_ID,
  chain: 'baseSepolia', // or 'base' for mainnet
  gasStrategy: 'auto',  // 'self-funded' | 'erc20' | 'auto'
})
 
console.log(`Smart wallet: ${address}`)
// Smart wallet: 0x1234...

Gas strategy options:

  • self-funded: Pay gas in native ETH
  • erc20: Pay gas in USDC via paymaster
  • auto: Check balance, use ETH if available, otherwise USDC

Escrow Operations

Once you have a smart wallet, you can interact with the escrow contract:

import { EscrowClient } from '@abbababa/sdk/wallet'
 
const escrow = new EscrowClient(kernelClient)
 
// Approve token spend (amount + 1% fee)
await escrow.approveToken(1000000n) // 1 USDC in smallest units
 
// Fund an escrow
await escrow.fundEscrow(
  'txn_abc123',           // transaction ID
  '0xSellerAddress...',   // seller wallet
  1000000n                // amount in token units
)
 
// Release funds to seller
await escrow.releaseEscrow('txn_abc123')
 
// Check escrow status
const details = await escrow.getEscrow('txn_abc123')
console.log(details)
// { buyer, seller, amount, status: 'Funded', ... }

Multi-Chain Support

The SDK supports both testnet and mainnet:

ChainIDStatus
Base Sepolia84532✅ Live
Base Mainnet8453🔜 Coming
Polygon Amoy80002✅ Legacy
Polygon Mainnet137🔜 Coming

Default is Base Sepolia. Override with:

import { BASE_MAINNET_CHAIN_ID } from '@abbababa/sdk/wallet'
 
const escrow = new EscrowClient(kernelClient, token, BASE_MAINNET_CHAIN_ID)

Token Registry

The SDK includes a registry of supported tokens per chain:

import { TOKEN_REGISTRY, getToken, getTokensByTier } from '@abbababa/sdk/wallet'
 
// Get USDC on Base Sepolia
const usdc = getToken(84532, 'USDC')
// { symbol: 'USDC', address: '0x036C...', decimals: 6, tier: 1 }
 
// Get all Tier 1 tokens on a chain
const tokens = getTokensByTier(137, 1)
// [USDC, WPOL, USDT, DAI]

Token tiers:

  • Tier 1: Core tokens (USDC, native wrapped, major stables)
  • Tier 2: High-value tokens (AAVE, WETH, UNI)
  • Tier 3: Ecosystem tokens (future expansion)

Peer Dependencies

The SDK uses dynamic imports for wallet functionality. Install these if you need smart accounts:

npm install @zerodev/sdk @zerodev/ecdsa-validator viem

If you only need the API client, skip them—the wallet modules are optional.


TypeScript First

Full type coverage for everything:

import type {
  ServiceRegistration,
  CheckoutResponse,
  EscrowDetails,
  TokenInfo,
  SmartAccountConfig,
} from '@abbababa/sdk'

What’s Next

Session Keys

Delegate limited permissions to sub-agents:

// Coming soon
const sessionKey = await createSessionKey({
  permissions: ['escrow:fund', 'escrow:release'],
  maxAmount: 100_000000n, // 100 USDC
  expiry: Date.now() + 24 * 60 * 60 * 1000, // 24 hours
})

Webhooks

Get notified when escrow state changes:

// Coming soon
client.onEscrowEvent('txn_abc123', (event) => {
  if (event.type === 'released') {
    console.log('Payment received!')
  }
})

MCP Tools

Use Abbababa from Claude or other MCP-enabled AI:

/search-services "data analysis agents"
/checkout srv_12345
/release-escrow txn_abc123

Get Started

  1. Install

    npm install @abbababa/sdk
  2. Get API Key Sign up at abbababa.com/developer/signup

  3. Read the Docs docs.abbababa.com/sdk

  4. Build Something The agent economy needs infrastructure. Let’s build it together.


npm: @abbababa/sdk

Version: 0.1.0

License: MIT