Back to Browse

Xrplink MCP Server

Developer ToolsUse Caution3.5MCP RegistryLocalRemote
Free

Server data from the Official MCP Registry

Verify XRP payments on Flare FDC. Agents subscribe or pay per attestation via x402 on XRPL.

About

Verify XRP payments on Flare FDC. Agents subscribe or pay per attestation via x402 on XRPL.

Remote endpoints: streamable-http: https://xrp-link.com/mcp

Security Report

3.5
Use Caution3.5High Risk

XRPLink is a plausible XRP payment attestation server with MCP tools, but the code shown has design choices that warrant attention: the HTTP MCP endpoint never enforces auth and allows unauthenticated, unbounded calls to the paid attestation flow via x402, and the MCP stdio server reads a private key from env for signing. The truncated routes file and missing attest/store/config modules limit full verification of token handling and billing enforcement, so the score reflects partial visibility. Supply chain analysis found 5 known vulnerabilities in dependencies (0 critical, 3 high severity).

10 files analyzed · 13 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

env_vars

Check that this permission is expected for this type of plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

database

Check that this permission is expected for this type of plugin.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

How to Install & Connect

Available as Local & Remote

This plugin can run on your machine or connect to a hosted endpoint. during install.

Documentation

View on GitHub

From the project's GitHub README.

XRPLink — Cryptographically Verified XRP Payment Receipts

License: BUSL-1.1

Generate tamper-proof, independently verifiable receipts for any XRP payment. XRPLink attests XRP transactions through Flare's FDC protocol and provides a shareable receipt with a cryptographic Merkle proof. Built for compliance, audit, and merchant reconciliation.

Live at https://xrp-link.com

Quick Start

# Visit the hosted app
open https://xrp-link.com

# Or run locally
git clone <repo-url>
cd xrplink
npm install
cp .env.example .env
# Edit .env with your private key and API key
npm run start:rest

Project Status

Live on Flare mainnet. End-to-end pipeline validated: XRP tx → verifier API → FdcHub → DA Layer proof → on-chain verification.

MilestoneStatus
Mainnet deployment✅ Live (PaymentVerifierMainnet at 0xA10034...e14b)
End-to-end pipeline validated✅ Complete — XRP tx attested on mainnet
User auth (signup/login)✅ Complete
Receipt pages✅ Complete — shareable at /receipt/:txHash
Dashboard✅ Complete — API key, usage stats, receipt history
REST API✅ Complete — verify, status, webhooks, health
API key auth + rate limiting✅ Complete
Subscription tiers✅ Complete — free/paid/pro
MCP Server✅ Complete — 5 tools, 4 prompts, 5 resources
Hardhat test suite✅ Complete — 8 tests passing
Open source✅ BUSL-1.1 (source-available)

Server Modes

CommandWhat starts
npm startMCP server (stdio) + REST API
npm run start:mcpMCP server only
npm run start:restREST API only

Tech Stack & Dependencies

DepVersionPurpose
hardhat^3.9.1Solidity dev environment
ethers5.8.0EVM interaction
tsx^4.23.0TypeScript script runner
dotenv^17.4.2.env config
express^5.2.1HTTP API server
@flarenetwork/flare-periphery-contracts^0.1.52FDC protocol interfaces
@modelcontextprotocol/sdk^1.29.0MCP server framework

API Endpoints

