MCP Hub
Back to servers

tempo-mcp

MCP server enabling AI agents to execute autonomous stablecoin payments on Tempo blockchain. Supports single/batch payments, scheduled transfers, token swaps, and balance queries with built-in spending limits, audit logging and many more

GitHub
Stars
6
Tools
60
Updated
Dec 28, 2025
Validated
Jan 9, 2026

tempo-mcp

npm

MCP server for Tempo blockchain stablecoin payments — Enable AI agents to autonomously execute real-world payments.

Testnet Only — This MCP currently operates on Tempo testnet. No real funds are used. Perfect for experimentation and development!


TL;DR

Add to Claude Desktop config (~/.config/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "tempo": {
      "command": "npx",
      "args": ["tempo-mcp"],
      "env": { "TEMPO_PRIVATE_KEY": "0xYOUR_PRIVATE_KEY" }
    }
  }
}

Then ask Claude: "What's my AlphaUSD balance?"

Need testnet tokens? Get free AlphaUSD at docs.tempo.xyz/faucet


What Can I Ask?

You SayWhat Happens
"What's my balance?"Checks your AlphaUSD balance
"Send 100 AlphaUSD to 0x..."Sends a single payment
"Pay invoice INV-001 for $500 to 0x..."Payment with memo for reconciliation
"Process payroll from employees.csv"Batch payments to multiple recipients
"Send concurrent payments to 50 vendors"Parallel payments (10-100x faster than sequential)
"Swap 1000 AlphaUSD to BetaUSD"Exchange stablecoins on Tempo DEX
"Schedule payment of $200 to 0x... for tomorrow 9am"Future-dated payment
"Who has the ISSUER_ROLE on AlphaUSD?"Query token role members
"Grant PAUSE_ROLE to 0x..."Assign role to address (requires admin)
"Pause the AlphaUSD token"Emergency pause all transfers
"Create a whitelist policy"Create new TIP-403 compliance policy
"Is 0x... whitelisted in policy 1?"Check address compliance status
"Add 0x... to the whitelist"Whitelist address (requires policy owner)
"Can 0x... transfer to 0x...?"Pre-validate transfer compliance
"Send 100 AlphaUSD to 0x... with sponsored gas"Gasless payment (fee paid by sponsor)
"What's the sponsor's balance?"Check fee sponsor token balance
"Get access key info for 0x..."Query session key details and status
"Check remaining limit for access key 0x..."View spending allowance left
"Revoke access key 0x..."Permanently disable a session key
"What's my reward status for AlphaUSD?"Check opt-in status and pending rewards
"Opt into rewards for AlphaUSD"Start earning pro-rata token rewards
"Distribute 1000 AlphaUSD rewards"Distribute rewards to opted-in holders
"Claim my pending rewards"Claim accrued rewards to your wallet
"What's the Fee AMM pool info for AlphaUSD?"Check pool reserves and LP supply
"Add 1000 AlphaUSD liquidity to the Fee AMM"Provide liquidity to earn conversion fees
"What's my LP position in the Fee AMM?"View your share and underlying token value
"Show the AlphaUSD orderbook"View bid/ask levels on the DEX
"Place a limit buy for 100 AlphaUSD at tick -10"Create a resting order at $0.9999
"Place a flip order: buy at -10, flip to sell at 10"Auto-reversing market maker order
"What are my open orders?"List your active DEX orders
"Cancel order 12345"Cancel an open order and get refund

What is tempo-mcp?

tempo-mcp is a Model Context Protocol (MCP) server that bridges AI assistants with the Tempo blockchain, enabling autonomous stablecoin payments for agentic commerce.

Why This Matters

AI agents are evolving from assistants into autonomous actors that can take real-world actions. However, they currently lack the ability to handle financial transactions safely. tempo-mcp solves this by providing:

  • Autonomous Payments: AI agents can send stablecoin payments without human intervention
  • Built-in Safety: Spending limits, address allowlists, and rate limiting prevent runaway transactions
  • Audit Trail: Every transaction is logged for compliance and reconciliation
  • Memo Support: 32-byte memos enable invoice matching and payment reconciliation

