voulti-mcp
Accept crypto payments from AI agents: create an invoice in one call and get a hosted checkout link (USDC/USDT on Celo, Base, Arbitrum, Polygon, BSC). No API key, instant self-custody settlement.
README
Voulti
Crypto payment gateway for merchants. Accept USDC, USDT and stablecoins on 5 networks.
Architecture
apps/
checkout/ React + Vite — customer payment page
merchant/ Next.js — merchant dashboard
api/ Fastify — backend API
contracts/
core/ DerampProxy + modules (Hardhat, Solidity ^0.8.28)
packages/
shared/ Shared utilities
Networks
| Network | Chain ID | Tokens |
|---|---|---|
| Celo | 42220 | USDC, USDT, COPm |
| Arbitrum | 42161 | USDC, USD₮0 |
| Polygon | 137 | USDC, USDT0 |
| Base | 8453 | USDC |
| BSC | 56 | USDC, USDT |
For AI agents
Voulti is agent-usable end to end — the integration API needs no API key:
- MCP server:
claude mcp add voulti -- npx -y voulti-mcp— toolscreate_invoice,get_invoice,get_payment_link. Seemcp/README.md. - Agent skill:
npx skills add csacanam/voulti— or read it at voulti.com/skill.md. - Plain HTTP:
POST https://api.voulti.com/invoiceswith{ commerce_id, amount_fiat, reference? }→ hosted checkout link. LLM index: voulti.com/llms.txt.
Features
- Self-service registration — merchant connects wallet, names business, done
- Two payment methods — Connect Wallet or Pay by Address (QR + deposit)
- Multi-chain balances — aggregated by token, network auto-selected
- Send funds — withdraw to any wallet from dashboard
- HD wallet sweep — automatic deposit detection and settlement
- Partial/over payment handling — auto-refund on overpay, wait on partial
- i18n — Spanish and English
Smart Contracts
Modular proxy architecture deployed on 5 networks:
- DerampProxy — entry point, routes calls to modules
- DerampStorage — centralized data store
- AccessManager — roles, token/commerce whitelisting
- InvoiceManager — invoice lifecycle
- PaymentProcessor — payment execution, fee calculation
- TreasuryManager — service fee collection
- WithdrawalManager — commerce fund withdrawals
See contracts/core/deployed-addresses/PRODUCTION.md for all addresses.
Operator Wallet
0x21581Cb82D9a66126fBe7639f4AF55DdfEA48E26 — deploys contracts, whitelists commerces, sends gas for HD wallet sweeps.
Local Development
# Prerequisites: Node 18+, pnpm
pnpm install
cd contracts/core && npm install
# Start Hardhat node (terminal 1)
npx hardhat node
# Deploy + setup (terminal 2)
cd contracts/core
npx hardhat run scripts/setup-local.ts --network localhost
# Start API (terminal 3)
pnpm dev:api
# Start checkout (terminal 4)
pnpm dev:checkout
# Start merchant dashboard (terminal 5)
pnpm dev:merchant
API Endpoints
| Method | Path | Auth | Description |
|---|---|---|---|
| POST | /commerces | Privy | Register commerce |
| GET | /commerces/:id | Public | Commerce info |
| GET | /commerces/:id/balances | Privy | Multi-chain balances |
| POST | /invoices | Privy | Create invoice |
| GET | /invoices/:id | Public | Invoice details + tokens |
| POST | /blockchain/create | Public | Create on-chain invoice |
| GET | /blockchain/status/:id | Public | On-chain invoice status |
| POST | /deposit/generate | Public | Generate HD deposit address |
| GET | /deposit/status/:id | Public | Deposit monitoring status |
| GET | /stats | Public | Revenue stats (building in public) |
| GET | /prices/rates | Public | Fiat + token rates from DB |
| POST | /prices/update-fiat-rates | Cron | Update fiat rates (OpenExchangeRates) |
| POST | /prices/update-token-prices | Cron | Update token prices (CoinGecko) |
Cron Jobs
Configure these as scheduled jobs in DigitalOcean (or any scheduler):
| Job | URL | Schedule | Description |
|---|---|---|---|
| Fiat rates | POST /prices/update-fiat-rates |
Every hour | Updates USD→COP/EUR/BRL/MXN/ARS rates from OpenExchangeRates |
| Token prices | POST /prices/update-token-prices |
Every hour | Updates USDC/USDT/COPm rates from CoinGecko |
| Expire invoices | POST /orders/expire-orders |
Every minute | Marks expired invoices as Expired |
| Process emails | POST /notifications/process-emails |
Every minute | Sends payment confirmation emails via Resend |
| Process webhooks | POST /notifications/process-url-confirmations |
Every minute | Calls commerce confirmation URLs |
Base URL: https://api.voulti.com
Requires env vars: OPENEXCHANGERATE_APPID, COINGECKO_APIKEY, RESEND_APIKEY.
Environment Variables
See .env.example for all required variables.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.