# Relay (npm · @relayprotocol/relay-mcp)

Cross-chain bridge and swap quotes, fee estimation, and transaction tracking via Relay Protocol.

- Trust score: 63/100 (medium)
- Change this week: +25
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@relayprotocol/relay-mcp`: 63/100 (this document), [markdown](https://verifymcp.io/servers/reservoirprotocol-relay-mcp/relayprotocol-relay-mcp.md), [page](https://verifymcp.io/servers/reservoirprotocol-relay-mcp/relayprotocol-relay-mcp)

## Channel facts

- Registry: `npm`
- Package: `@relayprotocol/relay-mcp`
- Version: `0.1.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, 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-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 19/100
  - Repository check failed: the declared repository URL returned HTTP 404.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 145 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 73/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1244 tokens (~155/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add reservoirprotocol-relay-mcp -- npx -y @relayprotocol/relay-mcp
```

### Codex

```bash
codex mcp add reservoirprotocol-relay-mcp -- npx -y @relayprotocol/relay-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "reservoirprotocol-relay-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@relayprotocol/relay-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add reservoirprotocol-relay-mcp --command npx --arg -y --arg @relayprotocol/relay-mcp
```

### Hermes

```yaml
mcp_servers:
  reservoirprotocol-relay-mcp:
    command: "npx"
    args: ["-y", "@relayprotocol/relay-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "reservoirprotocol-relay-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@relayprotocol/relay-mcp"
      ]
    }
  }
}
```

## 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-08-02 (score 63, +63)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 0, −14)

- [functional regression] Tool coverage: 100 → unverified

### 2026-07-31 (score 14, −6)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 20, +2)

- [security regression] Malware scan: pass → unverified
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-28 (score 18, −20)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 38)

First indexed and scored.

## MCP tools (8)

### `get_supported_chains` (~78 tokens)

List all blockchain networks supported by Relay for bridging and swapping. Returns chain IDs, names, native currencies, and status. Use this to resolve chain names to chain IDs before calling other tools.

Input parameters:

- `vmType` (string): Filter by virtual machine type (e.g. "evm", "svm"). Omit for all chains.

### `get_supported_tokens` (~132 tokens)

Search for tokens supported by Relay across chains. Use this to find token contract addresses before getting quotes. Returns token symbol, name, address, and chain availability.

Input parameters:

- `chainIds` (array): Filter to specific chain IDs (e.g. [1, 8453] for Ethereum and Base). Omit for all chains.
- `limit` (number): Max number of token groups to return. Defaults to 20.
- `term` (string): Search by token name or symbol (e.g. "USDC", "ethereum").
- `verified` (boolean): Only return verified tokens. Defaults to true.

### `get_bridge_quote` (~198 tokens)

Get a quote for bridging the same token from one chain to another (e.g. ETH on Ethereum → ETH on Base). Returns estimated output amount, fees breakdown, and time estimate. Use get_swap_quote instead if you want to change the token type.

Input parameters:

- `amount` (string, required): Amount to bridge in the token's smallest unit (wei for ETH). Example: "1000000000000000000" for 1 ETH.
- `currency` (string, required): Token address to bridge. Use "0x0000000000000000000000000000000000000000" for native ETH.
- `destinationChainId` (number, required): Destination chain ID (e.g. 8453 for Base).
- `originChainId` (number, required): Source chain ID (e.g. 1 for Ethereum).
- `recipient` (string): Recipient wallet address. Defaults to sender if not provided.
- `sender` (string, required): Sender wallet address.

### `get_swap_quote` (~218 tokens)

Get a quote for swapping between different tokens, optionally across chains (e.g. ETH on Ethereum → USDC on Base, or USDC → WETH on the same chain). Returns estimated output amount, fees, and time estimate.

Input parameters:

- `amount` (string, required): Amount to swap in the origin token's smallest unit (wei for ETH).
- `destinationChainId` (number, required): Destination chain ID. Can be the same as originChainId for same-chain swaps.
- `destinationCurrency` (string, required): Token address to swap to. Use "0x0000000000000000000000000000000000000000" for native ETH.
- `originChainId` (number, required): Source chain ID (e.g. 1 for Ethereum).
- `originCurrency` (string, required): Token address to swap from. Use "0x0000000000000000000000000000000000000000" for native ETH.
- `recipient` (string): Recipient wallet address. Defaults to sender.
- `sender` (string, required): Sender wallet address.

### `estimate_fees` (~161 tokens)

Estimate the fees for a bridge or swap without committing to execution. Returns a breakdown of gas fees, relayer fees, and total cost impact. Useful for comparing routes or showing users expected costs.

Input parameters:

- `amount` (string, required): Amount in the origin token's smallest unit.
- `destinationChainId` (number, required): Destination chain ID.
- `destinationCurrency` (string, required): Destination token address. "0x0000000000000000000000000000000000000000" for native.
- `originChainId` (number, required): Source chain ID.
- `originCurrency` (string, required): Origin token address. "0x0000000000000000000000000000000000000000" for native.
- `sender` (string, required): Sender wallet address.

### `get_transaction_status` (~114 tokens)

Check the status of a Relay bridge or swap transaction by requestId.

Statuses:
  waiting  — The origin chain transaction has been broadcast but not yet confirmed on-chain.
  pending  — The relay network has picked up the request and is processing the cross-chain transfer.
  success  — Complete. Funds have arrived on the destination chain.
  failure  — The transaction failed.
  refund   — The transaction was refunded to the sender.

Input parameters:

- `requestId` (string, required): The Relay request ID for the transaction to check.

### `get_transaction_history` (~87 tokens)

Get past Relay bridge and swap transactions for a wallet address. Returns transaction IDs, statuses, chains, and timestamps. Supports pagination via cursor.

Input parameters:

- `cursor` (string): Pagination cursor from a previous response. Omit for the first page.
- `limit` (number): Max number of transactions to return. Defaults to 10.
- `user` (string, required): Wallet address to look up.

### `get_relay_app_url` (~256 tokens)

Generate a deep link to the Relay web app with pre-filled bridge/swap parameters. The user can open this URL in their browser to START a new transaction via the Relay UI. This is NOT a transaction tracking URL — do NOT use it to check on an in-progress transaction. For tracking, use get_transaction_status with the requestId.

Input parameters:

- `amount` (string): Pre-filled input amount in human-readable units (e.g. "0.1" for 0.1 ETH).
- `destinationChainId` (number, required): Destination chain ID (e.g. 8453 for Base). This determines the Relay app page.
- `fromChainId` (number): Origin chain ID (e.g. 1 for Ethereum). If omitted, user picks in the UI.
- `fromCurrency` (string): Origin token address. "0x0000000000000000000000000000000000000000" for native.
- `toAddress` (string): Recipient wallet address.
- `toCurrency` (string): Destination token address. "0x0000000000000000000000000000000000000000" for native.
- `tradeType` (string): Trade type. Defaults to EXACT_INPUT.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/reservoirprotocol-relay-mcp/relayprotocol-relay-mcp#diagnostics

## Score history

- 2026-08-03: 63
- 2026-08-02: 63
- 2026-08-01: 0
- 2026-07-31: 14
- 2026-07-30: 20
- 2026-07-28: 18
- 2026-07-27: 38

## Links

- npm package: https://www.npmjs.com/package/@relayprotocol/relay-mcp
- Socket report: https://socket.dev/npm/package/@relayprotocol/relay-mcp
- Website: https://relay.link/
- Changelog RSS feed: https://verifymcp.io/servers/reservoirprotocol-relay-mcp/relayprotocol-relay-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/reservoirprotocol-relay-mcp/relayprotocol-relay-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/reservoirprotocol-relay-mcp/relayprotocol-relay-mcp
