Rift Finance MCP Server (Rift-FI/rift-mcp-server) is an MCP server listed on the M8ven Trust Index. It scores 56 out of 100, grade D. It declares 80 tools. No publisher has claimed this listing.

D
Caution
56/100

Rift Finance MCP Server

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

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

Code Verified⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

Rift-FI

Source: Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
⚠️
Known vulnerabilities in dependencies: 3 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
🔐
You'll be asked for 1 credential: RIFT_API_KEY
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes80 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

rift_guide

START HERE. Get step-by-step instructions for any Rift operation. Call this FIRST when a user asks to do something and you're not sure of the exact flow. Covers: send crypto, withdraw to M-Pesa, buy crypto, bridge, check balance, login, KYC, invoices, WalletConnect, auto-swap, and more.

rift_search_docs

Search Rift Finance SDK/API documentation. Returns method signatures, code examples, and auth requirements.

rift_get_api_endpoints

Get REST API endpoint details for a service group. Returns methods, paths, auth requirements, and request body schemas.

rift_get_supported_chains

Get all supported blockchains (with chain IDs), tokens, and fiat currencies with payment methods.

rift_widget_snippet

Return a ready-to-paste embed snippet for the Rift sign-in widget. Use this when a developer asks 'how do I add Rift to my site/app'. The output is a fully runnable code block keyed by their framework (html/react/nextjs). Each snippet uses the project's actual API key.

rift_get_widget_config

Fetch the widget configuration for the currently-set project: display name, branding (colors / logo / font), and allowed origins. Useful for diagnosing why the widget shows defaults instead of project branding. Requires rift_set_api_key first.

rift_docs_url

Return the URL of the public Rift docs portal. Use this to point a developer at integration walkthroughs (client-side, server SDK, HTTP API, transaction signing) without requiring them to log in to the dashboard.

rift_set_api_key

Set the Rift project API key. MUST be called before any other live tool if no key is configured. The key starts with 'sk_'. Ask the user for it if you don't have it.

rift_set_api_url

Override the Rift API URL. Only needed if using a custom deployment (not the default).

rift_status

Check current connection and auth status. Call this if you're unsure whether the user is logged in or the API key is set.

rift_signup

Create a new Rift user account. After signup, the user needs to login separately via rift_login.

rift_send_otp

Send a one-time password to user's email or phone. Call this BEFORE: (1) rift_login — to authenticate, (2) rift_send_crypto — to authorize a transaction, (3) rift_offramp — to authorize a withdrawal. The user receives the code via SMS or email and must tell you the code.

rift_verify_otp

Verify an OTP code WITHOUT logging in. Rarely needed — for login, use rift_login directly (it verifies OTP internally). For transactions/offramp, pass otpCode directly to rift_send_crypto/rift_offramp. Only use this for standalone OTP checks.

rift_login

Login to Rift. Stores the session so all authenticated tools work. Three methods: (1) email + otpCode — call rift_send_otp first, (2) phoneNumber + otpCode — call rift_send_otp first, (3) externalId + password — no OTP needed. After login, you do NOT need to login again for subsequent tool calls in

rift_login_google

Sign in (or sign up on first use) with a Google ID token. The frontend obtains the idToken from Google's identity flow — for example, the `credential` from Google One-Tap, or an ID token from `useGoogleLogin({ flow: 'implicit' })` exchanged via Google's OAuth2 endpoint. NOT something the agent can p

rift_login_apple

Sign in (or sign up on first use) with an Apple identity token. The frontend obtains the idToken from 'Sign in with Apple' — `authorization.id_token` from `AppleID.auth.signIn()` on web, the identity token from `ASAuthorizationAppleIDCredential` on iOS, or expo-apple-authentication on RN. NOT someth

rift_logout

Logout and clear the session. After this, user must login again to use authenticated tools.

rift_get_user

Get the logged-in user's profile. Returns: email, phone, displayName, address (smart wallet), autoSwapEnabled, autoSwapTargetChain, and more. Requires login.

rift_update_user

Update user profile. Can change display name, email, notification email, and auto-swap settings. Requires login.

rift_delete_user

PERMANENTLY delete user account and all data. DESTRUCTIVE — confirm with user TWICE before calling.

rift_create_recovery

Set up account recovery methods (email and/or phone). User can later reset their password via these methods. Requires login + OTP.

rift_get_recovery_options

Get available recovery options for a user. Shows masked email/phone. Does NOT require login — for users who are locked out.

rift_request_password_reset

Start password reset flow. Sends OTP to recovery email or phone. Does NOT require login.

rift_reset_password

Complete password reset with OTP from recovery method. Does NOT require login.

rift_update_recovery

Update existing recovery methods. Requires login + externalId/password for verification (verifyOtp middleware).

rift_add_recovery_method

Add a new recovery method (email or phone). Requires login + externalId/password for verification.

rift_remove_recovery_method

