# PaidRouter (remote · paidrouter.com)

Cheapest way to get paid: every route ranked by fee, from providers' own pricing pages, dated.

- Trust score: 58/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `paidrouter.com`: 58/100 (this document), [markdown](https://verifymcp.io/servers/com-paidrouter-paidrouter/paidrouter.md), [page](https://verifymcp.io/servers/com-paidrouter-paidrouter/paidrouter)

## Channel facts

- Endpoint: `https://paidrouter.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.2.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 9 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 406, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 59/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2991 tokens (~332/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 95/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 84% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "compare_send_money" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the PaidRouter MCP server?

PaidRouter is a hosted endpoint at https://paidrouter.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-paidrouter-paidrouter 'https://paidrouter.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-paidrouter-paidrouter": {
      "url": "https://paidrouter.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-paidrouter-paidrouter": {
      "type": "http",
      "url": "https://paidrouter.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-paidrouter-paidrouter]
url = "https://paidrouter.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-paidrouter-paidrouter": {
      "type": "remote",
      "url": "https://paidrouter.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-paidrouter-paidrouter --url 'https://paidrouter.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-paidrouter-paidrouter:
    url: "https://paidrouter.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-paidrouter-paidrouter": {
      "Transport": "http",
      "Url": "https://paidrouter.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-paidrouter-paidrouter -t streamable-http -u 'https://paidrouter.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-paidrouter-paidrouter": {
      "type": "http",
      "url": "https://paidrouter.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 58, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 57, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 56, +1)

- [security] Tool “get_fees” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 269 → 332
- [functional improvement] Stability: unverified → 0.03
- [functional] New tool “request_route”
- [cosmetic] “explain_fees” reworded the description of “platform”
- [cosmetic] “get_fees” reworded the description of “platform”

### 2026-10-30 (score 55)

First indexed and scored.

## MCP tools (9)

### `cheapest_way_to_get_paid` (~310 tokens)

Cheapest way to get paid

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.

Input parameters:

- `amount` (number, required): Payment amount in USD
- `current_route` (string): How the owner gets paid today (e.g. paypal_checkout, stripe_card), to compute savings
- `fresh` (boolean): Re-read the provider's pricing page (or the live FX quote) now instead of using the last check. Slower. Up to 20 page reads per key per day. Use when the owner is about to act on the number.
- `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

### `get_fees` (~724 tokens)

Get fees

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, quickbooks_payments, quickbooks_payments_desktop, freshbooks, wave, xero, gocardless, zoho_payments, bill_com, honeybook, bonsai, invoice2go, jobber, housecall_pro, toast, clover, godaddy_payments, wix_payments, squarespace_payments, lightspeed, sumup, paypal_pos, patreon, gumroad, kofi, buymeacoffee, substack, teachable, kajabi, podia, lemonsqueezy, paddle, fanfix, poshmark, mercari, depop, stockx, reverb, whatnot, airbnb, turo, shopify_collective, ubereats, doordash, ramp, brex, apple_cash, wise, chase, bank_of_america, wells_fargo, deel, remote, gusto, airwallex, revolut_business, mercury, coinbase, coinbase_exchange, coinbase_x402, coinbase_commerce, kraken, gemini, bitpay, strike, circle, skyfire, crossmint) 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.

Input parameters:

