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

Ethereum tools over MCP: Chainlink feeds, ENS, ERC-8004 agents, EAS attestations, transactions.

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

## Components

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

## Channel facts

- Endpoint: `https://ethereum-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 17 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**: 72/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2208 tokens (~129/item across 17 items; 17 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-ethereum https://ethereum-mcp.tenzro.xyz/mcp
```

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Other

```json
{
  "mcpServers": {
    "xyz-tenzro-tenzro-ethereum": {
      "type": "http",
      "url": "https://ethereum-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 66, +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 65, 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 65, +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 64, +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 63, +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 62)

First indexed and scored.

## MCP tools (17)

### `eth_call_contract` (~127 tokens)

Execute a read-only eth_call against a smart contract. Params: to (contract address), data (hex-encoded calldata), block (default 'latest'). Returns the raw hex result. Use eth_encode_function to build calldata from a function signature and arguments.

Input parameters:

- `block` (string|null): Block parameter ('latest', 'earliest', 'pending', or hex block number). Default: 'latest'
- `data` (string, required): Hex-encoded calldata (with or without 0x prefix)
- `to` (string, required): Contract address (hex, with or without 0x prefix)

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_encode_function` (~195 tokens)

ABI-encode a function call. Computes the 4-byte selector from the canonical function signature via Keccak-256, then left-pads each argument to 32 bytes. Returns the complete hex-encoded calldata ready for eth_call or a transaction. Example: function_sig='transfer(address,uint256)', args=['0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', '0xde0b6b3a7640000'].

Input parameters:

- `args` (array, required): Arguments as JSON array of hex-encoded values (each will be left-padded to 32 bytes). E.g. ['0xRecipientAddress', '0xde0b6b3a7640000']
- `function_sig` (string, required): Canonical function signature (e.g. 'transfer(address,uint256)', 'approve(address,uint256)', 'balanceOf(address)')

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_estimate_gas` (~139 tokens)

Estimate gas required for a transaction via eth_estimateGas. Params: to (required), from/data/value (optional). Returns estimated gas in decimal and hex.

Input parameters:

- `data` (string|null): Hex-encoded calldata (with or without 0x prefix)
- `from` (string|null): Sender address (hex, with or without 0x prefix)
- `to` (string, required): Recipient/contract address (hex, with or without 0x prefix)
- `value` (string|null): Value in wei (hex string, e.g. '0xde0b6b3a7640000' for 1 ETH)

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_get_attestation` (~87 tokens)

Query an attestation from Ethereum Attestation Service (EAS) by UID. Posts a GraphQL query to the EAS indexer at easscan.org. Returns attester, recipient, schema, data, timestamp, revocation status, and decoded data when available.

Input parameters:

- `uid` (string, required): Attestation UID (bytes32 hex, with or without 0x prefix)

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_get_balance` (~80 tokens)

Get the ETH balance of an address via eth_getBalance. Returns balance in wei, Gwei, and ETH.

Input parameters:

- `address` (string, required): Ethereum address (hex, with or without 0x prefix)
- `block` (string|null): Block parameter ('latest', 'earliest', 'pending', or hex block number). Default: 'latest'

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_get_block` (~113 tokens)

Get block by number via eth_getBlockByNumber. Params: block_number (hex or 'latest'), full_transactions (bool, default false). Returns block header, transactions, and metadata.

Input parameters:

- `block_number` (string|null): Block number as hex string (e.g. '0x10d4f') or tag ('latest', 'earliest', 'pending'). Default: 'latest'
- `full_transactions` (boolean|null): If true, return full transaction objects instead of just hashes. Default: false

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_get_fee_history` (~120 tokens)

Get fee history for recent blocks via eth_feeHistory. Returns base fees per gas, gas used ratios, and reward percentiles for EIP-1559 gas estimation.

Input parameters:

- `block_count` (string|null): Number of blocks to return (default '5')
- `newest_block` (string|null): Newest block ('latest' by default, or hex block number)
- `reward_percentiles` (array|null): Reward percentiles as JSON array of floats (e.g. [25.0, 50.0, 75.0])

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_get_gas_price` (~42 tokens)

