Skip to main content
Glama
routemesh

RouteMesh MCP Server

Official
by routemesh

RouteMesh MCP Server

@routemesh/mcp is a local stdio MCP server for querying blockchain data through RouteMesh.

At a glance

  • Query multiple EVM chains from one MCP server.

  • Pull useful on-chain data quickly (blocks, txs, logs, balances, fees).

  • Use generic JSON-RPC when you need methods beyond built-in tools.

  • Reduce RPC endpoint management overhead with RouteMesh routing + failover.

  • Plug into Cursor as an on-demand command, not a background daemon.

Related MCP server: mcp-chainlist

Prompt examples

  • "List chains that match base and show me their chain IDs."

  • "Get the latest block on BSC and summarize timestamp + tx count."

  • "Fetch receipt for tx 0x... on Ethereum and tell me if it succeeded."

  • "Get logs for this contract on Arbitrum between block X and Y."

  • "Estimate gas for calling this method on Base using these params."

  • "Run eth_getCode on chain 8453 for address 0x...."

  • "Show my RouteMesh usage for the last 7 days broken down by chain."

  • "What is my current RouteMesh balance and request count this month?"

  • "List my RouteMesh provider plans and the methods on each plan."

Tools

  • rpc_list_chains - discover and filter supported chains (via GET /chains on the API server)

  • rpc_call - generic JSON-RPC escape hatch

  • rpc_get_block - fetch by number/tag/hash

  • rpc_get_transaction - fetch transaction by hash

  • rpc_get_transaction_receipt - fetch receipt by hash

  • rpc_get_logs - query logs with block/topic filters

  • rpc_get_balance - native token balance for an address

  • rpc_call_contract - read-only eth_call

  • rpc_estimate_gas - gas estimation

  • rpc_get_fee_data - gas price + EIP-1559 hints

  • rpc_trace_transaction - trace/debug transaction best effort

  • get_usage - customer usage summary and balance from the API server (requires management token)

  • list_api_keys - list customer API keys (requires management token)

  • create_api_key - create a new API key with allowed domains and routing strategy (requires management token)

  • update_api_key - update an existing API key (requires management token)

  • provider_list_plans - list the provider's RPC plans (requires provider-linked management token)

  • provider_get_plan_methods - list the RPC methods of one of the provider's plans (requires provider-linked management token)

  • provider_upsert_plan_methods - insert/update the RPC method rows for a provider plan (requires provider-linked management token)

  • provider_get_node_status - sync status of one of the provider's nodes (requires provider-linked management token)

  • provider_upsert_node - create/update an HTTP node on a provider plan (requires provider-linked management token)

  • provider_upsert_ws_node - create/update a WebSocket node on a provider plan (requires provider-linked management token)

  • provider_set_node_status - enable/disable/delete a provider node (requires provider-linked management token)

Customer tools

When ROUTEMESH_MGMT_TOKEN is set, the server exposes customer-scoped tools that call the API server with the management token in the x-api-key header.

Create a management token in the RouteMesh dashboard (Mgmt Tokens page): click New Token, give it a label (e.g. mcp), and copy the secret — it is shown only once.

Customer management tokens are scoped automatically to the customer management routes (GET /usage, GET /api-keys, POST /api-keys, PUT /api-keys/:id). There is no route allowlist to configure — use a dedicated token for the MCP server so you can revoke it independently.

Provider tools additionally require the token's customer to be linked to a provider; they are then scoped automatically to /provider/* routes, and resources owned by another provider come back as 404.

get_usage — usage summary and balance

get_usage fetches customer usage data from the API server (GET /usage).

Parameter

Type

Description

from

RFC3339 timestamp

Window start (default: now minus 30 days)

to

RFC3339 timestamp

Window end (default: now UTC)

include

string array

Sections to return: summary, balance, by_chain, by_api_key, by_api_key_chain, top_methods, time_series, by_scenario (default: summary, balance)

groupBy

string

Flat grouped rows (overrides include): chain, api_key, api_key,chain, method, day

chainId

string

Filter to one chain

