# xyz.tenzro/tenzro-layerzero (remote · layerzero-mcp.tenzro.xyz)

LayerZero V2 tools over MCP: message quotes, OFT transfers, Stargate bridging, DVN lookups.

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

## Components

- remote · `layerzero-mcp.tenzro.xyz`: 65/100 (this document), [markdown](https://verifymcp.io/servers/xyz-tenzro-tenzro-layerzero/layerzero-mcp.md), [page](https://verifymcp.io/servers/xyz-tenzro-tenzro-layerzero/layerzero-mcp)

## Channel facts

- Endpoint: `https://layerzero-mcp.tenzro.xyz/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, 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.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 21 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 68/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3240 tokens (~154/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 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.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http xyz-tenzro-tenzro-layerzero https://layerzero-mcp.tenzro.xyz/mcp
```

### Codex

```toml
[mcp_servers.xyz-tenzro-tenzro-layerzero]
url = "https://layerzero-mcp.tenzro.xyz/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "xyz-tenzro-tenzro-layerzero": {
      "type": "remote",
      "url": "https://layerzero-mcp.tenzro.xyz/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add xyz-tenzro-tenzro-layerzero --url https://layerzero-mcp.tenzro.xyz/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  xyz-tenzro-tenzro-layerzero:
    url: "https://layerzero-mcp.tenzro.xyz/mcp"
```

### Other

```json
{
  "mcpServers": {
    "xyz-tenzro-tenzro-layerzero": {
      "type": "http",
      "url": "https://layerzero-mcp.tenzro.xyz/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## 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 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 64, 0)

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

### 2026-07-30 (score 64, +1)

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

### 2026-07-28 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 62, +1)

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

### 2026-07-26 (score 61)

First indexed and scored.

## MCP tools (21)

### `lz_broadcast_signed_tx` (~236 tokens)

Broadcast a pre-signed Ethereum transaction via eth_sendRawTransaction on the source chain RPC. Use this as the canonical broadcast path for calldata produced by lz_send_message (EndpointV2.send), lz_oft_send (OFT.send), lz_stargate_send (StargatePoolNative.sendToken), and lz_transfer_build (Value Transfer API steps). Returns the transaction hash on success. The caller must construct calldata, sign locally with msg.value = nativeFee from the corresponding quote tool, then submit the RLP-encoded signed tx hex here.

Input parameters:

- `signed_tx_hex` (string, required): Pre-signed Ethereum transaction in hex format (the 0x-prefixed RLP-encoded signed transaction). Construct calldata via lz_send_message / lz_oft_send / lz_stargate_send / lz_transfer_build, sign local…
- `src_chain` (string, required): Source chain name (e.g. 'ethereum', 'arbitrum', 'base', 'optimism', 'polygon', 'avalanche', 'bsc')

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_encode_options` (~141 tokens)

Encode LayerZero TYPE_3 options bytes for use with EndpointV2.quote() and EndpointV2.send(). TYPE_3 (version tag 0x0003) is the current standard options format for LayerZero V2. Builds binary options with executor worker ID 0x01 and option type 1 (lzReceive) with configurable gas limit and native token drop amount. Returns the hex-encoded options bytes.

Input parameters:

- `gas_limit` (integer|null): Gas limit for lzReceive execution on destination (default: 200000)
- `native_drop` (integer|null): Native token amount to drop on destination in wei (default: 0)

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_get_chain_rpc` (~69 tokens)

Get the public RPC URL for a supported chain by name. These RPC URLs are used by the server for eth_call queries against EndpointV2.

Input parameters:

- `chain_name` (string, required): Chain name to get RPC URL for (e.g. 'ethereum', 'arbitrum', 'base')

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_get_deployments` (~48 tokens)

Get LayerZero V2 deployment addresses across all supported chains. Returns EndpointV2, SendLib, ReceiveLib, DVN, and Executor addresses from the LayerZero Metadata API.

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_get_message` (~67 tokens)

Get a LayerZero message by its GUID (Global Unique Identifier). The GUID is returned by EndpointV2.send() and can also be found in the Scan API message tracking response.

Input parameters:

- `guid` (string, required): LayerZero message GUID (hex, with or without 0x prefix)

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_get_messages_by_address` (~95 tokens)

Get LayerZero messages for a specific wallet address. Queries the Scan API for all messages sent or received by the given address. Returns message details including status, source/destination chains, and timestamps.

Input parameters:

- `address` (string, required): Wallet address to get LayerZero messages for (hex, with or without 0x prefix)
- `limit` (integer|null): Maximum number of messages to return (default: 10)

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_list_chains` (~95 tokens)

List all 16 chains supported by this LayerZero MCP server with their Endpoint IDs (EIDs). Includes Ethereum, Arbitrum, Optimism, Polygon, BSC, Avalanche, Base, Solana, zkSync, Sei, Sonic, Berachain, Story, Monad, MegaETH, and Tron. EIDs are used in EndpointV2.quote() and EndpointV2.send() to identify destination chains.

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_list_dvns` (~65 tokens)

List all Decentralized Verifier Networks (DVNs) registered in the LayerZero V2 protocol. DVNs verify cross-chain messages by attesting to source chain state on the destination chain. Returns DVN names, addresses, supported chains, and configuration details.

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_oft_list` (~47 tokens)

List all available OFT (Omnichain Fungible Token) deployments registered in the LayerZero Metadata API. Returns token symbols, contract addresses, supported chains, and deployment details.

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_oft_quote` (~130 tokens)

Quote an OFT (Omnichain Fungible Token) transfer via the LayerZero Metadata API. Returns estimated fees, exchange rates, and transfer details for bridging tokens between chains using LayerZero's OFT standard.

Input parameters:

- `amount` (string, required): Amount to transfer (in base units as string)
- `dst_chain` (string, required): Destination chain name (e.g. 'arbitrum')
- `src_chain` (string, required): Source chain name (e.g. 'ethereum')
- `token_symbol` (string, required): Token symbol (e.g. 'USDC', 'USDT', 'ETH')

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_oft_send` (~294 tokens)

Build transaction calldata for an OFT (Omnichain Fungible Token) send() call on any OFT contract. OFT V2 uses uint64 amountSD (shared decimals) instead of uint256 amountLD. Returns the hex-encoded calldata for OFT.send(SendParam, MessagingFee, refundAddress). The caller must first call lz_quote_fee or lz_oft_quote to get the messaging fee, then sign and broadcast this transaction with msg.value = nativeFee.

Input parameters:

- `amount` (string, required): Amount to send in shared decimals (amountSD, uint64 — OFT V2 uses shared decimals, not local decimals)
- `dst_chain` (string, required): Destination chain name (e.g. 'arbitrum', 'base', 'solana')
- `gas_limit` (integer|null): Gas limit for lzReceive on destination (default: 200000)
- `min_amount` (string|null): Minimum amount to receive in shared decimals (minAmountSD, uint64 — default: 90% of amount)
- `oft_address` (string, required): OFT contract address on the source chain (hex, 20 bytes)
- `recipient` (string, required): Recipient address (hex, 20 bytes for EVM — will be left-padded to bytes32)
- `src_chain` (string, required): Source chain name (e.g. 'ethereum', 'arbitrum', 'base')

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_quote_fee` (~220 tokens)

Estimate cross-chain messaging fee via LayerZero EndpointV2.quote() eth_call. Returns the native fee and LZ token fee required to send a message from the source chain to the destination endpoint. Uses the on-chain EndpointV2 contract at 0x1a44076050125825900e736c501f859c50fE728c. Selector: 0xdb9d28c6.

Input parameters:

- `dst_eid` (integer, required): Destination chain LayerZero Endpoint ID (e.g. 30110 for Arbitrum)
- `message_hex` (string, required): Hex-encoded message payload (with or without 0x prefix)
- `options_hex` (string|null): Hex-encoded LayerZero V3 options bytes (default: lzReceive with 200000 gas if omitted)
- `sender_hex` (string, required): Hex-encoded sender address (20 bytes, with or without 0x prefix)
- `src_chain` (string, required): Source chain name (e.g. 'ethereum', 'arbitrum', 'base')

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_send_message` (~195 tokens)

Build transaction calldata for EndpointV2.send() to dispatch a cross-chain message via LayerZero V2. Returns the hex-encoded calldata that should be submitted as a transaction to the EndpointV2 contract on the source chain. The caller must sign and broadcast the transaction with msg.value set to the nativeFee from lz_quote_fee. Selector: 0x5e280f11.

Input parameters:

- `dst_eid` (integer, required): Destination chain LayerZero Endpoint ID
- `message_hex` (string, required): Hex-encoded message payload
- `options_hex` (string|null): Hex-encoded LayerZero V3 options bytes (default: lzReceive with 200000 gas if omitted)
- `receiver` (string, required): Hex-encoded receiver address as bytes32 (left-padded to 32 bytes)
- `src_chain` (string, required): Source chain name (e.g. 'ethereum', 'arbitrum', 'base')

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_stargate_quote` (~222 tokens)

Quote a Stargate V2 native bridge transfer fee. Calls quoteSend() on the StargatePoolNative contract (ETH, USDC, or USDT) to get the exact LayerZero messaging fee for bridging between supported EVM chains. Returns the fee in wei and the minimum amount received after slippage. Supported tokens: ETH (Ethereum/Optimism/Arbitrum/Base), USDC (6 chains), USDT (6 chains).

Input parameters:

- `amount` (string, required): Amount to bridge in base units (wei for ETH, micro-units for USDC/USDT)
- `dst_chain` (string, required): Destination chain name (e.g. 'base', 'ethereum', 'arbitrum')
- `src_chain` (string, required): Source chain name (e.g. 'optimism', 'ethereum', 'base', 'arbitrum')
- `token` (string, required): Token symbol: 'ETH', 'USDC', or 'USDT'
- `wallet_address` (string, required): Sender/recipient wallet address (hex, 20 bytes)

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_stargate_send` (~260 tokens)

Build transaction calldata for a Stargate V2 sendToken() bridge transfer. Returns hex-encoded calldata, the target contract address, and the msg.value to include. The caller must sign and broadcast the transaction. For native ETH, msg.value = nativeFee + bridgeAmount. For ERC-20 tokens (USDC/USDT), approve the pool contract first, then msg.value = nativeFee only. Supported: ETH (4 chains), USDC (6 chains), USDT (6 chains).

Input parameters:

- `amount` (string, required): Amount to bridge in base units (wei for ETH, micro-units for USDC/USDT)
- `dst_chain` (string, required): Destination chain name (e.g. 'base', 'ethereum', 'arbitrum')
- `slippage_bps` (integer|null): Slippage tolerance in basis points (default: 50 = 0.5%)
- `src_chain` (string, required): Source chain name (e.g. 'optimism', 'ethereum', 'base', 'arbitrum')
- `token` (string, required): Token symbol: 'ETH', 'USDC', or 'USDT'
- `wallet_address` (string, required): Sender/recipient wallet address (hex, 20 bytes)

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_track_message` (~92 tokens)

Track a cross-chain LayerZero message by the source transaction hash. Queries the LayerZero Scan API for message status: INFLIGHT, CONFIRMING, DELIVERED, FAILED, or BLOCKED. Returns the full message details including source/destination chains, GUID, and current status.

Input parameters:

- `tx_hash` (string, required): Transaction hash to track LayerZero message for (with or without 0x prefix)

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_transfer_build` (~75 tokens)

Build signable transaction steps from a Value Transfer API quote. Takes a quoteId from lz_transfer_quote and returns pre-built transaction calldata (to, data, value) that the caller can sign and broadcast. Handles approval and bridge steps automatically.

Input parameters:

- `quote_id` (string, required): Quote ID returned from lz_transfer_quote

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_transfer_chains` (~55 tokens)

List all chains supported by the LayerZero Value Transfer API. Returns 130+ chains including Solana, all EVM L1s and L2s, and their chain keys for use in lz_transfer_quote.

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_transfer_quote` (~285 tokens)

Get a cross-chain transfer quote from the LayerZero Value Transfer API. This is the newest LayerZero API (replaces deprecated Stargate REST API) supporting 130+ chains including Solana. Returns quotes with fees, estimated times, and a quote ID for building transaction steps. Use 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE as the token address for native ETH.

Input parameters:

- `amount` (string, required): Amount to transfer in base units (wei for ETH, smallest unit for tokens)
- `dst_address` (string, required): Recipient wallet address on the destination chain
- `dst_chain` (string, required): Destination chain key (e.g. 'base', 'solana', 'ethereum')
- `dst_token` (string, required): Destination token address (use 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for native ETH)
- `src_address` (string, required): Sender wallet address on the source chain
- `src_chain` (string, required): Source chain key (e.g. 'optimism', 'ethereum', 'base', 'solana')
- `src_token` (string, required): Source token address (use 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for native ETH, or contract address for ERC-20)

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_transfer_status` (~56 tokens)

Check the status of a Value Transfer API transfer by its quote ID. Returns current transfer status, source/destination transaction hashes, and delivery progress.

Input parameters:

- `quote_id` (string, required): Quote ID or transfer ID to check status for

Output parameters:

- `result`: Underlying response payload verbatim.

### `lz_transfer_tokens` (~72 tokens)

List tokens available for cross-chain transfer via the LayerZero Value Transfer API. Optionally filter by chain. Returns token addresses, symbols, decimals, and which chains they're available on.

Input parameters:

- `chain` (string|null): Filter tokens by chain key (optional, e.g. 'optimism', 'solana')

Output parameters:

- `result`: Underlying response payload verbatim.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/xyz-tenzro-tenzro-layerzero/layerzero-mcp#diagnostics

## Score history

- 2026-08-03: 65
- 2026-08-02: 65
- 2026-08-01: 64
- 2026-07-31: 64
- 2026-07-30: 64
- 2026-07-29: 63
- 2026-07-28: 63
- 2026-07-27: 62
- 2026-07-26: 61

## Links

- Remote endpoint: https://layerzero-mcp.tenzro.xyz/mcp
- Changelog RSS feed: https://verifymcp.io/servers/xyz-tenzro-tenzro-layerzero/layerzero-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/xyz-tenzro-tenzro-layerzero/layerzero-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/xyz-tenzro-tenzro-layerzero/layerzero-mcp