- `fresh` (boolean): Re-read the provider's pricing page (or the live FX quote) now instead of using the last check. Slower. Up to 20 page reads per key per day. Use when the owner is about to act on the number.
- `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, quickbooks_payments, quickbooks_payments_desktop, freshbo…

### `explain_fees` (~427 tokens)

Explain fees

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.

Input parameters:

- `amount` (number)
- `fresh` (boolean): Re-read the provider's pricing page (or the live FX quote) now instead of using the last check. Slower. Up to 20 page reads per key per day. Use when the owner is about to act on the number.
- `method` (string, required): e.g. paypal_checkout, card_online, ach_debit
- `platform` (string, required): stripe, square, paypal, venmo, cash_app, helcim, melio, payoneer, wise_business, shopify_payments, zelle, ebay, etsy, upwork, fiverr, amazon, quickbooks_payments, quickbooks_payments_desktop, freshbo…

### `compare_send_money` (~177 tokens)

Compare sending money abroad

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, refreshed daily) and says so; with fresh: true it reads the live quote for the exact amount. The cheapest provider changes with the amount.

Input parameters:

- `amount` (number, required)
- `corridor` (string, required)
- `fresh` (boolean): Re-read the provider's pricing page (or the live FX quote) now instead of using the last check. Slower. Up to 20 page reads per key per day. Use when the owner is about to act on the number.

### `my_effective_rate` (~381 tokens)

My effective rate

What the owner really pays to get paid, from their own exports, next to the published fee for the same payments and the cheapest route their payers can use, with the yearly saving in dollars. Send totals only, one row per route and period: {route, period_start, period_end, gross_volume, fees_paid, payment_count}. Never send customer names, emails or transaction ids; PaidRouter stores only these totals.
Stripe: export the itemized Payout reconciliation report (Reports → Payout reconciliation) or Balance → Balance change from activity, itemized, and add the payment_method_type column. Keep rows with reporting_category = charge. Card rows go to stripe_card (stripe_terminal if taken in person), us_bank_account rows to stripe_ach. Per route, send the sum of gross, the sum of fee and the number of rows, with the first and last created date as the period. Amounts are in dollars. The plain Payouts list export has no per-payment fees; don't use it.
PayPal: Activity → Reports → Activity download, CSV. Keep completed payments received: Status = Completed, positive Gross, Type such as Express Checkout Payment, Website Payment, General Payment or Mobile Payment. Checkout payments go to paypal_checkout (paypal_card if you can tell they were guest card payments), goods-and-services payments from PayPal users go to paypal_gs. Send the sum of Gross, the sum of Fee (PayPal may show it as a negative number; either sign works), and the row count, with the first and last Date as the period.

Input parameters:

- `payer_pays_by` (string): How the owner's payers could pay instead. Default: the same way as today (card stays card). 'any' also counts bank transfer, which needs the payer's agreement.
- `totals` (array, required)

### `report_observed_fee` (~251 tokens)

Report an observed fee

When the owner was charged a fee and you can see it (a Stripe, PayPal or Square payment detail, a statement line), send the route, the payment amount, the fee charged and the date. Returns the published fee for that payment, the difference, and a one-line reading: matches, promo (fee waived or reduced for a while), likely_negotiated (lower than published), or possible_hidden_extra (higher; names the published extra that explains it, such as an international card, when one does). Use it to answer 'was I overcharged?'. Each report also tells PaidRouter how real fees compare to published ones. Send only these numbers; nothing about the payer. Up to 100 reports per key per day.

Input parameters:

- `amount` (number, required): Payment amount in USD
- `charged_on` (string, required): YYYY-MM-DD
- `extras` (string): Anything the statement says about the fee, e.g. 'international card', 'promo rate'. Not stored.
- `fee_charged` (number, required): Fee the provider took on that payment, USD
- `route` (string, required): Route id, e.g. stripe_card, paypal_checkout, venmo_business

### `watch_routes` (~211 tokens)

Watch routes

Tell PaidRouter which routes the owner uses (e.g. stripe_card, paypal_checkout, venmo_business, or a corridor like USD->MXN). From then on, any PaidRouter answer to this key starts with 'Since your last call, routes you watch changed: ...' when a fee or the best FX provider moved. Optionally give an https webhook_url: when the daily check finds a change on a watched route, PaidRouter POSTs {event: 'fee_changes', changes: [...]} to it, signed with HMAC-SHA256 of the raw body using your PaidRouter key as the secret, hex in the x-paidrouter-signature header (sha256=...). Each call replaces the list; send an empty list to stop watching. Up to 50 routes.

Input parameters:

- `routes` (array, required): Route ids (stripe_card), platform/method (stripe/card_online) or corridors (USD->MXN)
- `webhook_url` (string): https URL to POST changes to (optional)

### `request_route` (~169 tokens)

Request coverage

When the owner needs a provider, method, country or corridor PaidRouter doesn't cover yet (get_fees came back empty, or compare_send_money doesn't know the corridor), send what they need. PaidRouter records it, counts it on https://paidrouter.com/coverage, and adds the most-requested coverage every week with the date. Returns what is covered today that comes closest.

Input parameters:

- `country` (string): Country or currency involved, if any
- `kind` (string): What the owner is trying to do
- `note` (string): Anything that helps, e.g. the amount or how often
- `what` (string, required): Provider, method or corridor, e.g. 'QuickBooks Payments', 'Wise → Philippines', 'paying a supplier by ACH', 'GBP receiving'

### `route_it_for_me` (~119 tokens)

Route it for me

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

Input parameters:

- `amount` (number)
- `how_paid_now` (string): e.g. 'PayPal Checkout on invoices'
- `owner_email` (string): Only with the owner's permission

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-paidrouter-paidrouter/paidrouter#diagnostics

## Score history

- 2026-11-05: 58
- 2026-11-04: 58
- 2026-11-03: 57
- 2026-11-02: 57
- 2026-11-01: 56
- 2026-10-31: 56
- 2026-10-30: 55

## Common questions

### What is the PaidRouter MCP server?

PaidRouter is an MCP server listed in the public MCP registry as com.paidrouter/paidrouter. Cheapest way to get paid: every route ranked by fee, from providers' own pricing pages, dated. This page covers its hosted endpoint (https://paidrouter.com/mcp).

### Is the PaidRouter MCP server safe to use?

PaidRouter scores 58 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the PaidRouter MCP server expose?

PaidRouter exposes 9 tools: cheapest_way_to_get_paid, get_fees, explain_fees, compare_send_money, my_effective_rate, and 4 more. Their descriptions and schemas cost roughly 2,769 tokens of context every time the server is loaded.

### Does the PaidRouter MCP server require authentication?

No. We connected to PaidRouter without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the PaidRouter MCP server still maintained?

PaidRouter is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://paidrouter.com/mcp
- Website: https://paidrouter.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-paidrouter-paidrouter/paidrouter.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-paidrouter-paidrouter/paidrouter.json
- HTML version of this page: https://verifymcp.io/servers/com-paidrouter-paidrouter/paidrouter