apiKeyId

positive int

Filter to one customer API key

granularity

day or hour

Time series bucketing (default: day)

limit

int (1–100)

Max rows for top_methods and group_by (default: 20)

Examples:

  • Default (last 30 days, summary + balance): call get_usage with no parameters

  • Custom window with chain breakdown: from=2026-06-01T00:00:00Z, to=2026-06-18T00:00:00Z, include=["summary","by_chain"]

  • Hourly time series for one API key: include=["time_series"], granularity="hour", apiKeyId=42

  • Top methods on a chain: include=["top_methods"], chainId="ethereum", limit=10

  • Flat grouped rows: groupBy="api_key,chain", limit=50

list_api_keys — list API keys

list_api_keys calls GET /api-keys and returns an array of API key metadata (id, name, active, allowed_domains, routing_strategy, timestamps). The secret api_key value is never returned by this endpoint.

create_api_key — create a new API key

create_api_key calls POST /api-keys to provision a new key. The request requires:

Parameter

Type

Required

Description

allowed_domains

string[]

yes

Array of allowed domains (valid URLs)

routing_strategy

"performance" or "economy"

yes

Routing strategy for this key

name

string

no

Optional human-readable name

Important: The response includes the secret api_key value, which is only shown once at creation. Store it securely — it cannot be retrieved again.

update_api_key — update an existing API key

update_api_key calls PUT /api-keys/:apiKey for partial updates:

Parameter

Type

Required

Description

apiKey

string

yes

The API key string to update (from create_api_key)

name

string

no

Updated human-readable name

active

boolean

no

Activate or deactivate the key

allowed_domains

string[]

no

Updated array of allowed domains

At least one of name, active, or allowed_domains must be provided. The secret api_key value is never returned by this endpoint.

Provider tools