Use Cases

  • Payroll Automation: Process batch payments from CSV files
  • Invoice Settlement: Match payments to invoices using memo fields
  • Treasury Management: Rebalance multi-token portfolios automatically
  • Micropayments: Enable pay-per-use AI services
  • Compliance Management: Automate KYC/AML whitelist maintenance and transfer validation
  • Delegated Agent Signing: Use access keys (session keys) for AI agents with spending limits
  • Fee Liquidity Provision: Earn yields by providing liquidity to the Fee AMM for gas conversions
  • Automated Market Making: Place flip orders that oscillate between buy/sell for stablecoin arbitrage

Features

Payment Operations

  • Single Payments — Send TIP-20 stablecoin transfers with optional memos
  • Batch Payments — Atomic multi-recipient transfers (up to 100 recipients)
  • Concurrent Payments — Parallel execution using nonceKeys (10-100x faster for large batches)
  • Scheduled Payments — Protocol-level future payments with execution windows
  • Sponsored Payments — Gasless transactions where a sponsor pays fees (local key or relay service)

Query Operations

  • Balance Queries — Check single or multiple token balances
  • Transaction Lookups — Get transaction details and history
  • Gas Estimation — Estimate transaction costs

Token Operations

  • Token Creation — Deploy new TIP-20 tokens via factory contract
  • Mint/Burn — Token supply management (requires ISSUER_ROLE)
  • Swap — Exchange stablecoins on Tempo's native DEX
  • Role Management — Grant, revoke, and query TIP-20 roles (admin, issuer, pause, unpause)
  • Pause Control — Emergency pause/unpause token transfers (requires PAUSE_ROLE/UNPAUSE_ROLE)
  • Policy Compliance — TIP-403 whitelist/blacklist management and pre-transfer validation
  • Rewards Management — TIP-20 opt-in rewards: opt-in/out, claim rewards, set recipient, view status
  • Fee AMM Liquidity — Provide liquidity to the gas fee conversion pool and earn from stablecoin swaps
  • DEX Advanced Orders — Limit orders, flip orders (auto-reversing), orderbook queries, and order management

Security

  • Spending Limits — Per-token and daily USD limits
  • Address Allowlist — Whitelist or blocklist recipient addresses
  • Rate Limiting — Configurable limits per operation type
  • Audit Logging — Structured JSON logs with request tracing
  • Access Keys (Session Keys) — Delegated signing with per-token spending limits and expiration

Wallet Support

  • Private Key — Direct key for development/testing
  • Keystore — Encrypted JSON keystore for production
  • External Signers — Turnkey/Fireblocks integration for enterprise

Quick Start

Prerequisites

  • Node.js 20.0.0 or higher
  • npm, pnpm, or yarn
  • A Tempo testnet wallet with AlphaUSD tokens

First time? Get a wallet and free testnet tokens at docs.tempo.xyz/faucet

Installation

Via npm (global install):

npm install -g tempo-mcp

Via npx (no installation):

npx tempo-mcp

From source:

git clone https://github.com/arome3/tempo-mcp
cd tempo-mcp
npm install
npm run build

Configuration

  1. Create a .env file:
cp .env.example .env
  1. Add your wallet private key:
# Required
TEMPO_PRIVATE_KEY=0x...  # Your wallet private key

# Network (defaults to testnet)
TEMPO_RPC_URL=https://rpc.testnet.tempo.xyz
TEMPO_CHAIN_ID=42429
  1. Run the server:
npm start
# or
npx tempo-mcp

Installation with your IDE

Select your MCP client below for detailed setup instructions.

Note: If you're using a client not listed here, you can still use tempo-mcp by manually adding the server configuration to your client's MCP settings.


Claude Desktop

Download and install Claude Desktop if you haven't already.

Manual Setup:

  1. Open Claude Desktop
  2. Go to Settings (gear icon) → Developer
  3. Click Edit Config to open the configuration file
    • macOS/Linux: ~/.config/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  4. Add the following configuration:
{
  "mcpServers": {
    "tempo": {
      "command": "npx",
      "args": ["tempo-mcp"],
      "env": {
        "TEMPO_PRIVATE_KEY": "0x...",
        "TEMPO_RPC_URL": "https://rpc.testnet.tempo.xyz"
      }
    }
  }
}
  1. Save the file and restart Claude Desktop

