Rift Finance MCP Server
MCP (Model Context Protocol) server that gives AI assistants full access to the Rift Finance platform. Users can send crypto, check balances, offramp to M-Pesa, bridge across chains, and more — just by chatting.
64 tools covering every Rift API endpoint plus documentation search.
Quick Setup
1. Install
cd rift-mcp-server
npm install
npm run build
2. Add to Claude Desktop
Edit ~/.claude/claude_desktop_config.json (Mac: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"rift-finance": {
"command": "node",
"args": ["/absolute/path/to/rift-mcp-server/dist/index.js"],
"env": {
"RIFT_API_KEY": "sk_your_project_api_key"
}
}
}
}
Restart Claude Desktop. You'll see the Rift tools available.
Note:
RIFT_API_KEYis optional in the config — users can also set it at runtime by telling Claude "my Rift API key is sk_..." which callsrift_set_api_key.
3. Add to Claude Code
Edit ~/.claude/settings.json:
{
"mcpServers": {
"rift-finance": {
"command": "node",
"args": ["/absolute/path/to/rift-mcp-server/dist/index.js"],
"env": {
"RIFT_API_KEY": "sk_your_project_api_key"
}
}
}
}
4. Add to Cursor
Go to Settings > MCP Servers > Add Server:
- Name:
rift-finance - Command:
node /absolute/path/to/rift-mcp-server/dist/index.js - Environment Variables:
RIFT_API_KEY:sk_your_project_api_key
5. Add to Any MCP-Compatible Agent
The server uses stdio transport (stdin/stdout JSON-RPC). Any MCP client can connect:
# Run directly
RIFT_API_KEY=sk_your_key node /path/to/rift-mcp-server/dist/index.js
# Or with npx (if published)
RIFT_API_KEY=sk_your_key npx @rift-finance/mcp-server
MCP client config (generic):
{
"command": "node",
"args": ["/path/to/rift-mcp-server/dist/index.js"],
"transport": "stdio",
"env": {
"RIFT_API_URL": "https://rift-sdk-wrapper-j9qe.onrender.com",
"RIFT_API_KEY": "sk_your_key"
}
}
6. Using with the OpenAI Agents SDK / LangChain / Vercel AI SDK
Any framework that supports MCP can use this server. Example with the official MCP client:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const transport = new StdioClientTransport({
command: "node",
args: ["/path/to/rift-mcp-server/dist/index.js"],
env: {
RIFT_API_KEY: "sk_your_key",
RIFT_API_URL: "https://rift-sdk-wrapper-j9qe.onrender.com",
},
});
const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(transport);
// List available tools
const tools = await client.listTools();
// Call a tool
const result = await client.callTool({
name: "rift_get_balance",
arguments: { chain: "BASE", token: "USDC" },
});
Environment Variables
| Variable | Required | Default | Description | |----------|----------|---------|-------------| | RIFT_API_URL | No | https://rift-sdk-wrapper-j9qe.onrender.com | Rift API Wrapper URL | | RIFT_API_KEY | No | (empty) | Project API key. Can be set at runtime via rift_set_api_key tool |
User Flow
When a user chats with an AI that has this MCP server connected, here's the typical flow:
User: "I want to send some USDC"
AI: I'll need your Rift API key first. Do you have one?
User: "Yeah it's sk_abc123..."
AI: [calls rift_set_api_key] → Got it, key set.
Now let's log you in. What's your email?
User: "user@example.com"
AI: [calls rift_send_otp] → OTP sent to your email. What's the code?
User: "482910"
AI: [calls rift_login] → You're logged in!
[calls rift_get_balance] → You have 150.25 USDC on Base.
How much do you want to send and to what address?
User: "Send 50 USDC to 0xABC... on Base"
AI: You want to send 50 USDC to 0xABC... on Base (gasless).
I'll need an OTP to authorize. Check your email.
[calls rift_send_otp]
User: "Code is 193847"
AI: [calls rift_send_crypto] → Done! Tx hash: 0xdef...
All 64 Tools
Setup & Docs (6)
| Tool | Description | |------|-------------| | rift_set_api_key | Set API key at runtime | | rift_set_api_url | Override API URL | | rift_status | Check connection status | | rift_search_docs | Search SDK/API docs | | rift_get_api_endpoints | Get REST endpoints for a service | | rift_get_supported_chains | List chains, tokens, fiat currencies |
Auth & User (12)
| Tool | Description | |------|-------------| | rift_signup | Create account | | rift_send_otp | Send OTP | | rift_verify_otp | Verify OTP | | rift_login | Login (stores session) | | rift_logout | Logout | | rift_get_user | Get profile | | rift_update_user | Update profile / auto-swap config | | rift_delete_user | Delete account | | rift_create_recovery | Setup recovery methods | | rift_get_recovery_options | Get recovery options | | rift_request_password_reset | Request password reset | | rift_reset_password | Reset password with OTP |
Wallet & Transactions (4)
| Tool | Description | |------|-------------| | rift_get_balance | Check balance (by chain/token) | | rift_send_crypto | Send crypto (gasless) | | rift_get_transaction_history | Transaction history | | rift_get_transaction_fee | Calculate fees |
Offramp — Crypto to Fiat (6)
| Tool | Description | |------|-------------| | rift_preview_exchange_rate | Preview FX rate | | rift_get_payment_methods | Banks/mobile money by currency | | rift_offramp | Cash out to M-Pesa/bank | | rift_get_withdrawal_fee | Get withdrawal fee | | rift_poll_offramp_status | Track offramp order | | rift_get_offramp_orders | List offramp orders |
Onramp — Fiat to Crypto (3)
| Tool | Description | |------|-------------| | rift_buy_crypto | Buy crypto with mobile money | | rift_get_onramp_status | Track purchase | | rift_get_onramp_orders | List purchases |
Bridge (3)
| Tool | Description | |------|-------------| | rift_get_bridge_routes | Available routes | | rift_bridge_quote | Get quote | | rift_bridge_execute | Execute bridge |
KYC (6)
| Tool | Description | |------|-------------| | rift_kyc_get_token | Get KYC verification URL | | rift_kyc_check_user_exists | Check if user exists | | rift_kyc_status | KYC status | | rift_kyc_verify | Verify KYC job | | rift_kyc_is_verified | Am I verified? | | rift_kyc_job_status | Poll job status |
WalletConnect (6)
| Tool | Description | |------|-------------| | rift_wc_pair | Pair with DApp | | rift_wc_get_requests | Pending requests | | rift_wc_approve | Approve request | | rift_wc_reject | Reject request | | rift_wc_sessions | List sessions | | rift_wc_disconnect | Disconnect session |
Merchant (3)
| Tool | Description | |------|-------------| | rift_create_invoice | Create invoice | | rift_get_invoices | List invoices | | rift_merchant_status | KYB status |
Notifications (3)
| Tool | Description | |------|-------------| | rift_notifications_register | Register device | | rift_notifications_send | Send notification | | rift_notifications_subscriptions | Get/delete subscriptions |
Signer / Proxy Wallet (4)
| Tool | Description | |------|-------------| | rift_get_wallet_instance | Get wallet for chain | | rift_sign_transaction | Sign without broadcast | | rift_send_transaction | Sign + broadcast | | rift_sign_message | Sign message |
Assets (3)
| Tool | Description | |------|-------------| | rift_get_tokens | List tokens | | rift_get_user_tokens | User's tokens | | rift_get_chains | List chains |
User Management (4)
| Tool | Description | |------|-------------| | rift_suspend_user | Suspend user | | rift_unsuspend_user | Unsuspend user | | rift_get_suspended_users | List suspended | | rift_get_user_status | Check suspension status |
Deposits (1)
| Tool | Description | |------|-------------| | rift_get_deposits | Get USDC deposits |






