{
  "markdown": "# Junto\n\n> The payment protocol for people and agents.\n\nSend and receive money through any AI assistant. Any payment rail. Built-in guardrails.\n\nNamed after [Benjamin Franklin's Junto](https://en.wikipedia.org/wiki/Junto_(club)) — a society of tradesmen who built civic infrastructure together. Different providers, same table, mutual benefit.\n\n---\n\n## Why\n\nAI 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.\n\nJunto fixes that with one MCP server that:\n\n- Exposes a **universal payment toolkit** to any MCP-compatible client (Claude, Cursor, custom agents)\n- Routes to the **right provider** based on currency, country, and rail\n- Enforces **spending limits** so agents can't go rogue\n- Supports **human-in-the-loop** confirmation for high-value transactions\n- Logs **every action** for audit and accountability\n\n## Tools\n\n| Tool | Description |\n|---|---|\n| `pay` | Send money to a destination (Pix key, email, IBAN, etc.) |\n| `charge` | Create a payment request / invoice / QR code |\n| `status` | Check payment status by correlation ID |\n| `refund` | Reverse a completed transaction |\n| `balance` | Check available funds on a provider |\n| `providers` | List configured providers and their capabilities |\n| `limits` | Show spending limits and today's usage |\n\n## Quick Start\n\n```bash\nnpm install -g junto-mcp\n```\n\nSet your provider API key:\n\n```bash\nexport WOOVI_APP_ID=\"your-woovi-app-id\"\n```\n\nRun as CLI (human mode):\n\n```bash\njunto pay 25.00 maria@email.com\njunto charge 10.00 \"Coffee\"\njunto balance\n```\n\nRun as MCP server (for AI clients):\n\n```bash\njunto --mcp\n```\n\n### Portuguese / Portugues\n\nJunto auto-detects your system language, or set manually:\n\n```bash\nJUNTO_LANG=pt-BR junto ajuda\njunto pagar 25.00 maria@email.com\njunto cobrar 10.00 \"Cafe\"\njunto saldo\n```\n\nSee [CLI.md](CLI.md) for the full command reference in both languages.\n\n### Add to Claude Desktop or Cursor\n\n```json\n{\n  \"mcpServers\": {\n    \"junto\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"junto-mcp\"],\n      \"env\": {\n        \"WOOVI_APP_ID\": \"your-woovi-app-id\"\n      }\n    }\n  }\n}\n```\n\nThat's it. Your AI assistant now has payment tools.\n\n## Guardrails\n\nAll amounts are in **cents** (smallest currency unit).\n\n| Setting | Env Var | Default | Meaning |\n|---|---|---|---|\n| Daily limit | `JUNTO_DAILY_LIMIT` | 50000 (R$500) | Max total spend per day |\n| Per-tx max | `JUNTO_PER_TX_MAX` | 20000 (R$200) | Max single transaction |\n| Confirm above | `JUNTO_CONFIRM_ABOVE` | 5000 (R$50) | Ask human before sending |\n| Allowed providers | `JUNTO_ALLOWED_PROVIDERS` | _(all)_ | Comma-separated allowlist |\n| Allowed destinations | `JUNTO_ALLOWED_DESTINATIONS` | _(all)_ | Comma-separated type allowlist |\n\nWhen 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.\n\n```\n⚠️ Confirmation required\n\n  Amount:      BRL 150.00\n  To:          maria@email.com\n  Reason:      Amount (15000 cents) exceeds confirmation threshold (5000 cents)\n\nPlease confirm with the user before proceeding.\n```\n\n## Architecture\n\n```\n┌─────────────────────────────────────┐\n│  MCP Client (Claude, Cursor, etc.)  │\n└──────────────┬──────────────────────┘\n               │ MCP Protocol (stdio)\n┌──────────────▼──────────────────────┐\n│           junto-mcp                 │\n│                                     │\n│  ┌───────────┐  ┌────────────────┐  │\n│  │  Router    │  │  Guardrails    │  │\n│  │  (picks    │  │  (spend caps,  │  │\n│  │  provider) │  │  HITL confirm, │  │\n│  │           │  │  audit log)    │  │\n│  └─────┬─────┘  └────────────────┘  │\n│        │                            │\n│  ┌─────▼─────────────────────────┐  │\n│  │  Provider Adapters            │  │\n│  │  ┌────────┐ ┌──────┐ ┌────┐  │  │\n│  │  │ Woovi  │ │Stripe│ │Wise│  │  │\n│  │  └────────┘ └──────┘ └────┘  │  │\n│  └───────────────────────────────┘  │\n│                                     │\n│  ┌───────────────────────────────┐  │\n│  │  Audit Ledger (JSONL)         │  │\n│  └───────────────────────────────┘  │\n└─────────────────────────────────────┘\n```\n\n## Providers\n\n| Provider | Region | Rails | Status |\n|---|---|---|---|\n| **Woovi/OpenPix** | Brazil | Pix | 🟢 Live (tested with real Pix transactions) |\n| **Ebanx** | Brazil + LATAM | Pix payouts, Boleto, Cards | 🟡 Next |\n| **Belvo** | Brazil | Open Finance (all banks) | 🟡 Next |\n| **Stripe** | Global | Cards, ACH, SEPA | 🟡 Next |\n| **Wise** | Global | Bank transfers | 🔴 Planned |\n| **Mercado Pago** | LATAM | Pix, Cards | 🔴 Planned |\n| **PayPal** | Global | Email-based | 🔴 Planned |\n\n### Why Woovi/Pix first?\n\n- Pix settles **instantly** (perfect for demos and real use)\n- Brazil's Central Bank mandates open APIs for payments\n- 180M+ Pix users, 80B+ transactions in 2025\n- Pix Automático (launched June 2025) enables recurring payments\n- Low fees, no intermediaries\n- **Verified:** charge, status, and payment flows tested with real Pix transactions (March 2026)\n\n## Demo\n\n```\nYou:   \"Pay R$25 to maria@email.com via Pix\"\n\nAgent:  I'll send the following payment:\n          Amount: R$ 25,00\n          To: maria@email.com (Pix)\n          Via: Woovi\n        Shall I go ahead?\n\nYou:   \"Yes\"\n\nAgent:  Done! Payment sent.\n          Amount: R$ 25,00\n          To: maria@email.com\n          Via: Pix (Woovi)\n          Status: Completed\n          ID: junto-1739612345-a1b2c3\n```\n\n## Adding a Provider\n\nEach provider is a single file implementing the `PaymentProvider` interface:\n\n```typescript\n// src/providers/your-provider.ts\nimport { PaymentProvider } from \"../types.js\";\n\nexport class YourProvider implements PaymentProvider {\n  name = \"your-provider\";\n  supportedCurrencies = [\"USD\"];\n  supportedRails = [\"card\"];\n  settlementTime = \"1-3 days\";\n\n  async pay(req) { /* send money */ }\n  async charge(req) { /* create invoice */ }\n  async status(id) { /* check status */ }\n  async refund(id) { /* reverse payment */ }\n  async balance() { /* check funds */ }\n  info() { /* return capabilities */ }\n}\n```\n\nCopy `src/providers/_template.ts` to get started, then register your provider in `src/index.ts`.\n\n## Testing\n\n```bash\nnpm test              # Guardrail unit tests\nnpm run test:smoke    # Full flow smoke tests (mock provider)\n```\n\n### Live testing with real Pix\n\n```bash\n# Create a Pix charge (R$1.00)\nWOOVI_APP_ID=your-key npx tsx test/live-pix.ts charge 100 \"Test charge\"\n\n# Check status\nWOOVI_APP_ID=your-key npx tsx test/live-pix.ts status <correlation-id>\n\n# Send a Pix payment\nWOOVI_APP_ID=your-key npx tsx test/live-pix.ts pay 100 user@email.com EMAIL\n\n# Refund\nWOOVI_APP_ID=your-key npx tsx test/live-pix.ts refund <correlation-id>\n```\n\n### Interactive demo\n\n```bash\nnpx tsx demo/demo.ts          # Full demo with typewriter narration + real API calls\nnpx tsx demo/demo.ts --fast   # Fast mode for rehearsals\n```\n\n## Audit Log\n\nEvery transaction is logged to `~/.junto/audit-YYYY-MM-DD.jsonl`:\n\n```json\n{\n  \"timestamp\": \"2026-02-15T14:32:07Z\",\n  \"type\": \"payment\",\n  \"action\": \"pay\",\n  \"tool\": \"pay\",\n  \"amount\": 2500,\n  \"currency\": \"BRL\",\n  \"provider\": \"woovi\",\n  \"destination\": \"maria@email.com\",\n  \"status\": \"executed\"\n}\n```\n\n## Roadmap\n\n- [x] Core MCP server with universal tool interface\n- [x] Woovi/OpenPix provider (Pix) — **live-tested with real transactions**\n- [x] Guardrails (daily limits, per-tx max, HITL confirmation)\n- [x] Audit ledger\n- [x] junto-skill (Claude behavioral layer)\n- [x] Interactive demo (`npx tsx demo/demo.ts`)\n- [ ] Ebanx provider (Pix payouts, Boleto, Cards — Brazil + LATAM)\n- [ ] Belvo provider (Open Finance — all Brazilian banks)\n- [ ] Stripe provider (Cards, ACH, SEPA)\n- [ ] junto-approve (Telegram/WhatsApp confirmation for HITL)\n- [ ] junto-dashboard (web UI for tx history and limits)\n- [ ] junto-compute (agent-to-agent budget delegation)\n- [ ] AP2 compatibility layer (Google Agent Payments Protocol)\n- [ ] Wise provider (international bank transfers)\n\n## Contributing\n\nWe need help with:\n\n- **Provider adapters** — Ebanx, Stripe, Wise, Belvo, Mercado Pago, PayPal, UPI\n- **Routing logic** — Cheapest vs fastest vs most reliable provider selection\n- **HITL patterns** — Approval flows across different MCP clients\n- **Security audit** — Review of the guardrails and auth system\n- **Multi-currency** — FX handling, cross-border routing\n- **Docs** — Compliance and regulatory guides per region\n\n## License\n\nMIT\n",
  "bytes": 8614,
  "sha": "e6cb6490e3894e91f07e8f39658223116397fde83b4d2db48335e0838b462bd9",
  "repo_slug": "vrllrv/junto-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_vrllrv_junto_mcp_ec4d402c/readme"
}