Claude Code (CLI)

Install Claude Code if you haven't already.

1-Click Setup:

claude mcp add tempo-mcp -e TEMPO_PRIVATE_KEY=0x... -- npx tempo-mcp

Manual Setup:

  1. Open your terminal
  2. Run claude mcp add tempo-mcp to add the server
  3. Or edit the config file directly:
    • macOS: ~/.claude/settings.json
    • Linux: ~/.claude/settings.json
    • Windows: %USERPROFILE%\.claude\settings.json
  4. Add the configuration:
{
  "mcpServers": {
    "tempo": {
      "command": "npx",
      "args": ["tempo-mcp"],
      "env": {
        "TEMPO_PRIVATE_KEY": "0x..."
      }
    }
  }
}
  1. Verify with /mcp command inside Claude Code

Cursor

Download and install Cursor if you haven't already.

Manual Setup:

  1. Open a project in Cursor and navigate to Cursor Settings (⌘+Shift+J on macOS)
  2. In the settings menu, go to the MCP section
  3. Click New MCP Server. This will open your mcp.json configuration file
    • Global: ~/.cursor/mcp.json
    • Project-level: .cursor/mcp.json (in project root)
  4. Add the following configuration:
{
  "mcpServers": {
    "tempo": {
      "command": "npx",
      "args": ["tempo-mcp"],
      "env": {
        "TEMPO_PRIVATE_KEY": "0x..."
      }
    }
  }
}
  1. Save and restart Cursor

Tip: Project-level configs (.cursor/mcp.json) override global configs.


Windsurf

Download and install Windsurf if you haven't already.

Manual Setup:

  1. Open Windsurf and go to Settings (⌘+, on macOS)
  2. Navigate to CascadePlugins
  3. Click View raw config to open the MCP configuration file
    • macOS: ~/.codeium/windsurf/mcp_config.json
    • Linux: ~/.config/.codeium/windsurf/mcp_config.json
    • Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json
  4. Add the following configuration:
{
  "mcpServers": {
    "tempo": {
      "command": "npx",
      "args": ["tempo-mcp"],
      "env": {
        "TEMPO_PRIVATE_KEY": "0x..."
      }
    }
  }
}
  1. Save and restart Windsurf

VS Code + Continue

Install the Continue extension in VS Code.

Manual Setup:

  1. Open VS Code and click the Continue icon in the sidebar
  2. Click the gear icon → Open config.yaml
    • macOS: ~/.continue/config.yaml
    • Linux: ~/.continue/config.yaml
    • Windows: %USERPROFILE%\.continue\config.yaml
  3. Add the following configuration (YAML format):
mcpServers:
  - name: tempo
    command: npx
    args:
      - tempo-mcp
    env:
      TEMPO_PRIVATE_KEY: "0x..."
  1. Save and reload VS Code

Note: MCP tools are only available in Continue's Agent mode.


Cline

Install the Cline extension in VS Code.

Manual Setup:

  1. Open VS Code and click the Cline icon in the sidebar
  2. Click the MCP Servers icon in the top navigation bar
  3. Select the Configure tab, then click Advanced MCP Settings
  4. This opens the config file at:
    • macOS: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
    • Windows: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
    • Linux: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  5. Add the following configuration:
{
  "mcpServers": {
    "tempo": {
      "command": "npx",
      "args": ["tempo-mcp"],
      "env": {
        "TEMPO_PRIVATE_KEY": "0x..."
      },
      "alwaysAllow": [],
      "disabled": false
    }
  }
}
  1. Save and the server will be available immediately

Generic MCP Client

For custom MCP clients or programmatic usage:

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const transport = new StdioClientTransport({
  command: "npx",
  args: ["tempo-mcp"],
  env: {
    TEMPO_PRIVATE_KEY: process.env.TEMPO_PRIVATE_KEY,
  },
});

const client = new Client({ name: "my-agent", version: "1.0.0" }, {});
await client.connect(transport);

