riOs is an MCP server. Connect it to Claude, ChatGPT, Cursor or any MCP client and your AI can cover your subscriptions for the months you can afford. You approve once in PayPal, riOs locks the money for that subscription and pays every renewal on its due date.
Connect your AI. Paste the connector link into your AI's connector settings (guides below).
Ask.“Pay for my design tool, $25 a month to billing@designtool.com, renewing today. Cover it for 3 months.”
Approve in PayPal. Your AI gives you a PayPal link. You approve. riOs locks the money and you're covered.
riOs runs on PayPal's sandbox during the hackathon. No real money moves. Use a PayPal sandbox personal account to approve.
Connect your AI
Every client talks to the same endpoint, https://api.riospay.xyz/mcp, using MCP's Streamable HTTP transport. Your key goes in an Authorization: Bearer header, or inside the URL for clients that only accept a link.
In Claude, open Settings → Customize → Connectors → Add custom connector.
Name it riOs and paste your connector link. Choose No sign-in.
Turn on riOs in a chat's tools menu.
Connector link
https://api.riospay.xyz/mcp/k/<your-key>
On chatgpt.com, open Settings → Apps & Connectors → Advanced and turn on Developer mode.
Create a connector named riOs, paste the connector link as the server URL, authentication None.
“Cover my design tool for 3 months.” Your AI calls rios_quote: $25 × 3 = $75, no fee.
2
riOs creates a PayPal order
rios_fund_subscription creates the checkout and returns the approve link.
Orders v2 · create
3
You approve in PayPal
Only you can. Your AI never sees your login or card.
4
riOs captures and locks
The money is locked for that one subscription and payee. The PayPal return page and rios_check_funding both capture, safely, at most once.
Orders v2 · capture
5
Every renewal date, riOs pays
A daily job pays exactly one month to the provider and moves the date forward.
Payouts v1
↺
Changed your mind?
Within 3 days, rios_cancel_deposit refunds whatever hasn't been paid out yet.
Payments v2 · refund
Step
PayPal API
Safety
Fund
POST /v2/checkout/orders
Amount checked against the quote on capture
Lock
POST /v2/checkout/orders/{id}/capture
Idempotent: confirming twice never captures twice
Pay renewal
POST /v1/payments/payouts
One payout per renewal; failures return the money to the balance
Refund
POST /v2/payments/captures/{id}/refund
Only the unspent part, only inside the window
Every money-moving call sends a PayPal-Request-Id, so a retry can never charge or pay twice.
The rules
Locked to one payee
Once funded, a subscription's payee and amount can't change. Even a tricked AI can't send locked money anywhere else.
Only you approve
Every payment is approved by you inside PayPal. The AI can prepare it, never press pay.
3-day cancel window
Cancel within 72 hours for a refund of everything not yet paid out. After that it stays locked for the provider.
Failed payout? Nothing lost
If PayPal rejects a payout, the money goes back to the balance and the subscription pauses for review.
Never pays itself
riOs refuses any payee that is riOs's own PayPal account.
Your key, your scope
A key only sees its own subscriptions. riOs stores a fingerprint of it, never the key itself.
MCP tools
Generated from the running server. Typical flow: rios_add_subscription → rios_quote → rios_fund_subscription → user approves → rios_check_funding.
rios_add_subscription
Add a subscription
Add a subscription riOs should pay. payee_email is the PayPal account that receives each renewal payment. Once funded, the payee and amount can no longer change.
Input
Type
About
namerequired
string
What it is, e.g. "Spotify" or "Design tool"
payee_emailrequired
string
PayPal email address of whoever gets paid each month
Show every subscription with its locked balance, how many renewals are covered, the date it is paid through, fundings waiting for approval and deposits that can still be cancelled.
Create a PayPal checkout to cover a subscription for N months. Returns approve_url: give it to the user, who approves the payment in PayPal themselves. After approval the funds are locked for this subscription.
Cancel a deposit within 3 days of approval and refund the part not yet paid out to the user's PayPal. After 3 days deposits are locked and this will refuse. Also cancels a funding that is still waiting for approval (nothing was paid, so nothing is refunded). Confirm with the user before calling.
Input
Type
About
deposit_idrequired
string
From rios_list_subscriptions (cancellable_deposits or waiting_for_approval)
Given an amount of money, suggest how many months of each subscription it can cover, filling them one month at a time in priority order. Does not charge anything.
Input
Type
About
budgetrequired
string
Amount available, e.g. "50"
subscription_ids
array
Optional priority order. Defaults to all active subscriptions.
Sandbox only. Live mode is blocked in code until riOs is registered and approved for live Payouts.
Providers need PayPal. Payouts only reach PayPal accounts. Netflix, Spotify and other big brands come next through virtual cards: one card per subscription, topped up from the locked balance on renewal day.
Limits. Up to 24 months per funding, $1–$1,000 a month, 25 subscriptions per account.
Coming: renewal notifications, more ways to fund (cards, bank, local rails), and gifting a subscription to someone else.
Source code
riOs is open source (MIT) with zero dependencies: Node 20+, PayPal REST, MCP.
Run it yourself
git clone https://github.com/nedsoft057/riOs.git
cd riOs && cp .env.example .env # add your PayPal sandbox app keys
npm test # runs against a fake PayPal
npm start # http://localhost:8787/mcp