Provider tools mirror the provider-scoped API routes (/provider/*) and require a management token whose customer is linked to a provider. All writes are ownership-checked server-side: a plan_id / node that belongs to another provider is rejected (404), so tools can only affect the linked provider's own resources.

provider_list_plans — list the provider's plans

Calls GET /provider/plans. Returns the provider's plans (id, name, price, quota, rate limits, billing fields) or an empty array.

provider_get_plan_methods — list a plan's RPC methods

Calls GET /provider/plans/:planId/methods.

Parameter

Type

Description

planId

positive int

Plan owned by the provider (404 otherwise)

Returns the plan's RPC method rows (method, vm, node_target_type, cost, rate limits, chain_id) or an empty array.

provider_upsert_plan_methods — insert/update a plan's RPC methods

Calls POST /provider/plans/:planId/methods.

Parameter

Type

Required

Description

planId

positive int

yes

Plan owned by the provider (404 otherwise)

methods

array (1–500)

yes

RPC method rows to insert/update

Each methods[] item supports: method, vm, node_target_type, cost, optional rate_limit, optional rate_limit_interval_sec, and optional chain_id (omit/null for all chains). Returns a plain-text success message on 201.

provider_get_node_status — node sync status

Calls GET /provider/nodes/:nodeId/status.

Parameter

Type

Description

nodeId

positive int

Node owned by the provider (404 otherwise)

Returns { node_id, in_sync, status } where status is ok or out_of_sync.

provider_upsert_node — create/update an HTTP node

Calls PUT /provider/nodes. The node is screened server-side; mandatory screening failures are returned as 400. The URL must be a public http:// or https:// endpoint; loopback, private (10/8, 172.16/12, 192.168/16), and link-local (169.254/16) addresses are rejected client-side before forwarding.

Parameter

Type

Required

Description

plan_id

positive int

yes

Plan owned by the provider

url

URL

yes

HTTP(S) endpoint of the node

vm

string

yes

VM type, e.g. evm

rate_limit

number (>= 0)

yes

Requests the node supports per interval

rate_limit_interval_sec

positive int

yes

Rate limit window in seconds

source

enum

no

provider (default), website, erpc, node_request, new_chain_request

provider_upsert_ws_node — create/update a WebSocket node

Calls PUT /provider/nodes/ws. The server dials the node and verifies it accepts eth_subscribe (newHeads) before persisting. The URL must be a public wss:// endpoint; loopback, private, and link-local addresses are rejected client-side before forwarding.

Parameter

Type

Required

Description

plan_id

positive int

yes

Plan owned by the provider

chain_id

string

yes

Chain ID served, e.g. 137

url

string

yes

wss:// endpoint of the node

provider_set_node_status — enable/disable/delete a node

Calls POST /provider/nodes/status.

Parameter

Type

Required

Description

node_id

positive int

yes

Node owned by the provider (404 otherwise)

status

enum

yes

healthy (enable), disabled by provider (disable), or provider-deleted (delete / hide)

Prerequisites

  • Node.js 20+

  • RouteMesh API key (sign up)

  • Customer management token (optional, for customer tools) — create one on the dashboard's Mgmt Tokens page; it is scoped automatically to the customer management routes

Quick start

Install and build:

npm install
npm run build

Set API key for local dev:

cp .env.example .env

Run local build:

ROUTEMESH_API_KEY=your_key_here node dist/index.js

Run in dev mode:

ROUTEMESH_API_KEY=your_key_here npm run dev

Run published package:

ROUTEMESH_API_KEY=your_key_here npx -y @routemesh/mcp

Cursor MCP config

Add one of these to ~/.cursor/mcp.json.

Local build:

{
  "mcpServers": {
    "routemesh": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/PROJECT/dist/index.js"],
      "env": {
        "ROUTEMESH_API_KEY": "replace-with-your-routemesh-key",
        "ROUTEMESH_MGMT_TOKEN": "replace-with-your-customer-mgmt-token"
      }
    }
  }
}

Published package via npx:

{
  "mcpServers": {
    "routemesh": {
      "command": "npx",
      "args": ["-y", "@routemesh/mcp"],
      "env": {
        "ROUTEMESH_API_KEY": "replace-with-your-routemesh-key",
        "ROUTEMESH_MGMT_TOKEN": "replace-with-your-customer-mgmt-token"
      }
    }
  }
}

Development commands

  • npm run typecheck - static type checking

  • npm run test - run tests once

  • npm run test:watch - watch mode

  • npm run build - compile to dist/

Release

npm run test
npm run build
npm version patch
npm publish --access public

Notes

  • The server is read-only for on-chain RPC tools.

  • get_usage reads billing/usage data from the API server; it does not use Atlas.

  • Requests use ROUTEMESH_BASE_URL first, then ROUTEMESH_BACKUP_BASE_URL on retryable failures.

  • rpc_list_chains reads chain data from GET /chains on the API server (ROUTEMESH_API_SERVER_URL).

References

Available Tools

11 tools
rpc_callRaw JSON-RPC callB

Call any JSON-RPC method on a RouteMesh-supported chain. Useful as an escape hatch.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYes
paramsNo
chainIdYesEVM chain ID (for example 1 for Ethereum mainnet)

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that any JSON-RPC method can be called, but does not disclose possible state-changing effects, error behavior, response format, or risks of calling arbitrary methods.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no fluff. It front-loads the core purpose and adds the key usage hint (escape hatch) without wasting words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a generic raw-RPC tool with no annotations, no output schema, and sparse parameter documentation, the description is too brief to fully guide invocation. It lacks examples, method format expectations, param array semantics, and any mention of response handling, leaving important operational context missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, with 'method' and 'params' essentially undocumented. The description adds no parameter-level guidance, such as how the method string should be formatted or how params should be passed, so it does not compensate for the schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a generic JSON-RPC method caller on RouteMesh-supported chains and frames it as an escape hatch, which distinguishes it from the specialized sibling RPC tools. However, it does not explicitly contrast itself with those siblings by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Useful as an escape hatch" implies the tool should be used when dedicated RPC wrappers are insufficient, but the description never explicitly says when to use it versus alternatives or when not to use it. Usage guidance is present but only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpc_call_contractCall contractA

Execute a read-only contract call via eth_call using pre-encoded calldata.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
gasNo
dataYes
fromNo
valueNo
chainIdYesEVM chain ID (for example 1 for Ethereum mainnet)
blockTagNolatest
gasPriceNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full behavioral burden. It does disclose the key trait: the call is read-only and uses eth_call. However, it does not mention what happens on revert, whether the response is raw ABI-encoded output, or how gas/from parameters may affect the call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word adds information: read-only, contract call, eth_call, pre-encoded calldata. It is appropriately concise for a tool that relies on its schema for parameter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters, no output schema, no annotations, and sparse parameter descriptions, a single sentence is insufficient. There is no guidance on return value format, error behavior, or how this tool relates to sibling tools like rpc_call. The description is too thin to fully support correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 13%, so the description should compensate. It adds some meaning to 'data' by calling it 'pre-encoded calldata', but it gives no explanation for 'to', 'from', 'gas', 'value', 'blockTag', or 'gasPrice'. Most parameter semantics are left to the agent to infer from names and patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Execute'), a specific resource ('contract call'), and the exact mechanism ('via eth_call using pre-encoded calldata'). It also clarifies that the call is read-only, which distinguishes it from transaction-sending tools and from the more generic sibling 'rpc_call'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for read-only contract calls with calldata already encoded, giving some usage context. However, it does not explicitly say when to choose this over sibling tools like rpc_call or rpc_get_balance, nor does it state when not to use it (e.g., for state-changing transactions).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpc_estimate_gasEstimate gasB

Estimate gas for a transaction request.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdYesEVM chain ID (for example 1 for Ethereum mainnet)
transactionYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Estimate gas' signals a read-like call, but the description does not clarify whether this performs a node call, whether it mutates state, whether it requires the transaction to be signed, what happens with missing fields, or whether it needs a funded account. As an RPC estimate it likely does not mutate state, but the description leaves that implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence that leads with the verb and the object. It earns its place by stating the core purpose, though it could add a brief note about chainId or the transaction object without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with a nested transaction object and no output schema, the description is minimal but perhaps adequate for a straightforward RPC endpoint. Missing context: what the return value is (estimated gas amount), whether the transaction needs to be signed, and how this differs from rpc_get_fee_data or rpc_call. The schema clarifies the parameters but the description leaves behavioral and selection context thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents chainId clearly and covers many transaction sub-fields, but the description itself just says 'transaction request.' The nested transaction object's semantics are mostly in the schema (field names and patterns), though the description adds little about the relationship between fields (e.g., gasPrice vs maxFeePerGas for legacy vs EIP-1559). With 50% schema coverage, the description partially compensates by naming 'transaction request' but does not explain which fields are required for a valid estimate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description says 'Estimate gas for a transaction request' — a specific verb (estimate) applied to a resource (gas for a transaction). It distinguishes itself from read-only RPC tools (rpc_get_block, rpc_get_transaction) and from rpc_get_fee_data (which might naively sound similar), though it does not explicitly name siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the tool to use when an agent has a transaction request and needs a gas estimate. However, it gives no explicit guidance about when to prefer alternatives like rpc_estimate_gas vs rpc_get_fee_data, or prerequisites such as requiring chainId and a fully-formed transaction object. No exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpc_get_balanceGet native balanceC

Fetch the native token balance for an address.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYes
chainIdYesEVM chain ID (for example 1 for Ethereum mainnet)
blockTagNolatest

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It conveys that the operation is a 'Fetch', but it does not state whether it is read-only in a formal sense, how blockTag affects the result, whether the return value is denominated in smallest units, or what errors may occur. This is insufficient for a tool with no annotation safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that directly states the operation. There is no wasted text, and the core purpose is immediately visible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple, but the description omits key contextual details such as what 'native token' means per chain, the meaning of blockTag, and the returned balance format. With no output schema and no annotations, such context would be expected for a complete definition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, with chainId documented in the schema and address partially constrained by a pattern. The description adds no explanation of the address parameter, chainId semantics, or blockTag behavior, so it fails to compensate for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Fetch the native token balance for an address.' It is specific enough to distinguish the tool from general RPC tools like rpc_get_block or rpc_get_transaction. However, it does not explicitly differentiate from rpc_call_contract or rpc_call, which could also be used to query balances.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives such as rpc_call_contract for ERC-20 balances or rpc_call for other RPC queries. The description implies the use case through its wording, but it offers no explicit context, exclusions, or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpc_get_blockGet blockC

Fetch block data by block number/tag or by block hash on a given chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdYesEVM chain ID (for example 1 for Ethereum mainnet)
blockTagNolatest
blockHashNo
includeTransactionsNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'fetch,' which hints at a read operation, but it does not explain what the returned block data contains, whether transactions are included by default, what block tags are supported, or how errors are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. The access methods are front-loaded and every word contributes to the meaning, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four parameters, no annotations, no output schema, and low schema coverage, a one-sentence description is insufficient. An agent cannot determine important calling details such as valid blockTag formats, the effect of includeTransactions, or what the returned block data looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%, so the description must compensate. The phrase 'by block number/tag or by block hash' adds useful meaning for blockTag and blockHash, but includeTransactions remains completely unexplained by both the schema and the description, and chainId is already documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Fetch'), the resource ('block data'), and the two access methods (block number/tag or block hash) on a chain. It is unambiguous, though it does not explicitly contrast with sibling tools; the resource is distinct enough that an agent can infer it from the sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool instead of siblings like rpc_get_transaction, rpc_get_logs, or rpc_get_balance. The description implies it is for block-level data, but it never states exclusions, prerequisites, or alternative conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpc_get_fee_dataGet fee dataA

Fetch current gas price, max priority fee and a one-block fee history sample.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdYesEVM chain ID (for example 1 for Ethereum mainnet)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. 'Fetch' communicates a read-only operation, and the expected data items are listed. However, it does not disclose units, return structure, error behavior, or any chain-specific limitations, leaving meaningful gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundant phrasing. It states the action and the full result set efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter RPC tool the description is adequate, but it lacks an output schema and does not explain the structure of the 'one-block fee history sample' or the units of the returned fee values. Error behavior and supported network constraints are also unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the only parameter, chainId, is already documented with type, range, and an Ethereum mainnet example. The tool description adds no additional parameter-level meaning, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch') and identifies a distinct resource (fee data), then names the exact contents: current gas price, max priority fee, and a one-block fee history sample. This clearly differentiates it from siblings like rpc_estimate_gas or rpc_get_block.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives such as rpc_estimate_gas or rpc_get_block. The description states what the tool returns but gives no conditions, exclusions, or comparison signals.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpc_get_logsGet logsB

Query indexed logs/events with block range and topic filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicsNo
addressNo
chainIdYesEVM chain ID (for example 1 for Ethereum mainnet)
toBlockNolatest
fromBlockNolatest

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Query' implies a read-only operation, but the description does not disclose return shape, default block-range behavior, pagination or limits, or how address filtering interacts with the query. This leaves important behavioral traits unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler; every phrase contributes meaning. It is concise and readable, but the terseness also causes it to omit useful parameter and behavior details, so it stops short of full marks.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must carry substantial context. Given five parameters, a non-trivial topics filter structure, and default values, the description is insufficient for an agent to reliably predict filter encoding, supported address forms, or return value shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 20%, with only chainId described. The description maps 'block range' to fromBlock/toBlock and 'topic filters' to topics, but it does not explain address, the nested topic-array semantics, OR/AND behavior across topic positions, or defaults like fromBlock='latest'. It does not sufficiently compensate for the four undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('Query') and resource ('indexed logs/events'), and names the key filtering dimensions: block range and topics. This clearly differentiates it from sibling tools like rpc_get_transaction_receipt or rpc_get_block, which target receipts or blocks rather than queryable logs/events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: any log/event lookup with block or topic filters. However, it does not explicitly compare it to rpc_get_transaction_receipt, which also exposes logs, nor does it state when not to use this tool or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpc_get_transactionGet transactionC

Fetch a transaction by hash.

ParametersJSON Schema
NameRequiredDescriptionDefault
txHashYes
chainIdYesEVM chain ID (for example 1 for Ethereum mainnet)

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'fetch' without noting whether the operation is read-only, what the response contains, whether the transaction must be confirmed, or any error conditions (e.g., not found). The description adds no insight beyond the tool name, which is inadequate for a core RPC method.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words, and the core action is front-loaded. However, it is so brief that it becomes under-specification rather than genuine conciseness—important operational details are omitted. A 4 would require adding at least a key behavioral note without bloating the text; here the brevity sacrifices utility.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and two required parameters, the description is critically thin. An agent cannot know what fields the response will include, whether it returns a transaction object or a confirmation status, or how failures (e.g., unknown hash) are handled. With siblings like rpc_get_transaction_receipt, the lack of guidance on scope is a significant gap. This is far from complete for a practical RPC tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, with chainId already documented in the schema. The description's 'by hash' implicitly indicates txHash is a transaction hash, but this is already evident from the parameter name and the pattern regex. No additional semantics are provided for txHash, such as format details, hexadecimal case sensitivity, or how it relates to chainId. Since coverage is low and the description does not compensate, the parameter explanation is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Fetch a transaction by hash' clearly identifies the verb (fetch), resource (transaction), and key identifier (hash). It is specific enough to understand the core function, but it does not differentiate it from sibling tools like rpc_get_transaction_receipt or rpc_trace_transaction, which also operate on transactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. No mention of when a receipt or trace would be more appropriate, or any prerequisites like chain support. The only implicit hint is the 'by hash' phrase, which does not distinguish usage scenarios. This leaves the agent to infer from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpc_get_transaction_receiptGet transaction receiptC

Fetch a transaction receipt by hash.

ParametersJSON Schema
NameRequiredDescriptionDefault
txHashYes
chainIdYesEVM chain ID (for example 1 for Ethereum mainnet)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden. It only says 'Fetch a transaction receipt by hash' and does not disclose return format, not-found behavior, read-only guarantees, or the fact that a receipt may not exist until the transaction is mined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero filler. For a simple two-parameter RPC tool, this is appropriately sized and immediately scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations, so the description should explain more than the basic operation. It omits what a receipt contains, when it becomes available, and how this tool differs from rpc_get_transaction, leaving the agent under-informed about the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The phrase 'by hash' adds some meaning to txHash—it identifies it as the transaction hash, which the schema's pattern alone does not explain. However, the description says nothing about chainId or why it is required, so parameter semantics remain only partially covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource—transaction receipt—and a specific lookup method (by hash), so an agent can tell it apart from rpc_get_transaction. It is direct and not a tautology, though it does not explicitly name sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool instead of rpc_get_transaction, rpc_get_logs, or rpc_trace_transaction. There are no alternative conditions or exclusions; usage is only implied by the word 'receipt'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpc_list_chainsList RouteMesh chainsA

Discover supported chains from RouteMesh API server (GET /chains) and filter by chain ID or name query.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
chainIdNoEVM chain ID (for example 1 for Ethereum mainnet)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the HTTP endpoint (GET /chains), implying a read-only discovery operation, and states filtering behavior. However, no annotations are present, and the description does not cover pagination, response shape, auth requirements, or rate-limit expectations, leaving some burden unmet.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence communicates the endpoint, purpose, and filtering options with no wasted words. The core behavior appears before any secondary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list endpoint, the description covers the source, HTTP method, and the two main filter dimensions. Minor gaps remain around pagination semantics and return-format expectations, but they are not critical for selecting or invoking this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The phrase 'filter by chain ID or name query' adds meaning to the chainId and query parameters, which is useful given only 25% schema description coverage. However, limit and offset are not explained in the description; their names and defaults partially compensate, but the description only partially closes the schema coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the operation: discover supported chains from the RouteMesh API server via GET /chains, with an explicit filtering capability. This distinguishes it from the sibling RPC tools that perform blockchain calls, blocks, transactions, and traces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates when to use the tool: when an agent needs to discover or filter supported chains from RouteMesh. It does not explicitly name sibling alternatives or exclusions, but the read/list intent is unambiguous relative to the other RPC tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpc_trace_transactionTrace transactionC

Attempt transaction tracing using trace_transaction or debug_traceTransaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
txHashYes
chainIdYesEVM chain ID (for example 1 for Ethereum mainnet)
traceMethodNotrace_transaction
allowFallbackNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits, but it only says 'attempt' and lists two methods. It does not explain fallback order, when debug_traceTransaction would be used, what the trace resembles, or whether node support affects availability.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler and front-loads the core operation. It repeats the title's 'transaction tracing', but it earns its place by naming the concrete RPC methods.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter RPC wrapper with no output schema and no annotations, the description is too thin. It omits output shape, fallback behavior, and failure semantics, so an agent cannot fully predict what will happen when invoking this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%, so the description needed to compensate. It mentions the two trace RPC method names but does not define txHash, allowFallback, or the traceMethod/fallback interaction, leaving the agent to rely on parameter names and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation, transaction tracing, and the two RPC methods it uses, which an agent can distinguish from sibling get_transaction/get_transaction_receipt tools. It is clear but does not explicitly contrast itself with sibling tools, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given for when tracing is appropriate, when to prefer get_transaction or get_transaction_receipt, or what prerequisites exist (e.g., a supported RPC endpoint). The only hint is the word 'attempt', which implies potential failure but not a decision rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updatesv1.0.1
    • First observedrpc_call
    • First observedrpc_call_contract
    • First observedrpc_estimate_gas
    • First observedrpc_get_balance
    • First observedrpc_get_block
    • First observedrpc_get_fee_data
    • First observedrpc_get_logs
    • First observedrpc_get_transaction
    • First observedrpc_get_transaction_receipt
    • First observedrpc_list_chains
    • First observedrpc_trace_transaction

TDQS

A3.5/5.0

Scored across 11 tools

Disambiguation4/5

Each tool targets a specific RPC operation (block, transaction, receipt, logs, balance, contract, gas, fee, trace), making them clearly distinct. The only minor overlap is between rpc_call and rpc_call_contract, but their descriptions clarify that rpc_call is a generic escape hatch while rpc_call_contract is specifically for eth_call with pre-encoded calldata.

Naming Consistency5/5

All tools follow a consistent rpc_<verb>_<noun> pattern with snake_case throughout, such as rpc_get_block, rpc_estimate_gas, and rpc_list_chains. The lone rpc_call is a deliberate generic exception but still fits the rpc_ prefix convention.

Tool Count5/5

11 tools is a well-scoped size for an RPC-focused server, covering the most common blockchain read operations without unnecessary bloat. Each tool addresses a distinct need, and the count aligns with the server's apparent purpose as a multi-chain RPC gateway.

Completeness5/5

The set covers all essential RPC query operations: chain discovery, blocks, transactions, receipts, logs, balances, contract reads, gas estimation, fee data, and tracing. The inclusion of a generic rpc_call escape hatch ensures any missing method can still be invoked, so there are no significant coverage gaps.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides comprehensive access to Ethereum Virtual Machine (EVM) JSON-RPC methods for querying blockchain data, executing smart contract calls, and interacting with any EVM-compatible network including Ethereum, Polygon, Arbitrum, and more. Enables users to check balances, analyze transactions, estimate gas, retrieve logs, and perform blockchain operations through natural language.
    19
    20
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP clients to interact with over 31 blockchain chains through the MoltNode RPC gateway, providing tools for chain listing, RPC calls, block numbers, and native balance queries without API keys or setup.
    4
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Blockchain JSON-RPC on 23 EVM chains for AI agents — Ethereum, Base, Arbitrum, plus young chains like Robinhood Chain, Plasma and Ink. Free reads with no key; heavy methods (eth_getLogs, trace, debug) via a free API key or x402 USDC pay-per-call.
    12
    121
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/routemesh/routemesh-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server