// Now you can call tools
const result = await client.callTool({
  name: "get_balance",
  arguments: { token: "AlphaUSD" },
});

MCP Tools Reference

Payment Tools (High Risk)

ToolDescriptionKey Parameters
send_paymentSend a single TIP-20 token transfertoken, to, amount, memo?
batch_paymentsAtomic multi-recipient transfertoken, payments[] (max 100)
schedule_paymentCreate a scheduled future paymenttoken, to, amount, executeAt
cancel_scheduled_paymentCancel a pending scheduled paymenttransactionHash
send_sponsored_paymentGasless payment (sponsor pays fees)token, to, amount, useRelay?
estimate_sponsored_gasEstimate gas for sponsored txtoken, to, amount, feeToken?
get_sponsor_balanceCheck sponsor's token balancesponsor?, token?
send_concurrent_paymentsParallel payments using nonceKeys (10-100x faster)payments[], startNonceKey?
get_nonce_for_keyGet nonce for a specific nonceKeynonceKey, address?
list_active_nonce_keysList all nonceKeys with nonce > 0address?

Query Tools (Low Risk)

ToolDescriptionKey Parameters
get_balanceGet token balance for an addresstoken, address?
get_balancesGet multiple token balancestokens[], address?
get_account_infoGet account details (type, tx count)address
get_transactionGet transaction by hashhash
get_gas_estimateEstimate gas for a transactionto, amount, token

Token Tools (High Risk)

ToolDescriptionKey Parameters
create_tokenDeploy a new TIP-20 tokenname, symbol, decimals, initialSupply
get_token_infoGet token metadatatoken
mint_tokensMint tokens (requires role)token, to, amount
burn_tokensBurn tokens (requires role)token, amount
grant_roleGrant a role to an addresstoken, role, account
revoke_roleRevoke a role from an addresstoken, role, account
renounce_roleRenounce your own roletoken, role
has_roleCheck if address has roletoken, role, account
get_role_membersList all members of a roletoken, role
pause_tokenPause all token transferstoken, reason?
unpause_tokenResume token transferstoken, reason?

Policy Tools (TIP-403 Compliance)

ToolDescriptionKey Parameters
create_policyCreate a new compliance policypolicyType, admin?, initialAccounts?
check_transfer_compliancePre-validate if transfer is allowedtoken, from, to
get_policy_infoGet policy detailspolicyId
is_whitelistedCheck if address is whitelistedpolicyId, account
is_blacklistedCheck if address is blacklistedpolicyId, account
add_to_whitelistAdd address to whitelistpolicyId, account
remove_from_whitelistRemove from whitelistpolicyId, account
add_to_blacklistBlock an addresspolicyId, account
remove_from_blacklistUnblock an addresspolicyId, account
burn_blocked_tokensBurn tokens from blocked addresstoken, blockedAddress, amount

Policy Types: whitelist (only approved addresses can transact) or blacklist (block specific addresses). Built-in policies: 0 (always reject), 1 (always allow). Custom policies start at ID 2.

Access Key Tools (Session Keys)

ToolDescriptionKey Parameters
get_access_key_infoGet access key details (type, expiry, limits)accountAddress, keyId
get_remaining_limitCheck remaining spending allowanceaccountAddress, keyId, token
revoke_access_keyPermanently disable an access keykeyId
update_spending_limitModify token spending limit for a keykeyId, token, newLimit

Rewards Tools (TIP-20 Rewards)

ToolDescriptionKey Parameters
opt_in_rewardsOpt into token rewards programtoken
opt_out_rewardsOpt out of rewards (optionally claim pending)token, claimPending?
claim_rewardsClaim pending rewardstoken
distribute_rewardsDistribute rewards to opted-in holders (issuer)token, amount, duration?
get_pending_rewardsCheck pending reward amounttoken, address?
set_reward_recipientSet auto-forward address for rewardstoken, recipient
get_reward_statusGet full reward status and token statstoken, address?

Duration: Set duration=0 for instant distribution. Time-based streaming rewards (duration > 0) are planned for future protocol updates.

