Skip to main content
Glama

Sample the nodes for free

sample_rpc
Read-onlyIdempotent

Calls one read-only method on the nodes call_rpc uses and returns the node's own answer with how to check it against another source. Free, to check the nodes before you pay. No wallet. Eight read-only methods: eth_chainId, eth_blockNumber, eth_gasPrice, net_version, web3_clientVersion, net_peerCount, eth_syncing, txpool_status. For any other method, call_rpc. 60 calls an hour per network address, per tool. Example: {"chain":"base","method":"eth_blockNumber"}

Input Schema

NameRequiredDescriptionDefault
chainNooptional string — which node: eth or base. Default base.
methodNooptional string — one of eth_chainId, eth_blockNumber, eth_gasPrice, net_version, web3_clientVersion, net_peerCount, eth_syncing, txpool_status; default eth_blockNumber

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "chain": "base",
      +    "method": "eth_blockNumber"
      +  }
      +]
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedOutput schema / additionalProperties
      Removed value: -{}
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "properties": {
      +      "chain": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "error": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "free_sample": {
      +        "anyOf": [
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "http_status": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "method": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "paid_tool": {
      +        "anyOf": [
      +          {
      +            "description": "the tool that does serve it",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "refused": {
      +        "anyOf": [
      +          {
      +            "description": "set when the method is outside the free sample",
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "rpc_response": {
      +        "anyOf": [
      +          {
      +            "properties": {},
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "sample_methods": {
      +        "anyOf": [
      +          {
      +            "description": "on a refusal: the methods the free sample serves",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "verify": {
      +        "anyOf": [
      +          {
      +            "description": "how to check this answer against another source",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "required": [
      +      "accepts"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "required": [
      +      "receipt"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties
      Removed value: -{
      -  "chain": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "error": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "free_sample": {
      -    "type": [
      -      "boolean",
      -      "null"
      -    ]
      -  },
      -  "http_status": {
      -    "type": [
      -      "number",
      -      "null"
      -    ]
      -  },
      -  "method": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "paid_tool": {
      -    "anyOf": [
      -      {
      -        "description": "the tool that does serve it",
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  },
      -  "refused": {
      -    "anyOf": [
      -      {
      -        "description": "set when the method is outside the free sample",
      -        "type": "boolean"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  },
      -  "rpc_response": {
      -    "anyOf": [
      -      {
      -        "additionalProperties": {},
      -        "properties": {},
      -        "type": "object"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  },
      -  "sample_methods": {
      -    "anyOf": [
      -      {
      -        "description": "on a refusal: the methods the free sample serves",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  },
      -  "verify": {
      -    "anyOf": [
      -      {
      -        "description": "how to check this answer against another source",
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  }
      -}
  2. Changed1 schema field changed
    • removedInput schema / properties / method / enum
      Removed value: -[
      -  "eth_chainId",
      -  "eth_blockNumber",
      -  "eth_gasPrice",
      -  "net_version",
      -  "web3_clientVersion",
      -  "net_peerCount",
      -  "eth_syncing",
      -  "txpool_status"
      -]
  3. Changed2 schema fields changed
    • addedInput schema / properties / chain / enum
      Added value: +[
      +  "base",
      +  "eth"
      +]
    • addedInput schema / properties / method / enum
      Added value: +[
      +  "eth_chainId",
      +  "eth_blockNumber",
      +  "eth_gasPrice",
      +  "net_version",
      +  "web3_clientVersion",
      +  "net_peerCount",
      +  "eth_syncing",
      +  "txpool_status"
      +]
  4. Changed1 schema field changed
    • addedOutput schema / properties / sample_methods
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "on a refusal: the methods the free sample serves",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  5. Changed1 schema field changed
    • removedInput schema / properties / line
      Removed value: -{
      -  "description": "optional — your /pay credential: served off your line, not counted against the free ceiling; without it, or with a line that is off or out of time, free and counted.",
      -  "type": "string"
      -}
  6. Changed1 schema field changed
    • changedInput schema / properties / line / description
      Previous value: -"optional — your /pay credential: served off your line, not counted against the free ceiling; without it, free and counted."New value: +"optional — your /pay credential: served off your line, not counted against the free ceiling; without it, or with a line that is off or out of time, free and counted."
  7. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, open-world. The description adds real behavioral context the annotations don't: no wallet required, free vs paid, and a rate limit of '60 calls an hour per network address, per tool.' It also tells the caller the response includes how to verify against another source. Docked slightly because it doesn't say what error/answer form an unsupported method or over-limit call returns.

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?

Front-loads the core action, then the free/no-wallet rationale, then the method enum, then the routing alternative, then rate limit, then a concrete example. Every sentence carries distinct information with no filler.

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?

With annotations and an output schema present, the description needn't explain return values, and it covers purpose, routing, cost model, and rate limits. Slightly incomplete on edge cases (behavior when rate-limited or when a non-listed method is passed) but otherwise sufficient to call it 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?

Schema coverage is 100%, so both parameters (chain enum and method list/defaults) are already fully documented in the schema. The description restates the eight methods and defaults from the schema, adding little beyond it; the example is useful but the schema already carries an example. Baseline 3 is appropriate.

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?

States a specific verb (calls one read-only method) and resource (the nodes call_rpc uses), plus the distinctive free/read-only scope. It explicitly contrasts itself with the sibling call_rpc and enumerates the eight supported methods, so an agent can distinguish it without opening the schema.

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

Usage Guidelines5/5

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

Says when to use this tool (free pre-check before paying, no wallet) and exactly when not to: 'For any other method, call_rpc.' The routing rule is explicit and pairs with the concrete conditional ('to check the nodes before you pay').

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources