Junto Mcp

by vrllrv

276 downloads
Not rated
GitHub

About

The payment protocol for people and agents. One MCP server, any payment rail. Multi-provider routing (Woovi/Pix, Stripe, Belvo), spending guardrails, human-in-the-loop confirmation, and audit logging.

Details

Author
vrllrv
Downloads
276
Categories
Other, AI

- Universal payment toolkit accessible via MCP protocol
- Supports pay, charge, status, refund, balance, providers, and limits tools
- Configurable spending limits per day and per transaction
- Human-in-the-loop confirmation for high-value payments
- Provider allowlisting and destination type filtering
- Full audit ledger stored as JSONL files

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Junto Mcp
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install globally with npm install -g junto-mcp, set your provider API key (e.g., WOOVI_APP_ID), then run junto-mcp. For Claude Desktop or Cursor, add the server configuration in the mcpServers JSON block with the appropriate environment variables.

pay

Send money to a destination via the best available provider. Amount in cents.

charge

Create a payment request, invoice, or QR code.

status

Check payment or charge status by correlation ID.

refund

Refund a completed payment by correlation ID.

balance

Check available funds on a payment provider.

providers

List configured payment providers and their capabilities.

limits

Check current spending limits and today's usage (all values in cents).

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "junto mcp": {
            "junto-mcp": {
                "command": "npx",
                "args": [
                    "-y",
                    "junto-mcp"
                ],
                "env": {
                    "WOOVI_APP_ID": "your-woovi-app-id",
                    "JUNTO_DAILY_LIMIT": "50000",
                    "JUNTO_TX_MAX": "10000",
                    "JUNTO_CONFIRM_ABOVE": "5000"
                }
            }
        }
    }
}

McpServers

{
    "junto-mcp": {
        "command": "npx",
        "args": [
            "-y",
            "junto-mcp"
        ],
        "env": {
            "WOOVI_APP_ID": "your-woovi-app-id",
            "JUNTO_DAILY_LIMIT": "50000",
            "JUNTO_TX_MAX": "10000",
            "JUNTO_CONFIRM_ABOVE": "5000"
        }
    }
}

Junto

> 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.

---

Why

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:

- Exposes a universal payment toolkit to any MCP-compatible client (Claude, Cursor, custom agents)
- Routes to the right provider based on currency, country, and rail
- Enforces spending limits so agents can't go rogue
- Supports human-in-the-loop confirmation for high-value transactions
- Logs every action for audit and accountability

Tools

| 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 |

Quick Start

npm install -g junto-mcp

Set your provider API key:

export WOOVI_APP_ID="your-woovi-app-id"

Run:

junto-mcp

Add to Claude Desktop or Cursor

{
  "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.

Guardrails

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.

Architecture

┌─────────────────────────────────────┐
│  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)         │  │
│  └───────────────────────────────┘  │
└─────────────────────────────────────┘

Providers

| Provider | Region | Rails | Status |
|---|---|---|---|
| Woovi/OpenPix | Brazil | Pix | 🟢 Shipped |
| 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 |

Why Woovi/Pix first?

- Pix settles instantly (perfect for demos and real use)
- Brazil's Central Bank mandates open APIs for payments
- 180M+ Pix users, 80B+ transactions in 2025
- Pix Automático (launched June 2025) enables recurring payments
- Low fees, no intermediaries

Demo

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

Adding a Provider

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.

Testing

npm test

Runs guardrail tests covering: amount limits, daily budget tracking, confirmation thresholds, provider allowlists, and destination type filtering.

Audit Log

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"
}

Roadmap

- [x] Core MCP server with universal tool interface
- [x] Woovi/OpenPix provider (Pix)
- [x] Guardrails (daily limits, per-tx max, HITL confirmation)
- [x] Audit ledger
- [x] junto-skill (Claude behavioral layer)
- [ ] Belvo provider (Open Finance — all Brazilian banks)
- [ ] Stripe provider (Cards, ACH, SEPA)
- [ ] junto-approve (Telegram/WhatsApp confirmation for HITL)
- [ ] junto-dashboard (web UI for tx history and limits)
- [ ] junto-compute (agent-to-agent budget delegation)
- [ ] AP2 compatibility layer (Google Agent Payments Protocol)
- [ ] Wise provider (international bank transfers)

Contributing

We need help with:

- Provider adapters — Stripe, Wise, Belvo, Mercado Pago, PayPal, UPI
- Routing logic — Cheapest vs fastest vs most reliable provider selection
- HITL patterns — Approval flows across different MCP clients
- Security audit — Review of the guardrails and auth system
- Multi-currency — FX handling, cross-border routing
- Docs — Compliance and regulatory guides per region

License

MIT

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.