Exchange Tools

ToolDescriptionKey Parameters
get_swap_quoteGet DEX quote for swapfromToken, toToken, amount
swap_stablecoinsExecute stablecoin swapfromToken, toToken, amount, slippage?

Fee AMM Tools (Liquidity Management)

ToolDescriptionKey Parameters
get_fee_pool_infoGet pool reserves, LP supply, and swap rateuserToken, validatorToken?
get_lp_positionCheck LP balance and underlying token valueuserToken, validatorToken?, address?
estimate_fee_swapQuote output for fee token conversionfromToken, toToken, amount
add_fee_liquidityAdd liquidity to earn conversion feesuserToken, amountUser, amountValidator
remove_fee_liquidityWithdraw liquidity and LP tokensuserToken, lpAmount

DEX Advanced Tools (Orderbook Trading)

ToolDescriptionKey Parameters
place_limit_orderPlace a resting limit order on the orderbooktoken, amount, side, tick
place_flip_orderPlace auto-reversing order for market makingtoken, amount, side, tick, flipTick
cancel_orderCancel open order and refund tokensorderId
get_orderbookView bid/ask levels and spreadbaseToken, quoteToken?, depth?
get_my_ordersList your open/filled/cancelled orderstoken?, status?
get_order_statusGet order details and fill percentageorderId

Tick Pricing: Price = 1 + tick/100,000. Tick 0 = $1.0000, tick -10 = $0.9999, tick 10 = $1.0001


MCP Resources Reference

Resources provide read-only access to blockchain data via URI patterns:

URI PatternDescription
tempo://networkNetwork configuration and current block
tempo://account/{address}Account info and token balances
tempo://token/{address}TIP-20 token metadata
tempo://token/{address}/rolesToken role assignments and pause status
tempo://token/{address}/rewardsToken rewards status (opt-in, pending, stats)
tempo://tx/{hash}Transaction details
tempo://block/{number|"latest"}Block information
tempo://policy/{id}TIP-403 policy details (type, owner, token count)
tempo://policy/{id}/whitelist/{address}Check if address is whitelisted
tempo://policy/{id}/blacklist/{address}Check if address is blacklisted
tempo://access-key/{account}/{keyId}Access key info (type, expiry, revoked status)
tempo://access-key/{account}/{keyId}/limit/{token}Remaining spending limit for token
tempo://fee-amm/{userToken}/{validatorToken}Fee AMM pool info (reserves, LP supply, swap rate)
tempo://dex/orderbook/{baseToken}DEX orderbook with bid/ask levels
tempo://dex/order/{orderId}Order details and fill status

Example Usage:

Read tempo://account/0x742d35Cc6634C0532925a3b844Bc9e7595f0bEbb

MCP Prompts Reference

Prompts provide reusable conversation templates:

PromptDescriptionParameters
payment-receiptGenerate formatted payment receipttransactionHash
reconciliation-reportMatch transactions to invoicesstartDate, endDate, memoPrefix?
payroll-summarySummarize batch payment resultsbatchTransactionHash
spending-reportAnalyze spending by recipientperiod, groupBy?
role-auditAudit token role assignmentstoken
compliance-reportGenerate TIP-403 compliance status reportaddresses, policyId?, token?
rewards-summarySummarize rewards status and pending claimstoken, address?
fee-amm-summarySummarize Fee AMM pool status and LP positionuserToken, address?

Configuration

Environment Variables

