Server data from the Official MCP Registry
The payment protocol for people and agents. One MCP server, any payment rail.
The payment protocol for people and agents. One MCP server, any payment rail.
Valid MCP server (2 strong, 4 medium validity signals). 2 known CVEs in dependencies (0 critical, 2 high severity) Package registry verified. Imported from the Official MCP Registry.
5 files analyzed · 3 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: WOOVI_APP_ID
Environment variable: JUNTO_DAILY_LIMIT
Environment variable: JUNTO_TX_MAX
Environment variable: JUNTO_CONFIRM_ABOVE
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-vrllrv-junto-mcp": {
"env": {
"JUNTO_TX_MAX": "your-junto-tx-max-here",
"WOOVI_APP_ID": "your-woovi-app-id-here",
"JUNTO_DAILY_LIMIT": "your-junto-daily-limit-here",
"JUNTO_CONFIRM_ABOVE": "your-junto-confirm-above-here"
},
"args": [
"-y",
"junto-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
The payment protocol for people and agents.
Send and receive money through any AI assistant. Any payment rail. Built-in guardrails.
Named after Benjamin Franklin's Junto — a society of tradesmen who built civic infrastructure together. Different providers, same table, mutual benefit.
AI assistants are starting to move real money — paying invoices, splitting bills, sending transfers. But every payment provider has a different API, different auth, different settlement times. Nobody should have to teach their assistant how Pix works vs Stripe vs Wise.
Junto fixes that with one MCP server that:
| Tool | Description |
|---|---|
pay | Send money to a destination (Pix key, email, IBAN, etc.) |
charge | Create a payment request / invoice / QR code |
status | Check payment status by correlation ID |
refund | Reverse a completed transaction |
balance | Check available funds on a provider |
providers | List configured providers and their capabilities |
limits | Show spending limits and today's usage |
npm install -g junto-mcp
Set your provider API key:
export WOOVI_APP_ID="your-woovi-app-id"
Run as CLI (human mode):
junto pay 25.00 maria@email.com
junto charge 10.00 "Coffee"
junto balance
Run as MCP server (for AI clients):
junto --mcp
Junto auto-detects your system language, or set manually:
JUNTO_LANG=pt-BR junto ajuda
junto pagar 25.00 maria@email.com
junto cobrar 10.00 "Cafe"
junto saldo
See CLI.md for the full command reference in both languages.
{
"mcpServers": {
"junto": {
"command": "npx",
"args": ["-y", "junto-mcp"],
"env": {
"WOOVI_APP_ID": "your-woovi-app-id"
}
}
}
}
That's it. Your AI assistant now has payment tools.
All amounts are in cents (smallest currency unit).
| Setting | Env Var | Default | Meaning |
|---|---|---|---|
| Daily limit | JUNTO_DAILY_LIMIT | 50000 (R$500) | Max total spend per day |
| Per-tx max | JUNTO_PER_TX_MAX | 20000 (R$200) | Max single transaction |
| Confirm above | JUNTO_CONFIRM_ABOVE | 5000 (R$50) | Ask human before sending |
| Allowed providers | JUNTO_ALLOWED_PROVIDERS | (all) | Comma-separated allowlist |
| Allowed destinations | JUNTO_ALLOWED_DESTINATIONS | (all) | Comma-separated type allowlist |
When an agent tries to send above the JUNTO_CONFIRM_ABOVE threshold, the server pauses and returns a confirmation prompt. The agent must relay this to the user and get approval before proceeding.
⚠️ Confirmation required
Amount: BRL 150.00
To: maria@email.com
Reason: Amount (15000 cents) exceeds confirmation threshold (5000 cents)
Please confirm with the user before proceeding.
┌─────────────────────────────────────┐
│ MCP Client (Claude, Cursor, etc.) │
└──────────────┬──────────────────────┘
│ MCP Protocol (stdio)
┌──────────────▼──────────────────────┐
│ junto-mcp │
│ │
│ ┌───────────┐ ┌────────────────┐ │
│ │ Router │ │ Guardrails │ │
│ │ (picks │ │ (spend caps, │ │
│ │ provider) │ │ HITL confirm, │ │
│ │ │ │ audit log) │ │
│ └─────┬─────┘ └────────────────┘ │
│ │ │
│ ┌─────▼─────────────────────────┐ │
│ │ Provider Adapters │ │
│ │ ┌────────┐ ┌──────┐ ┌────┐ │ │
│ │ │ Woovi │ │Stripe│ │Wise│ │ │
│ │ └────────┘ └──────┘ └────┘ │ │
│ └───────────────────────────────┘ │
│ │
│ ┌───────────────────────────────┐ │
│ │ Audit Ledger (JSONL) │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘
| Provider | Region | Rails | Status |
|---|---|---|---|
| Woovi/OpenPix | Brazil | Pix | 🟢 Live (tested with real Pix transactions) |
| Ebanx | Brazil + LATAM | Pix payouts, Boleto, Cards | 🟡 Next |
| Belvo | Brazil | Open Finance (all banks) | 🟡 Next |
| Stripe | Global | Cards, ACH, SEPA | 🟡 Next |
| Wise | Global | Bank transfers | 🔴 Planned |
| Mercado Pago | LATAM | Pix, Cards | 🔴 Planned |
| PayPal | Global | Email-based | 🔴 Planned |
You: "Pay R$25 to maria@email.com via Pix"
Agent: I'll send the following payment:
Amount: R$ 25,00
To: maria@email.com (Pix)
Via: Woovi
Shall I go ahead?
You: "Yes"
Agent: Done! Payment sent.
Amount: R$ 25,00
To: maria@email.com
Via: Pix (Woovi)
Status: Completed
ID: junto-1739612345-a1b2c3
Each provider is a single file implementing the PaymentProvider interface:
// src/providers/your-provider.ts
import { PaymentProvider } from "../types.js";
export class YourProvider implements PaymentProvider {
name = "your-provider";
supportedCurrencies = ["USD"];
supportedRails = ["card"];
settlementTime = "1-3 days";
async pay(req) { /* send money */ }
async charge(req) { /* create invoice */ }
async status(id) { /* check status */ }
async refund(id) { /* reverse payment */ }
async balance() { /* check funds */ }
info() { /* return capabilities */ }
}
Copy src/providers/_template.ts to get started, then register your provider in src/index.ts.
npm test # Guardrail unit tests
npm run test:smoke # Full flow smoke tests (mock provider)
# Create a Pix charge (R$1.00)
WOOVI_APP_ID=your-key npx tsx test/live-pix.ts charge 100 "Test charge"
# Check status
WOOVI_APP_ID=your-key npx tsx test/live-pix.ts status <correlation-id>
# Send a Pix payment
WOOVI_APP_ID=your-key npx tsx test/live-pix.ts pay 100 user@email.com EMAIL
# Refund
WOOVI_APP_ID=your-key npx tsx test/live-pix.ts refund <correlation-id>
npx tsx demo/demo.ts # Full demo with typewriter narration + real API calls
npx tsx demo/demo.ts --fast # Fast mode for rehearsals
Every transaction is logged to ~/.junto/audit-YYYY-MM-DD.jsonl:
{
"timestamp": "2026-02-15T14:32:07Z",
"type": "payment",
"action": "pay",
"tool": "pay",
"amount": 2500,
"currency": "BRL",
"provider": "woovi",
"destination": "maria@email.com",
"status": "executed"
}
npx tsx demo/demo.ts)We need help with:
MIT
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
by Microsoft · Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
by mcp-marketplace · Developer Tools
Scaffold, build, and publish TypeScript MCP servers to npm — conversationally
by mcp-marketplace · Finance
Free stock data and market news for any MCP-compatible AI assistant.