Recent blocks
get_blocksInput Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
get_blocks| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Changes observed during successful MCP inspections.
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$"Output schema / $defs / BlockInfo / properties / bits / formatRemoved value: -"uint32"Output schema / $defs / BlockInfo / properties / difficulty / formatRemoved value: -"double"Output schema / $defs / BlockInfo / properties / height / $refAdded value: +"#/$defs/Height"Output schema / $defs / BlockInfo / properties / height / allOfRemoved value: -[
- {
- "$ref": "#/$defs/Height"
- }
-]Output schema / $defs / BlockInfo / properties / merkle_root / $refAdded value: +"#/$defs/MerkleNode"Output schema / $defs / BlockInfo / properties / merkle_root / typeRemoved value: -"string"Output schema / $defs / BlockInfo / properties / nonce / formatRemoved value: -"uint32"Output schema / $defs / BlockInfo / properties / previousblockhash / allOfRemoved value: -[
- {
- "$ref": "#/$defs/BlockHash"
- }
-]Output schema / $defs / BlockInfo / properties / previousblockhash / anyOfAdded value: +[
+ {
+ "$ref": "#/$defs/BlockHash"
+ },
+ {
+ "type": "null"
+ }
+]Output schema / $defs / BlockInfo / properties / size / formatRemoved value: -"uint64"Output schema / $defs / BlockInfo / properties / tx_count / formatRemoved value: -"uint32"Output schema / $defs / BlockInfo / properties / version / formatRemoved value: -"uint32"Output schema / $defs / BlockInfo / requiredPrevious value: -[
- "id",
- "height",
- "version",
- "timestamp",
- "bits",
- "nonce",
- "difficulty",
- "merkle_root",
- "tx_count",
- "size",
- "weight",
- "previousblockhash",
- "mediantime"
-]New value: +[
+ "id",
+ "height",
+ "version",
+ "timestamp",
+ "bits",
+ "nonce",
+ "difficulty",
+ "merkle_root",
+ "tx_count",
+ "size",
+ "weight",
+ "mediantime"
+]Output schema / $defs / Height / formatRemoved value: -"uint32"Output schema / $defs / MerkleNodeAdded value: +{
+ "pattern": "^[0-9a-f]{64}$",
+ "type": "string"
+}Output schema / $defs / Timestamp / formatRemoved value: -"uint32"Output schema / $defs / Weight / formatRemoved value: -"uint32"Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered elsewhere. The description contributes the fixed result limit (10 blocks) and maps the tool to `GET /api/blocks`, which is modestly useful context, but says nothing about ordering, freshness, or what the 10-block window is relative to.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely short and front-loaded: the substantive statement comes first, followed by a docs link and the REST path. Nothing is padded, though the docs-link and REST-operation lines are navigational filler rather than decision-relevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and zero parameters mean nothing else is required to invoke it. What is missing is the sibling disambiguation that a family of this size demands; the definition is minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain; the baseline applies. The description adds the one constraint that would otherwise be a parameter (the implicit limit of 10), which is the only relevant thing to say.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource and the exact scope returned ("The last 10 blocks"), which is concrete enough for an agent to know what it yields. It does not, however, distinguish itself from near-identical siblings such as get_blocks_v1, get_blocks_from_height, or get_mempool_blocks, so the agent must guess which block-listing variant to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance at all. With eight-plus block-listing siblings, the absence of any routing hint (e.g. 'use get_blocks_v1 for the newer endpoint' or 'use get_blocks_from_height for pagination') is a real selection hazard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.