Remove a recovery method. Requires login + externalId/password for verification.

rift_update_recovery_method

Update the value of an existing recovery method. Requires login + externalId/password.

rift_get_my_recovery_methods

Get the current user's recovery methods. Requires login + externalId/password for verification.

rift_delete_all_recovery

Delete ALL recovery methods. DESTRUCTIVE — confirm with user. Requires login + externalId/password.

rift_get_balance

Get wallet balance. Returns crypto balances (USDC, USDT, ETH, etc), NOT fiat amounts. Call with no params for all balances across all chains. To display in local fiat: call rift_preview_exchange_rate with type='offramp', then multiply USDC balance × buying_rate. Requires login.

rift_send_crypto

Send crypto to an address. REAL TRANSACTION — always confirm with user first. Requires OTP or password: for email/phone users, call rift_send_otp FIRST to get a fresh OTP. For externalId users, ask for password. Requires login.

rift_get_transaction_history

Get on-chain transaction history (sends/receives). For offramp order history, use rift_get_offramp_orders. For onramp order history, use rift_get_onramp_orders. Requires login.

rift_get_transaction_fee

Calculate the gas/network fee for sending crypto (rift_send_crypto). This is the on-chain transaction fee, NOT the offramp/exchange fee. For offramp fees, use rift_preview_exchange_rate with amount and type='offramp'. Requires login.

rift_preview_exchange_rate

Preview exchange rate. IMPORTANT: offramp and onramp rates are DIFFERENT — always set type correctly. Rate fields explained: - buying_rate = OFFRAMP/withdrawal rate — fiat per USDC when cashing out. Multiply USDC × buying_rate to get fiat the user receives. - selling_rate = ONRAMP/deposit rate — fi

rift_get_payment_methods

Get supported banks and mobile money providers for a currency. Use the bankCode values from here in rift_offramp. E.g. for Kenya: MPESA for M-Pesa. Requires login.

rift_offramp

Withdraw crypto to fiat. REAL PAYMENT — confirm with user. Requires: login + merchant approval + KYC (>$20) + OTP/password. WARNING: This call can take 30-60+ seconds (on-chain tx + fiat settlement). A timeout does NOT mean failure — always check rift_poll_offramp_status with the transactionCode to

rift_offramp_create_order

DO NOT USE — use rift_offramp instead. This is a legacy endpoint that does the same thing. REAL PAYMENT — confirm with user.

rift_send_payment_link

Send an existing payment link URL to someone via SMS and/or email. This does NOT create a payment — it just delivers an existing URL. You need to have a payment link URL already (e.g. from an invoice). At least one of recipientPhone or recipientEmail is required. Requires login.

rift_get_withdrawal_fee

DO NOT USE THIS to show users their withdrawal fee — it only returns the raw KES buy/sell spread, not the actual fee on a withdrawal. Instead, use rift_preview_exchange_rate with an amount and type='offramp' — that returns feeBreakdown with the real fee, feePercentage, userReceivesFiat, and totalUsd

rift_poll_offramp_status

Check the status of an offramp order. Call after rift_offramp. Status: PENDING → COMPLETED or FAILED. Requires login.

rift_get_offramp_orders

Get all past offramp orders for the user. Requires login.

rift_buy_crypto

Buy crypto with mobile money (M-Pesa, etc). REAL PAYMENT — confirm with user. The 'amount' here is in LOCAL FIAT currency (e.g. 1000 = 1000 KES), NOT in USDC. Use rift_preview_exchange_rate with type='onramp' first to show how much USDC they'll get. Requires: login + merchant approval + KYC (for >$2

rift_get_onramp_status

Check status of a crypto purchase. Requires login.

rift_get_onramp_orders

Get onramp purchase history. Requires login.

rift_get_bridge_routes

Get available cross-chain bridge routes and supported tokens. No auth required.

rift_bridge_quote

Get fee and output amount for a bridge transfer. Call before rift_bridge_execute to show user what they'll receive. No auth required.

rift_bridge_execute

Execute cross-chain bridge. MOVES REAL FUNDS — confirm with user. Does NOT require OTP. Tokens arrive in 1-5 minutes. Call rift_bridge_quote first to show fees. Requires login.

rift_swap

Swap one token for another on a single chain via the user's smart wallet. SAME-CHAIN ONLY — for cross-chain use rift_bridge_execute. REAL TX — confirm with user. No OTP required. Use 'flow: gasless' (recommended) for sponsored gas via UserOperation; use 'normal' to pay gas yourself. For known token

rift_kyc_get_token

Start KYC verification — returns a verification URL the user must visit. No auth required.

rift_kyc_check_user_exists

Check if a user exists and their KYC status. No auth required.

rift_kyc_status

Check KYC verification status. Returns: verified, pending, failed, or provisional. No auth required.

rift_kyc_verify

Verify a specific KYC job by ID. Requires login.