MethodPathAuthDescription
POST/auth/signupPublicCreate account + free API key
POST/auth/loginPublicLog in and get a session token
GET/meBearer tokenCurrent user info and API keys
GET/healthPublicLiveness ({"status":"ok"})
GET/dashboardPublicHTML user dashboard
GET/receipt/:txHashPublicView a receipt (HTML)
POST/api/v1/verify/xrp-paymentAPI keyAttest an XRP tx
GET/api/v1/status/:idAPI keyCheck attestation by UUID
GET/api/v1/status-by-tx/:txHashAPI keyCheck attestation by txHash
POST/api/v1/webhooksAPI keyRegister HTTPS webhook for an attestation this key owns
POST/billing/subscribeBearer tokenUpgrade subscription
GET/billing/portalBearer tokenManage billing
GET/mcp/resourcesPublicList MCP resource metadata (no bodies)
GET/mcp/promptsPublicList MCP prompts
POST/api/v1/keys/rotateSession cookieRegenerate the signed-in user's API key
POST/api/v1/dashboard/verifySession cookieAttest from the dashboard without pasting a key
GET/api/v1/dashboard/status/:idSessionPoll a dashboard attestation the user owns
GET/PUT/POST/DELETE/api/v1/admin/*X-Admin-KeyOperator-only (disabled if ADMIN_API_KEY is unset)

MCP Tools

ToolDescription
verify_xrp_paymentSubmit txHash for FDC attestation
get_attestation_statusCheck attestation by UUID (public subset unless owning key)
lookup_attestation_by_txFind attestation by txHash (public subset unless owning key)
get_server_infoServer + network info

Connect via stdio: npm run start:mcp

Network Configuration

ParamCoston2 (Testnet)Flare Mainnet
RPChttps://coston2-api.flare.networkhttps://flare-api.flare.network
Chain ID11414
FdcHub0x48aC463d7975828989331F4De43341627b9c5f1D0xc25c749DC27Efb1864Cb3DADa8845B7687eB2d44
FdcVerification0x906507E0B64bcD494Db73bd0459d1C667e14B9330x9394c7A36b3Da8de1b4F27cdD0a554dA4Fa7132d
DA Layerhttps://ctn2-data-availability.flare.networkhttps://flr-data-availability.flare.network
Verifier APIhttps://fdc-verifiers-testnet.flare.networkhttps://fdc-verifiers-mainnet.flare.network
Source IDtestXRPXRP
First Voting Round16584300001658430000
Attestation fee1 test FLR20 FLR

Architecture

┌───────────────────────┐
│     User dApp         │  (Flare EVM)
│  (PaymentVerifier.sol)│
└────────┬──────────────┘
         │ verifyXRPPayment(proof)
         ▼
┌───────────────────────┐
│  FdcVerification      │  (enshrined FDC protocol contract)
│  (via ContractRegistry)│
└────────┬──────────────┘
         │
    ┌────┴────┐
    │ DA Layer│──── Proof + response
    └────┬────┘
         │
    ┌────┴────┐
    │ Verifier│──── ABI-encoded request with MIC
    └────┬────┘
         │
    XRP Testnet / Mainnet

Lookback: Flare's XRPPayment attestation (IXRPPayment lutlimit 0x127500) can only prove native XRP Payments from the last 14 days. Older hashes still exist on XRPL, but the hosted verifier returns INVALID: TRANSACTION DOES NOT EXIST. XRPLink preflights the ledger and returns TX_TOO_OLD instead of a misleading FdcHub error. Failed prepares do not consume monthly quota.

Key data flow:

  1. XRP tx happens on XRP Ledger
  2. Verifier API fetches tx details, computes MIC, returns ABI-encoded request
  3. Request submitted to FdcHub on Flare with FLR fee
  4. FDC providers independently verify the XRP tx, reach consensus (90s round)
  5. Merkle root stored onchain via Relay contract
  6. DA Layer serves attestation response + Merkle proof
  7. Smart contract verifies proof against onchain Merkle root via FdcVerification

Contributing

See CONTRIBUTING.md. All contributions welcome — bug fixes, feature requests, docs improvements, and test additions.

XRPLink is source-available (BUSL-1.1) and built for the Flare ecosystem. Non-commercial use, evaluation, and personal use are free. Running XRPLink as a commercial service requires a license from the Licensor.

License

BUSL-1.1 — see LICENSE. Converts to MIT after four years.

Reviews

No reviews yet

Be the first to review this server!