VariableDescriptionDefault
Network
TEMPO_RPC_URLRPC endpoint URLhttps://rpc.testnet.tempo.xyz
TEMPO_CHAIN_IDChain ID42429
TEMPO_EXPLORER_URLBlock explorer URLhttps://explore.tempo.xyz
Wallet
TEMPO_PRIVATE_KEYWallet private key (0x-prefixed)
TEMPO_KEYSTORE_PATHPath to encrypted keystore
TEMPO_KEYSTORE_PASSWORDKeystore decryption password
Security
TEMPO_MAX_SINGLE_PAYMENTMax single payment amount1000
TEMPO_DAILY_LIMITDaily spending limit10000
TEMPO_ALLOWLIST_ENABLEDEnable address restrictionsfalse
TEMPO_RATE_LIMITMax tool calls per minute60
Logging
TEMPO_LOG_LEVELLog level (debug/info/warn/error)info
TEMPO_AUDIT_LOG_ENABLEDEnable audit loggingtrue
TEMPO_AUDIT_LOG_PATHAudit log file path./logs/audit.jsonl
Fee Sponsorship
TEMPO_FEE_SPONSORSHIP_ENABLEDEnable gasless transactionsfalse
TEMPO_FEE_PAYER_TYPESponsor mode (local or relay)local
TEMPO_FEE_PAYER_ADDRESSFee payer wallet address
TEMPO_FEE_PAYER_KEYFee payer private key (local mode)
TEMPO_FEE_RELAY_URLRelay service URLhttps://sponsor.testnet.tempo.xyz
Tokens
TEMPO_DEFAULT_TOKENDefault payment tokenAlphaUSD

Configuration File

Create tempo-mcp.config.yaml for advanced configuration:

network:
  rpcUrl: https://rpc.testnet.tempo.xyz
  chainId: 42429
  explorerUrl: https://explore.tempo.xyz

wallet:
  type: privateKey  # or 'keystore', 'external'

security:
  spendingLimits:
    maxSinglePayment:
      "*": "1000"           # Default for all tokens
      AlphaUSD: "5000"      # Override for specific token
    dailyLimit:
      "*": "10000"
    dailyTotalUSD: "50000"
    maxBatchSize: 50
    maxBatchTotalUSD: "25000"

  addressAllowlist:
    enabled: true
    mode: allowlist         # or 'blocklist'
    addresses:
      - "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEbb"
    labels:
      "0x742d35Cc...": "Payroll Account"

  rateLimits:
    toolCalls:
      windowMs: 60000
      maxCalls: 60
    highRiskOps:
      windowMs: 3600000
      maxCalls: 100

logging:
  level: info
  auditLog:
    enabled: true
    path: ./logs/audit.jsonl
    rotationDays: 30

feeSponsorship:
  enabled: true
  feePayer:
    type: local              # or 'relay' for testnet relay service
    address: "0x..."         # Fee payer wallet address
    privateKey: "0x..."      # Fee payer private key (local mode only)
    relayUrl: "https://sponsor.testnet.tempo.xyz"  # Relay endpoint
  maxSponsoredPerDay: "1000" # Daily sponsorship limit

Configuration Priority

  1. Environment variables (highest priority)
  2. Config file (tempo-mcp.config.yaml/yml/json)
  3. Default values (lowest priority)

Security

tempo-mcp includes multiple security layers to protect against unauthorized transactions:

Spending Limits

Prevent large or excessive payments:

security:
  spendingLimits:
    maxSinglePayment:
      "*": "1000"           # Max $1000 per transaction
    dailyLimit:
      "*": "10000"          # Max $10,000 per day per token
    dailyTotalUSD: "50000"  # Max $50,000 per day total

Address Allowlist

Restrict which addresses can receive payments:

security:
  addressAllowlist:
    enabled: true
    mode: allowlist         # Only allow listed addresses
    addresses:
      - "0x..."             # Approved recipient
    labels:
      "0x...": "Vendor A"   # Human-readable label

Rate Limiting

Prevent abuse and runaway agents:

security:
  rateLimits:
    toolCalls:
      windowMs: 60000       # 1 minute window
      maxCalls: 60          # Max 60 calls per minute
    highRiskOps:
      windowMs: 3600000     # 1 hour window
      maxCalls: 100         # Max 100 high-risk ops per hour

Audit Logging

All operations are logged for compliance:

{"timestamp":"2024-12-17T10:30:00Z","requestId":"abc123","tool":"send_payment","status":"success","tx":"0x...","amount":"100","to":"0x..."}

Examples

Basic Payment

User: "Send 50 AlphaUSD to 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEbb"

→ Claude calls send_payment({
    token: "AlphaUSD",
    to: "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEbb",
    amount: "50"
  })