rift_kyc_is_verified

Check if the currently logged-in user is KYC verified. Requires login.

rift_kyc_job_status

Poll the status of a KYC verification job. Requires login.

rift_wc_pair

Pair with a DApp via WalletConnect. User provides a wc: URI (usually from a QR code). Requires login.

rift_wc_get_requests

Get pending transaction requests from connected DApps. Show these to the user for approval. Requires login.

rift_wc_approve

Approve a pending DApp request. Always show the request details to user first. Requires login.

rift_wc_reject

Reject a pending DApp request. Requires login.

rift_wc_sessions

List active WalletConnect sessions. Requires login.

rift_wc_disconnect

Disconnect from a DApp session. Requires login.

rift_create_invoice

Create a payment invoice and get a payment URL. No OTP required. KYC required for >$20. Requires login.

rift_get_invoices

List invoices. Filter by status, date range, and sort order. Requires login.

rift_merchant_status

Check if the user's account has merchant (KYB) approval. Required for offramp/onramp operations. Requires login.

rift_notifications_register

Register a device for push notifications. Requires login.

rift_notifications_send

Send a push notification to all of the user's registered devices. Requires login.

rift_notifications_subscriptions

Get or delete all notification subscriptions. Requires login.

rift_get_wallet_instance

Get wallet address and details for a specific chain. Requires login.

rift_sign_transaction

Sign a raw blockchain transaction WITHOUT broadcasting it (low-level). This is NOT for sending tokens — use rift_send_crypto for that. Returns signed tx data for manual submission. Requires login.

rift_send_transaction

Execute a call through the user's SMART WALLET as an ERC-4337 UserOperation. For advanced use (contract calls, native transfers) — for simple token sends use rift_send_crypto instead. REAL TX — confirm with user. Semantics an AI MUST know: - The on-chain sender is the user's SMART WALLET, NOT their

rift_sign_message

Sign an arbitrary message with the user's private key. Used for DApp authentication, off-chain signatures, etc. Requires login.

rift_get_tokens

Get the list of supported token TYPES (metadata: name, contract address, chain). This is NOT balances — use rift_get_balance for balances. No auth required.

rift_get_user_tokens

Get the list of token TYPES the user has interacted with (metadata, not balances). For actual balances, use rift_get_balance. Requires login.

rift_get_chains

Get supported chains or details for a specific chain. No auth required.

rift_suspend_user

Suspend a user from the platform. Admin operation. Requires API key.

rift_unsuspend_user

Unsuspend a previously suspended user. Admin operation.

rift_get_suspended_users

List all suspended users. Admin operation.

rift_get_user_status

Check if a specific user is suspended. Admin operation.

rift_get_deposits

Get onchain deposit history for the user (queried live from The Graph). Shows inbound transfers to the user's smart wallets with USDC amounts, KES conversion, sender address, tx hash, and timestamp. This is NOT a balance check — use rift_get_balance for current balances. Requires login.

rift_get_deposit_stats

Get deposit statistics: totalDeposits (count), totalUsdcAmount, totalKesAmount, plus the full deposits list. Summary of all onchain deposits to the user's wallets. Requires login.

// known CVEs in dependencies3 high

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

high@modelcontextprotocol/sdk@1.12.1GHSA-345p-7cg4-v4c7

@modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse

high@modelcontextprotocol/sdk@1.12.1GHSA-8r9q-7v3j-jr4g

Anthropic's MCP TypeScript SDK has a ReDoS vulnerability

high@modelcontextprotocol/sdk@1.12.1GHSA-w48q-cv73-mx4w

Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
🔐 secretRIFT_API_KEY"": "sk_your_project_api_key"
configRIFT_API_URL"": "https://rift-sdk-wrapper-j9qe.onrender.com",
configRIFT_BACKEND_URL
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

80/80 tools missing one or more hints — rift_guide (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); rift_search_docs (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); rift_get_api_endpoints (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +77 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Tool inputs are validated

62/80 tool handlers declare input schemas (78%)

Declare an inputSchema with zod/joi/yup on every tool definition.

Tool handlers catch errors

71/80 tool handlers wrap calls in try/catch (89%)

Wrap each tool handler body in try/catch and return a structured error response.

License file

No license file

Add a LICENSE file (MIT, Apache-2.0, etc.).

Tests exist

No test files found

Add tests that exercise each declared tool.

Production dependencies are patched

0 critical, 3 high severity in production deps — @modelcontextprotocol/sdk@1.12.1 (high), @modelcontextprotocol/sdk@1.12.1 (high)

Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 7 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/rift-fi/rift-mcp-server?variant=verified)](https://m8ven.ai/mcp/rift-fi/rift-mcp-server)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 1dcf6fe9dfa9432b906d89a17a6943d9715d0e51
code hash: 5564eb2341ce50bb6473c69f13123901197ee98d890dc287f0cc31991071d185
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client