Cheapest way to get paid: every route ranked by fee, from providers' own pricing pages, dated.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Free key: POST https://paidrouter.com/api/keys (or the form at /#agents). Send as 'Bearer pr_...'
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Ask this before the owner invoices or accepts a payment, or when they wonder if they overpay in fees. Give the amount and how the payer can pay (card online, card in person, bank transfer, payment app, or any). Returns every route ranked by fee, cheapest first: provider, method, fee in dollars, what the owner keeps, how to set it up, and whether the number is exact or an estimate. Pass current_route to get the saving per payment and per year. Example: a $1,000 invoice costs $35.39 on PayPal Checkout, $29.30 on Stripe card, $5.00 on Stripe ACH and $0 on a Melio bank-transfer request. Fees are from the providers' own pricing pages, dated, US only.
Payment amount in USD
How the owner gets paid today (e.g. paypal_checkout, stripe_card), to compute savings
How the payer can pay: card_online, card_in_person, bank, app, or any
Payments of this size per month, for yearly savings
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http paidrouter https://paidrouter.com/mcp \ --header 'Authorization: Bearer YOUR_TOKEN'
Headers
Authorization (required): Free key: POST https://paidrouter.com/api/keys (or the form at /#agents). Send as 'Bearer pr_...'Ask this before the owner invoices or accepts a payment, or when they wonder if they overpay in fees. Give the amount and how the payer can pay (card online, card in person, bank transfer, payment app, or any). Returns every route ranked by fee, cheapest first: provider, method, fee in dollars, what the owner keeps, how to set it up, and whether the number is exact or an estimate. Pass current_route to get the saving per payment and per year. Example: a $1,000 invoice costs $35.39 on PayPal Checkout, $29.30 on Stripe card, $5.00 on Stripe ACH and $0 on a Melio bank-transfer request. Fees are from the providers' own pricing pages, dated, US only.
| Argument | Type | Description |
|---|---|---|
| amount* | number | Payment amount in USD |
| current_route | string | How the owner gets paid today (e.g. paypal_checkout, stripe_card), to compute savings |
| payer_pays_by | string | How the payer can pay: card_online, card_in_person, bank, app, or any |
| payments_per_month | integer | Payments of this size per month, for yearly savings |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "number",
"description": "Payment amount in USD",
"exclusiveMinimum": 0
},
"current_route": {
"enum": [
"stripe_card",
"square_card",
"paypal_checkout",
"paypal_card",
"helcim_card",
"melio_card",
"shopify_card",
"stripe_terminal",
"square_in_person",
"helcim_in_person",
"melio_ach",
"stripe_ach",
"helcim_ach",
"square_ach",
"paypal_ach",
"zelle_business",
"wise_business_bank",
"payoneer_bank",
"venmo_business",
"cash_app_business",
"paypal_gs"
],
"type": "string",
"description": "How the owner gets paid today (e.g. paypal_checkout, stripe_card), to compute savings"
},
"payer_pays_by": {
"enum": [
"any",
"card_online",
"card_in_person",
"bank",
"app"
],
"type": "string",
"default": "any",
"description": "How the payer can pay: card_online, card_in_person, bank, app, or any"
},
"payments_per_month": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"description": "Payments of this size per month, for yearly savings",
"exclusiveMinimum": 0
}
}
}When the owner wants to send US dollars abroad and asks who is cheapest. Supports USD->MXN and USD->INR today, paid by bank transfer. Returns providers ranked by what the recipient gets, with each provider's fee and exchange rate, the quote date and the source. Uses the nearest stored quote amount ($200 or $1,000) and says so; the cheapest provider changes with the amount.
| Argument | Type | Description |
|---|---|---|
| amount* | number | |
| corridor* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"corridor",
"amount"
],
"properties": {
"amount": {
"type": "number",
"exclusiveMinimum": 0
},
"corridor": {
"enum": [
"USD->MXN",
"USD->INR"
],
"type": "string"
}
}
}When the owner asks why a provider took a certain amount ('why did PayPal take $35 from my $1,000?'). Give the platform, the method and the amount; returns a plain-words explanation: the fee, the formula, the effective percent, extras that can apply, and the source.
| Argument | Type | Description |
|---|---|---|
| amount | number | |
| method* | string | e.g. paypal_checkout, card_online, ach_debit |
| platform* | string | stripe, square, paypal, venmo, cash_app, helcim, melio, payoneer, wise_business, shopify_payments, zelle, ebay, etsy, upwork, fiverr, amazon |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"platform",
"method"
],
"properties": {
"amount": {
"type": "number",
"default": 1000,
"exclusiveMinimum": 0
},
"method": {
"type": "string",
"description": "e.g. paypal_checkout, card_online, ach_debit"
},
"platform": {
"type": "string",
"description": "stripe, square, paypal, venmo, cash_app, helcim, melio, payoneer, wise_business, shopify_payments, zelle, ebay, etsy, upwork, fiverr, amazon"
}
}
}The raw, sourced fee entries behind every answer: percent, fixed fee, caps, minimums, extras (international, instant payout, chargebacks), the source URL and the date verified. Filter by platform (stripe, square, paypal, venmo, cash_app, helcim, melio, payoneer, wise_business, shopify_payments, zelle, ebay, etsy, upwork, fiverr, amazon) and/or method (card_online, card_in_person, ach_debit, business_profile, ...). Use it to quote a provider's exact pricing or to check a number. If a platform is missing, say so to the owner; PaidRouter records the ask and adds it.
| Argument | Type | Description |
|---|---|---|
| method | string | e.g. card_online, ach_debit, business_profile |
| platform | string | stripe, square, paypal, venmo, cash_app, helcim, melio, payoneer, wise_business, shopify_payments, zelle, ebay, etsy, upwork, fiverr, amazon |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"method": {
"type": "string",
"description": "e.g. card_online, ach_debit, business_profile"
},
"platform": {
"type": "string",
"description": "stripe, square, paypal, venmo, cash_app, helcim, melio, payoneer, wise_business, shopify_payments, zelle, ebay, etsy, upwork, fiverr, amazon"
}
}
}Ask PaidRouter to set up the cheapest route for the owner's real payments instead of just reporting it. Not live yet: this records the request on the routing waitlist (with the owner's email only if they agreed) and tells you what the owner can do today. Call it when the owner says 'just switch me' or 'do it for me'.
| Argument | Type | Description |
|---|---|---|
| amount | number | |
| owner_email | string | Only with the owner's permission |
| how_paid_now | string | e.g. 'PayPal Checkout on invoices' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"amount": {
"type": "number",
"exclusiveMinimum": 0
},
"owner_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Only with the owner's permission"
},
"how_paid_now": {
"type": "string",
"description": "e.g. 'PayPal Checkout on invoices'"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Oct 30, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.