→ Returns: {
    success: true,
    transactionHash: "0xabc123...",
    explorerUrl: "https://explore.tempo.xyz/tx/0xabc123..."
  }

Payment with Memo (Invoice Reconciliation)

User: "Pay invoice #INV-2024-001 for 1500 AlphaUSD to 0x..."

→ Claude calls send_payment({
    token: "AlphaUSD",
    to: "0x...",
    amount: "1500",
    memo: "INV-2024-001"
  })

Batch Payroll

User: "Process this month's payroll from employees.csv"

→ Claude calls batch_payments({
    token: "AlphaUSD",
    payments: [
      { to: "0x...", amount: "5000", label: "Alice" },
      { to: "0x...", amount: "4500", label: "Bob" },
      { to: "0x...", amount: "6000", label: "Carol" }
    ]
  })

Sponsored (Gasless) Payment

User: "Send 100 AlphaUSD to 0x... using sponsored gas"

→ Claude calls send_sponsored_payment({
    token: "AlphaUSD",
    to: "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEbb",
    amount: "100",
    useRelay: false  // Use local fee payer
  })

→ Returns: {
    success: true,
    transactionHash: "0xdef456...",
    feePayer: "0xabc...",
    feeAmount: "0.000073"
  }

Example Agents

Explore complete agent implementations in the /examples directory:

ExampleDescription
Basic UsageSimple balance checks and payments
Payroll AgentCSV-based batch payroll processing
Invoice AgentAP automation with memo reconciliation
Treasury AgentMulti-token portfolio management
Compliance AgentTIP-403 whitelist/blacklist management
Market Maker AgentDEX orderbook trading with flip orders

Development

Setup

git clone https://github.com/arome3/tempo-mcp
cd tempo-mcp
npm install

Available Scripts

ScriptDescription
npm run devStart with hot reload (tsx watch)
npm run buildBuild TypeScript to dist/
npm startRun compiled server
npm testRun tests in watch mode
npm run test:runRun tests once (CI mode)
npm run lintRun ESLint
npm run formatFormat with Prettier
npm run typecheckTypeScript type checking

Testing

# Run all tests
npm test

# Run with coverage
npm run test:run -- --coverage

# Run specific test file
npm test -- src/security/spending-limits.test.ts

Network Information

Tempo Testnet (Andantino)

PropertyValue
Chain ID42429
RPC URLhttps://rpc.testnet.tempo.xyz
Explorerhttps://explore.tempo.xyz
Block Time~0.6 seconds
Faucetdocs.tempo.xyz/quickstart/faucet

Default Tokens

TokenAddress
AlphaUSD0x20c0000000000000000000000000000000000001

Documentation


Tech Stack

CategoryTechnology
LanguageTypeScript 5.7
RuntimeNode.js 20+
ProtocolMCP SDK 1.0
Blockchainviem 2.21, tempo.ts 0.10
ValidationZod 3.25
LoggingPino 8.21
Buildtsup, tsx
TestingVitest
LintingESLint, Prettier

Troubleshooting

"Connection refused" error

  • Ensure Node.js 20+ is installed: node --version
  • Check that TEMPO_PRIVATE_KEY is set in your config

"Insufficient balance" error

  • Get testnet tokens from the faucet
  • Verify your balance: ask Claude "What's my balance?"

"Spending limit exceeded"

  • Increase TEMPO_MAX_SINGLE_PAYMENT in your environment or config file
  • Check TEMPO_DAILY_LIMIT if you've made many transactions today

"Token not found" error

  • Use token symbol (AlphaUSD) or full address (0x20c0...0001)
  • Check supported tokens in the Network Information section

Server not responding

  • Restart Claude Desktop after config changes
  • Check logs: tail -f ~/.config/Claude/logs/mcp*.log

License

MIT License — see LICENSE for details.


Acknowledgments

  • Tempo — The stablecoin payments blockchain
  • Anthropic — Model Context Protocol
  • viem — TypeScript Ethereum library

Connect

Built by Abraham Onoja

LinkedIn X (Twitter)

Have questions, feedback, or want to collaborate? Reach out!


Built for the age of agentic commerce

Reviews

No reviews yet

Sign in to write a review