Get the current gas price from the Ethereum network via eth_gasPrice JSON-RPC. Returns the gas price in wei, Gwei, and hex.

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_get_price` (~183 tokens)

Get token price from a Chainlink AggregatorV3Interface data feed via eth_call to latestRoundData(). Default feed: ETH/USD on mainnet (0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419). Returns price with 8 decimal precision, round ID, and update timestamps.

Input parameters:

- `chain_id` (integer|null): Chain ID — 1 for mainnet (default), 8453 for Base, 42161 for Arbitrum. Selects the dRPC chain-specific URL for the feed read.
- `feed_address` (string|null): Chainlink AggregatorV3Interface data feed address (default: ETH/USD 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419)

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_get_token_balance` (~106 tokens)

Get ERC-20 token balance for an address via eth_call to balanceOf(address). Params: token_address (ERC-20 contract), owner_address. Returns raw balance (caller must divide by 10^decimals for human-readable amount).

Input parameters:

- `owner_address` (string, required): Owner address to check balance for (hex, with or without 0x prefix)
- `token_address` (string, required): ERC-20 token contract address (hex, with or without 0x prefix)

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_get_transaction` (~59 tokens)

Get transaction details by hash via eth_getTransactionByHash. Returns sender, recipient, value, gas, input data, block number, and nonce.

Input parameters:

- `tx_hash` (string, required): Transaction hash (hex, with or without 0x prefix)

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_get_transaction_receipt` (~73 tokens)

Get transaction receipt by hash via eth_getTransactionReceipt. Returns status (0x0=failure, 0x1=success), gas used, logs, contract address (if deployment), and block info.

Input parameters:

- `tx_hash` (string, required): Transaction hash (hex, with or without 0x prefix)

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_lookup_agent_8004` (~95 tokens)

Look up an AI agent in the ERC-8004 Agent Registry by agent ID (uint256) or owner address. Builds the calldata for getAgent(uint256) or getAgentsByOwner(address) that can be used with eth_call_contract against a deployed ERC-8004 registry.

Input parameters:

- `agent_id_or_address` (string, required): Agent ID (uint256 hex) or owner address (hex) to look up

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_lookup_ens` (~75 tokens)

Reverse-lookup an Ethereum address to its ENS name via the Universal Resolver on-chain. Constructs <address>.addr.reverse and calls resolve(). Falls back to OnchainKit ENS API. Params: address (hex).

Input parameters:

- `address` (string, required): Ethereum address to reverse-lookup (hex, with or without 0x prefix)

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_register_agent_8004` (~139 tokens)

Build transaction data for registering an AI agent via ERC-8004 Agent Registry. ERC-8004 defines an on-chain registry for autonomous AI agents with capabilities, metadata URI, and owner tracking. Returns the ABI-encoded function selector and parameter breakdown for registerAgent(string,string[],string). The caller must sign and submit the transaction to the registry contract.

Input parameters:

- `agent_name` (string, required): Human-readable agent name
- `capabilities` (array, required): List of capability strings (e.g. ['nlp', 'code-generation', 'web-search'])
- `metadata_uri` (string, required): IPFS or HTTPS URI pointing to full agent metadata JSON

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_resolve_ens` (~113 tokens)

Resolve an ENS name to an Ethereum address. Tries the ENS Universal Resolver on-chain via eth_call (resolve(bytes,bytes) at 0xc0497E381f536Be9ce14B0dD3817cBcAe57d2F62). Falls back to the OnchainKit ENS API as a secondary source. Params: name (e.g. 'vitalik.eth').

Input parameters:

- `name` (string, required): ENS name to resolve (e.g. 'vitalik.eth')

Output parameters:

- `result`: Underlying response payload verbatim.

### `eth_send_raw_transaction` (~132 tokens)

Broadcast a pre-signed Ethereum transaction via eth_sendRawTransaction. Params: raw_tx (hex-encoded RLP-signed transaction, with or without 0x prefix). Returns the resulting transaction hash as plain text. Use eth_encode_function + eth_estimate_gas + an external signer (or tenzro_signTransaction with chain_id matching the target EVM chain) to build the raw_tx.

Input parameters:

- `raw_tx` (string, required): Signed RLP-encoded transaction as hex (0x-prefixed). Build with the tenzro_signTransaction helper or any EIP-1559/legacy signer.

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-ethereum/ethereum-mcp#diagnostics

## Score history

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

## Links

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