Bitview
Server Details
Read-only Bitcoin blockchain, mempool, mining, market, and on-chain analytics; no API key.
- Status
- Healthy
- Uptime
- 13.4% over 61 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2026-07-28
- URL
- Repository
- bitcoinresearchkit/mono
- GitHub Stars
- 165
TDQS
Scored across 75 tools
Many tools are near-duplicates differentiated only by version, pagination, or precision: get_blocks vs get_blocks_v1 vs get_blocks_from_height, get_block_fee_rates vs get_block_fee_rates_precise, and the large get_series family. The detailed descriptions help, but the sheer number of overlapping block, transaction, and series variants makes misselection likely.
Most tools follow a predictable snake_case verb_noun pattern (get_, list_, search_, validate_) mapped closely to REST endpoints. Minor deviations and version suffixes like _v1, _precise, and _after are readable and consistent enough, though not perfectly uniform.
75 tools is excessive for an MCP server and exposes nearly the full mempool.space REST surface, including many niche variants. This exceeds the 50+ threshold and makes the toolset unwieldy for an agent to navigate.
The surface comprehensively covers addresses, blocks, transactions, mempool, mining, fees, prices, UTXO, and series for a read-only Bitcoin explorer. Minor gaps such as transaction broadcast and some non-precise fee endpoints exist, but core data-retrieval workflows are well covered.
Available Tools
75 toolsget_addressAddress informationBRead-onlyIdempotentInspect
Balance and transaction counts. Supports P2PKH, P2SH, P2WPKH, P2WSH, P2TR and P2A addresses, and P2PK public keys in hex (33 or 65 bytes).
REST operation: GET /api/address/{address}.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds accepted input formats and the underlying REST route, but says nothing about error behavior for malformed or unknown addresses, or about rate limits — the gaps that matter for an open-world read.
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?
Front-loaded with the payload summary, then format support, then a docs link and the REST route. The REST operation line is mild filler given the docs link, but everything else earns its place.
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?
With an output schema covering return values and annotations covering safety, the description only needed to nail input formats and scope, which it does. The remaining hole is routing relative to validate_address and the address tx/utxo siblings.
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?
Schema description coverage is reported at 0% (the real text sits behind a $ref), so the description has to carry the burden — and it does, enumerating P2PKH, P2SH, P2WPKH, P2WSH, P2TR, P2A and P2PK hex keys at 33 or 65 bytes. That is materially more than the terse schema text, though it doesn't clarify invalid-address handling.
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?
The opening sentence names the resource payload ('Balance and transaction counts') for an address lookup, which is specific enough to distinguish it from the list-style siblings (get_address_txs, get_address_utxos) by implication. It stops short of explicitly naming those alternatives, so differentiation relies on inference rather than statement.
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 and no mention of the many address-related siblings, notably validate_address or the tx/utxo list endpoints. An agent must infer from the phrase 'balance and transaction counts' that this is the summary endpoint rather than the detailed one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_address_confirmed_txsAddress confirmed transactionsARead-onlyIdempotentInspect
Get the newest confirmed transactions for an address, up to max_txs (25 by default and at most). For pagination, request GET /api/address/{address}/txs/chain/{after_txid} with the last returned txid.
REST operation: GET /api/address/{address}/txs/chain.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| max_txs | No | Transactions to return, at most 25 (the default); larger values return 25. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the description's added value is the 25-item cap, the default, and the silent truncation behavior for larger values ('larger values return 25'). That truncation detail is genuinely useful and non-obvious. It omits ordering/return shape, but an output schema exists.
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?
Front-loaded with the core purpose and cap; the pagination hint follows efficiently. The trailing 'REST operation: GET /api/address/{address}/txs/chain' line largely duplicates the docs link and the endpoint named in the pagination sentence, making it the one low-value element.
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?
With an output schema present and a small two-parameter surface, the description covers purpose, cap/default, truncation, and pagination path — everything needed to invoke it correctly. The only remaining gap (how it differs from get_address_confirmed_txs_after) is a routing concern rather than a completeness one.
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?
Schema coverage is 50%, and the description reinforces the one ambiguous parameter by restating the 25 default/maximum and the truncation rule, which matches the schema's note. The `address` param is fully described in the schema (with examples and P2PK hex-key support), so no further compensation is needed.
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 a specific verb and resource with a scoping qualifier: 'newest confirmed transactions for an address', with the cap and default spelled out. It does not, however, distinguish itself from siblings like get_address_txs (which may include unconfirmed) or get_address_confirmed_txs_after, so an agent must infer which of the three address-tx tools 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?
Usage context is implied by 'newest confirmed' and the pagination note gives a concrete next step. But that next step is a raw REST URL rather than the sibling tool get_address_confirmed_txs_after, which appears to exist precisely for that case — the description never mentions it or when to prefer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_address_confirmed_txs_afterAddress confirmed transactions (paginated)ARead-onlyIdempotentInspect
Get the next confirmed transactions strictly older than after_txid, up to max_txs (25 by default and at most); a txid outside the address's history answers [] (Esplora-canonical pagination form, matches mempool.space).
REST operation: GET /api/address/{address}/txs/chain/{after_txid}.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| max_txs | No | Transactions to return, at most 25 (the default); larger values return 25. | |
| after_txid | Yes | Last txid from the previous page (return transactions strictly older than this) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and open-world behavior. The description adds useful edge-case behavior: transactions strictly older than the cursor and an empty array when the txid is outside the address history.
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?
The key pagination behavior is front-loaded in the first sentence, with the documentation link and REST operation following as supporting detail. There is no wasted text.
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 in detail. Safety is covered by annotations, and the description supplies the important pagination, cursor, cap, and empty-result behavior.
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?
Schema coverage is 67%, so baseline is 3, but the description clarifies that after_txid is exclusive and that max_txs is capped at 25 by default. It also explains that an unrecognized after_txid returns an empty array, adding meaningful cursor semantics beyond the schema.
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 a specific verb and resource: get the next confirmed transactions strictly older than after_txid. The pagination framing clearly distinguishes it from the unpaginated get_address_confirmed_txs sibling, even without naming it.
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?
The description clearly establishes pagination context through 'next' and 'after_txid' and notes the Esplora-canonical form. It lacks an explicit statement telling the agent to use get_address_confirmed_txs for the first page or naming other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_address_hash_prefix_matchesAddress hash-prefix matchesARead-onlyIdempotentInspect
Find addresses by address type and by the first 1-16 hex nibbles of RapidHash v3 over the raw address payload bytes. Intended for privacy-preserving client-side wallet discovery without sending raw addresses or xpubs. Fetch metadata with GET /api/address/{address}.
REST operation: GET /api/address/hash-prefix/{address_type}/{prefix}.
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | Yes | First 1–16 hexadecimal nibbles of the RapidHash v3 hash over the raw address payload bytes. | |
| address_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, openWorld, so the safety profile is covered; the description adds the non-obvious privacy rationale and the exact matching/hashing semantics. It omits practical behavior such as whether short prefixes return bounded result sets or how many matches a 1-nibble prefix can yield.
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?
Three short sentences, front-loaded with the matching rule, then the privacy intent, then the follow-up endpoint and REST path. Nothing is padding.
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?
Output shape is covered by the output schema and safety by annotations, so the description only needed to explain matching semantics, intent, and the next call, which it does. The missing piece is expected result cardinality for very short prefixes.
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?
Schema coverage is 50%, and the description restates the prefix definition already in the schema rather than adding syntax or constraints. The address_type semantics live in the AddressOutputType enum and its description, so the description adds little beyond the structured fields.
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 a specific verb (find) plus the exact resource and matching rule: address type plus the first 1-16 hex nibbles of RapidHash v3 over the raw payload. This is unmistakably different from sibling get_address, which the description also names for follow-up metadata.
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?
Gives clear usage context (privacy-preserving client-side wallet discovery, avoiding transmission of raw addresses or xpubs) and routes the agent to `GET /api/address/{address}` for metadata. It stops short of an explicit when-not-to-use or a direct comparison against get_address for plain lookup, so it is short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_address_mempool_txsAddress mempool transactionsARead-onlyIdempotentInspect
Get unconfirmed transactions for an address from the mempool, newest first, up to max_txs (50 by default and at most).
REST operation: GET /api/address/{address}/txs/mempool.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| max_txs | No | Transactions to return, at most 50 (the default); larger values return 50. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive access, and the description adds genuinely useful behavior beyond them: result ordering (newest first) and clamping semantics (values above 50 return 50). It does not mention empty-mempool behavior, but the key call-shaping traits are covered.
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?
One tight sentence front-loads the essential scope and ordering/cap behavior; the docs link and REST route are compact and directly useful for tracing the operation. No filler.
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 no explanation, and the description covers scope, ordering, and limits. Minor gaps like behavior on an empty mempool or max_txs=0 are left unaddressed but are not blocking.
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?
Both parameters are already described in the schema (address type, max_txs cap of 50), and the description largely echoes the same default/cap information. It adds no type or format detail the schema doesn't carry, so baseline 3 applies.
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 a specific verb and resource ('Get unconfirmed transactions for an address from the mempool') with a scope qualifier ('unconfirmed' / 'mempool') that separates it from confirmed-transaction siblings like get_address_confirmed_txs. An agent can pick it without inspecting schemas.
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?
The mempool/unconfirmed framing implies when to use it, and 'newest first' hints at the ordering contract, but there is no explicit when-to-use statement or named alternative (e.g., get_address_txs for confirmed history). Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_address_txsAddress transactionsARead-onlyIdempotentInspect
Get transaction history for an address, newest first: up to max_txs (50 by default and at most), mempool transactions first and confirmed ones filling the rest. To continue, pass the last returned txid as after_txid, or request GET /api/address/{address}/txs/chain/{after_txid} for confirmed history.
REST operation: GET /api/address/{address}/txs.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| max_txs | No | Transactions to return, at most 50 (the default); larger values return 50. | |
| after_txid | No | Continue after this transaction, a mempool or a confirmed one: the older ones (a confirmed cursor skips the mempool). One that is neither answers 422. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world, so the burden is lower. The description still adds real behavior: result ordering, the hard 50 cap, cursor semantics that skip the mempool when a confirmed txid is supplied, and the 422 outcome for an invalid cursor.
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?
Three sentences, front-loaded with purpose, then pagination, then a docs/reference tail. Every clause carries information an agent needs; nothing is redundant padding.
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. The description still covers cap, ordering, cursor behavior, and the error case, which is everything an agent needs to invoke a 3-parameter paginated list correctly.
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?
Schema coverage is 67% and the schema already documents the 50-item cap and cursor rules, so the description mainly restates them. It earns credit by explaining the continuation workflow ('the last returned txid as `after_txid`') and how `max_txs` interacts with mempool-first ordering, which the schema does not convey.
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?
Names a specific verb and resource ('Get transaction history for an address') and pins down scope: mixed mempool + confirmed, newest first, capped at `max_txs`. The phrase 'mempool transactions first and confirmed ones filling the rest' alone distinguishes it from siblings like get_address_confirmed_txs and get_address_mempool_txs.
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?
Gives concrete continuation instructions ('pass the last returned txid as `after_txid`') and names an alternative path for confirmed-only history. It stops short of explicitly saying when to prefer the dedicated confirmed/mempool sibling tools, so the routing guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_address_utxosAddress UTXOsARead-onlyIdempotentInspect
Get unspent transaction outputs (UTXOs) for an address, including unconfirmed ones; outputs that mempool transactions spend are left out.
REST operation: GET /api/address/{address}/utxo.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: unconfirmed UTXOs are returned, and mempool-spent outputs are filtered out. It does not cover ordering, volume, or size of results, but the output schema carries the return shape.
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?
Two tight sentences with the inclusion/exclusion rule front-loaded, followed by a docs link and the REST operation. The REST line is mild overhead but gives useful traceability to the upstream endpoint; nothing is padded.
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?
A single-parameter read tool with annotated safety hints and an output schema. The description supplies the semantics annotations cannot express (unconfirmed inclusion, mempool-spend exclusion), and return values need not be restated. Nothing an agent needs in order to call it correctly is missing.
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?
Schema description coverage is reported as 0% at the property level, though the referenced Address definition does carry 'Bitcoin address, or the hex public key of a P2PK output' plus three examples. The description adds only the REST path template `{address}`, which confirms a single required address argument but contributes no format or validation detail beyond the schema.
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 a specific verb and resource ('Get unspent transaction outputs (UTXOs) for an address') and goes on to define its exact scope: unconfirmed outputs are included, outputs spent by mempool transactions are excluded. That inclusion/exclusion contract is what separates it from siblings like get_address_txs or get_address without the agent needing to open a schema.
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?
Usage is implied rather than stated. There is no 'use this when... use get_address_txs instead when...' guidance, and no mention of prerequisites such as address validation via validate_address. An agent can infer the use case from the resource name, but the definition does not route it among the 70+ siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blockBlock informationCRead-onlyIdempotentInspect
REST operation: GET /api/block/{hash}.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered by structured data. The description contributes nothing beyond that: it does not say how an unknown hash is handled, what the response contains, or note that this appears to be the v0/deprecated-style endpoint versus get_block_v1. With annotations carrying the safety burden, this is acceptable but adds no value.
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?
Two short lines with zero waste, so it is concise. However, it is front-loaded with a documentation URL rather than a plain-language statement of what the call returns, which is the wrong lead for an agent deciding whether to invoke it. Brevity here reflects under-specification rather than disciplined editing.
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 explained, but the tool sits among dozens of block-related siblings and the description does nothing to disambiguate selection. For a public blockchain API wrapper, the absence of any note on network scope, deprecation status relative to get_block_v1, or error behavior leaves the agent guessing.
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?
There is a single required parameter whose schema (via $defs.BlockHash) already supplies a 64-hex regex pattern, two live examples, and a description of byte order, so the parameter is well specified without the description's help. The description adds no formatting, casing, or encoding guidance beyond the schema. Baseline 3 is appropriate when the schema does the work and the prose adds nothing.
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?
The title 'Block information' is close to a restatement of the name, and the only concrete content is the REST path `GET /api/block/{hash}`, from which an agent must infer that this fetches a single block by hash. That inference is correct but nothing in the text distinguishes it from near-identical siblings such as get_block_v1, get_block_header, get_block_status, get_block_txid, or get_blocks. Purpose is implied by the endpoint, not stated.
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?
No when-to-use guidance and no alternatives are named, despite at least six sibling tools that operate on blocks. The only hint that a hash (not a height or timestamp) is the selector comes from the URL template, which the agent must reverse-engineer. No exclusions, no prerequisites, no indication of which chain/network applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_by_timestampBlock by timestampARead-onlyIdempotentInspect
Find the block with the greatest header timestamp at or before the given UNIX timestamp, choosing the earliest height on ties.
REST operation: GET /api/v1/mining/blocks/timestamp/{timestamp}.
| Name | Required | Description | Default |
|---|---|---|---|
| timestamp | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and open-world, so safety is covered. The description adds genuine behavioral detail beyond that: the deterministic selection order and the tie-break policy, plus the concrete REST route, which reassures an agent about repeatability. No mention of rate limits or error behavior for out-of-range timestamps.
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?
The core rule is the very first sentence, with the doc link and REST route demoted to secondary lines. Every element earns its place and nothing is padded.
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?
A single-parameter read tool with an output schema and full annotation coverage needs only the selection semantics to be callable correctly, and those are stated exactly. Return values need not be described because the output schema supplies them.
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?
Schema coverage is reported at 0%, so the description must carry the load; it does reinforce that the input is a UNIX timestamp and clarifies the inclusive boundary semantics ('at or before'). However, it doesn't restate the unit (seconds) or the non-negative bound, which live only in the schema's $defs, so it only partially compensates.
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?
The description gives a precise verb+resource ('Find the block') and then fully specifies the selection rule: greatest header timestamp at or before the input, earliest height on ties. That level of specificity clearly separates it from height-based siblings such as get_block, get_block_hash_by_height, and get_blocks_from_height.
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?
The 'at or before' plus tie-breaking rule tells an agent exactly which query shape this tool answers, which implicitly excludes height- or hash-addressed lookups handled by siblings. It stops short of naming an alternative tool or stating exclusions explicitly, so it lands at a clear-context 4 rather than a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_fee_ratesBlock fee ratesARead-onlyIdempotentInspect
Get block fee rate percentiles (min, 10th, 25th, median, 75th, 90th, max) for a time period, each a whole sat/vB (/precise for 3 decimals).
REST operation: GET /api/v1/mining/blocks/fee-rates/{time_period}.
| Name | Required | Description | Default |
|---|---|---|---|
| time_period | Yes | Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds real context about output shape (the percentile set and rounding) that goes beyond the annotations, though it says nothing about rate limits or auth.
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?
Front-loads the operation and return set in one tight sentence, then a docs link and REST path. No filler; every element is informative.
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?
With a full output schema and rich annotations, the description needs only to state what is fetched and how it differs from the precise variant, which it does. Minor omission of any auth/rate-limit context keeps it from a 5.
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?
Schema coverage is 100% and the enum with all valid time periods is fully documented in the schema, so the schema does the heavy lifting. The description adds no meaning to `time_period` beyond what is already structured, so baseline 3 applies.
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 a specific verb and resource ('Get block fee rate percentiles') and enumerates exactly what is returned (min through max). It also distinguishes itself from the sibling get_block_fee_rates_precise by noting the whole sat/vB versus `/precise` 3-decimal variant.
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?
The parenthetical '(`/precise` for 3 decimals)' implicitly routes the agent to get_block_fee_rates_precise when finer precision is needed. There is no explicit when-not or prerequisite guidance, but the alternative is clearly signposted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_fee_rates_preciseBlock fee rates (precise)BRead-onlyIdempotentInspect
Get block fee rate percentiles (min, 10th, 25th, median, 75th, 90th, max) for a time period, each in sat/vB to 3 decimals.
REST operation: GET /api/v1/mining/blocks/fee-rates/{time_period}/precise.
| Name | Required | Description | Default |
|---|---|---|---|
| time_period | Yes | Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about units and decimal precision and includes the underlying REST operation, but does not mention response shape, pagination, or caching behavior.
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?
The description is short and front-loaded: the first sentence states exactly what is returned, followed by a docs link and the REST endpoint. Every sentence earns its place, though the REST line is somewhat redundant for an agent that only needs the call semantics.
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?
For a single-parameter read tool with annotations covering safety and an output schema covering return values, the description is adequate. The main missing piece is sibling differentiation against get_block_fee_rates and get_precise_fees, which matters given the dense list of similarly named tools.
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?
Schema description coverage is 100%, and the single time_period parameter is fully documented in the schema with enum values and examples. The description only says 'for a time period' and adds no syntax or format details beyond what the schema already provides, so baseline 3 is appropriate.
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?
The description states a specific verb and resource ('Get block fee rate percentiles') and enumerates the exact percentiles returned plus units (sat/vB, 3 decimals). This is more specific than the sibling get_block_fee_rates, but it does not explicitly state how it differs from that sibling or from get_precise_fees.
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 guidance on when to use this tool versus the closely named siblings get_block_fee_rates or get_precise_fees. The 'precise' qualifier implies a distinction, but the description never states it or gives any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_feesBlock feesBRead-onlyIdempotentInspect
Get average total fees per block for a time period.
REST operation: GET /api/v1/mining/blocks/fees/{time_period}.
| Name | Required | Description | Default |
|---|---|---|---|
| time_period | Yes | Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the underlying REST path and docs link, which is useful for verification, but says nothing about units (sat/vB vs total BTC), aggregation method, or data granularity beyond the annotations.
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?
One front-loaded sentence captures the purpose, followed by a docs link and REST operation line. The REST path is arguably redundant with the docs link, but overall there is very little waste.
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?
With an output schema present and annotations covering safety and idempotency, the description need not explain return values. The metric definition ('average total fees per block') plus lookback period is sufficient to call it correctly; only the unit ambiguity slightly weakens it.
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?
Schema coverage is 100% — the single time_period parameter is fully enumerated with examples and a description in the schema. The description only restates the existence of a time period, adding no syntax or behavioral detail beyond the structured data, so baseline 3 applies.
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 a specific verb and resource with a quantified metric: 'average total fees per block for a time period.' This is distinguishable in wording from the fee-rate siblings (get_block_fee_rates, get_precise_fees), though the description never explicitly contrasts itself with them.
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?
No guidance on when to pick this over get_block_fee_rates, get_block_fee_rates_precise, get_precise_fees, or get_block_rewards. The agent is left to infer from names alone which fee/reward endpoint matches its need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_hash_by_heightBlock hash by heightBRead-onlyIdempotentInspect
| Name | Required | Description | Default |
|---|---|---|---|
| height | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral fact — the response is plain text rather than a structured object — but says nothing about out-of-range heights, error behavior, or the underlying data source's eventual consistency.
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?
The payload is a single output statement front-loaded, followed by a doc link and the REST mapping. Every line is short and skimmable, though the docs link and REST operation are developer-facing filler for an agent that already has the schema.
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?
With a rich annotation set, a simple single-parameter schema, and an output schema present, the description needn't explain return values — and it doesn't. However, for a lookup by height it omits the one thing not covered elsewhere: what happens for heights beyond the chain tip or below zero.
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?
Schema description coverage is reported as 0% at the property level, so the description should compensate, and it only does so implicitly via the `{height}` path template. It adds no range, no note that 0 is genesis, and no reference to the examples in the schema's Height definition.
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?
The description states the returned resource (block hash) and pins it to a specific REST operation, `GET /api/block-height/{height}`, which makes clear the input is a height and the output is a hash. It is not tautological and implicitly differentiates from `get_block` (full block) and `get_block_tip_hash` (tip), though it never names those siblings explicitly.
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 guidance on when to use this tool versus alternatives such as `get_block`, `get_block_header`, or `get_block_tip_hash`, all of which live in the same sibling list. No prerequisites or exclusions are stated; the agent must infer the choice from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_headerBlock headerBRead-onlyIdempotentInspect
Returns the hex-encoded 80-byte block header.
REST operation: GET /api/block/{hash}/header.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive behavior, so the description's main added value is the exact output shape (hex string, 80 bytes). It doesn't mention error behavior for unknown hashes or confirm the response is a single string.
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?
One content sentence front-loads the key fact, followed by compact provenance lines. No waste, though the docs link line is arguably decorative.
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?
Output schema exists and annotations cover the safety profile, so the description only needs to state the resource and format, which it does. Minor gap: no mention of failure modes for invalid hashes.
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?
Schema description coverage is reported as 0% and the description says nothing about the required 'hash' parameter, so it does not compensate. The $defs does document byte-order conventions, but that comes from the schema, not the description.
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 a specific verb and resource with a precise output format ('hex-encoded 80-byte block header'). It is distinguishable from get_block (full block) by the header-specific framing, though no sibling is named explicitly.
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?
No guidance on when to use this versus get_block, get_block_status, or get_block_v1. The REST operation note and docs link give provenance but not selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_rewardsBlock rewardsARead-onlyIdempotentInspect
Get average coinbase reward (subsidy + fees) per block for a time period.
REST operation: GET /api/v1/mining/blocks/rewards/{time_period}.
| Name | Required | Description | Default |
|---|---|---|---|
| time_period | Yes | Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds value beyond that by defining what the returned figure actually is (subsidy plus fees, averaged per block) and by pinning the underlying REST operation, which helps an agent reason about freshness and semantics. It says nothing about aggregation granularity or caching, which keeps it from a 5.
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?
Three short lines, front-loaded with the metric definition, followed by the docs link and the exact REST path. Every element earns its place by helping an agent map the call or verify semantics; no filler.
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 the annotations fully cover safety and idempotency. The description supplies the metric definition and the API mapping. The only real gap is the absence of disambiguation from adjacent reward and fee siblings in a very crowded tool namespace.
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?
Schema description coverage is 100%: the single `time_period` parameter is documented with its enum values and an example in the schema itself. The description only restates 'for a time period' and adds no format or behavioral nuance (e.g. whether 'all' is unbounded cost). Baseline 3 applies when the schema does the work.
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 a specific verb and metric ('Get average coinbase reward (subsidy + fees) per block') plus the scoping dimension ('for a time period'), which is precise enough to identify the resource. It clarifies the composition of the reward (subsidy + fees), which is genuinely useful definitional detail. It stops short of naming how it differs from close siblings like get_reward_stats or get_block_fees.
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?
Usage is only implied: an agent can infer this is the aggregate per-block reward metric over a lookback window, versus the raw per-block fee tools. There is no explicit when-to-use, when-not-to-use, or named alternative among the several reward/fee/hashrate siblings that could plausibly be chosen instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blocksRecent blocksBRead-onlyIdempotentInspect
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
get_blocks_from_heightBlocks from heightARead-onlyIdempotentInspect
Retrieve up to 10 blocks going backwards from the given height. For example, height=100 returns blocks 100, 99, 98, ..., 91. Height=0 returns only block 0. A height past the tip is not found.
REST operation: GET /api/blocks/{height}.
| Name | Required | Description | Default |
|---|---|---|---|
| height | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds real behavior beyond that: the 10-block cap, descending order, and the two edge cases (genesis and past-tip returning not found).
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?
The core rule and examples are front-loaded in two tight sentences; the docs link and REST operation line are minor overhead but not wasteful. Nothing essential is buried.
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?
With an output schema present, the description needn't describe return values, and for a single-parameter read tool the explanation of range, ordering and edge cases is nearly sufficient. Only the ambiguity versus the sibling from-height tool remains unaddressed.
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?
Schema description coverage is reported as 0%, so the description must carry the load, and it does: it defines the height parameter through a worked example (100 yields 100..91) and explains what height=0 means. It doesn't add format constraints beyond the schema's integer/minimum, but the semantics are covered.
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 a specific verb and resource ('Retrieve up to 10 blocks going backwards from the given height') and pins down the direction and cap. It is distinct from get_block (single block) though it does not differentiate itself from the near-identical sibling get_blocks_v1_from_height.
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?
Boundary conditions are spelled out (height=0 returns only block 0; past the tip is not found), which helps an agent avoid errors, but there is no explicit statement of when to pick this over get_blocks or get_blocks_v1_from_height. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_sizes_weightsBlock sizes and weightsBRead-onlyIdempotentInspect
Get average block sizes and weights for a time period.
REST operation: GET /api/v1/mining/blocks/sizes-weights/{time_period}.
| Name | Required | Description | Default |
|---|---|---|---|
| time_period | Yes | Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile needs no restating. The description adds that values are averages over a lookback window and maps to a REST endpoint, but says nothing about response shape, granularity of the series, or rate limits. Useful but thin beyond the annotations.
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?
The core purpose is front-loaded in the first sentence with no padding, and the docs link plus REST operation line are compact reference aids. Slight redundancy in restating the time-period scoping, but nothing that wastes meaningful space.
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?
With one fully described parameter, complete annotations, and an existing output schema, the description covers what an agent needs to invoke the tool correctly. The remaining gap is non-essential context such as aggregation granularity, which the output schema likely conveys.
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?
Schema description coverage is 100% and the single time_period parameter has a full enum listing with an example, so the schema already carries the semantics. The description only restates 'for a time period' and adds no format or interpretation detail beyond the schema. Baseline 3 applies.
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?
The description states a specific verb and resource ('Get average block sizes and weights') plus the aggregation scope ('for a time period'), so an agent knows this returns averaged aggregates rather than a single block. It does not contrast itself with nearby siblings such as get_block_fees, get_block_fee_rates, or get_blocks, which also return block-level metrics.
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 guidance on when to choose this over get_block_fee_rates, get_block_fees, or get_blocks, and no exclusions or prerequisites are given. The only implied usage cue is the 'time period' phrasing, which suggests trend/aggregate queries rather than point lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_statusBlock statusARead-onlyIdempotentInspect
Whether the block is in the best chain and, if so, its height and the hash of the next block. A block outside the best chain (orphaned or unknown) reports in_best_chain: false.
REST operation: GET /api/block/{hash}/status.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe, idempotent read operation. The description adds useful non-obvious behavior: a block outside the best chain, including an unknown block, reports `in_best_chain: false` rather than failing. It does not discuss auth or rate limits, but those are less critical for this simple read.
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?
The description is short and front-loaded: the first sentence states the primary return semantics, and the following sentence clarifies the orphaned/unknown edge case. The docs link and REST provenance are compact and do not distract.
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?
For a low-complexity one-parameter read tool with annotations and an output schema, the description covers the main behavior and edge case adequately. It omits explicit alternatives to sibling block tools and does not explain the hash parameter, but the schema and output schema cover much of the remaining burden.
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 single `hash` parameter is only indirectly referenced through the REST path placeholder `{hash}`. The schema itself supplies the 64-hex pattern, examples, and BlockHash definition, but the description adds no meaningful guidance on the required format or meaning. With the context signal showing low schema description coverage, the description should compensate but does not.
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?
The description states a specific read operation and its key return semantics: best-chain membership, height, next block hash, and the `in_best_chain: false` case for orphaned/unknown blocks. It clearly distinguishes status from retrieving a full block, but does not explicitly contrast itself with siblings like `get_block` or `get_block_header`.
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?
Usage is implied: check whether a known block hash is in the best chain and get its height/next hash. There is no explicit when-to-use guidance, no when-not-to-use guidance, and no named alternatives among the many block-related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blocks_v1Recent blocks with extrasBRead-onlyIdempotentInspect
Retrieve the last 15 blocks with extended data including pool identification and fee statistics.
REST operation: GET /api/v1/blocks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior, so the safety profile is covered. The description adds the important behavioral scope of returning exactly the last 15 blocks and the content categories included, but it does not add further operational context such as ordering guarantees or limitations beyond that fixed window.
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?
The description is short and front-loads the key behavior: last 15 blocks with extended data. The documentation link and REST operation line are useful references but slightly redundant, keeping it just below maximally concise.
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?
Given the tool has no parameters, a rich output schema, and explicit annotations, the description provides enough context for correct invocation. It explains the block window and extended data fields, though it could more clearly distinguish this endpoint from other recent-block siblings.
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 has zero parameters, so there is no parameter semantics for the description to compensate for. The 100% schema description coverage and empty input schema make the baseline score of 4 appropriate.
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?
The description gives a specific verb and resource: retrieve the last 15 blocks with extended data including pool identification and fee statistics. It is clear what the tool returns, but it does not explicitly differentiate itself from sibling block-listing tools such as get_blocks or get_blocks_from_height.
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?
The description implies usage by saying it returns recent blocks with extended data, but it never states when to choose this over get_blocks, get_blocks_from_height, or get_blocks_v1_from_height. There are no exclusions or decision guidance for an agent selecting among many sibling block tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blocks_v1_from_heightBlocks from height with extrasARead-onlyIdempotentInspect
Retrieve up to 15 blocks with extended data going backwards from the given height: the published blocks among the 15 heights ending at it, so fewer (or none) past the tip.
REST operation: GET /api/v1/blocks/{height}.
| Name | Required | Description | Default |
|---|---|---|---|
| height | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the description is not burdened with safety disclosure. It adds genuinely useful behavioral detail beyond annotations: a hard cap of 15 blocks, backward traversal, and that only published blocks among the 15 heights are returned so results are fewer or empty past the tip. It does not discuss ordering of the returned blocks or pagination, but the output schema likely covers structure.
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?
The core behavior is front-loaded in one dense sentence, followed by a docs reference and REST operation mapping. No sentence is wasted and the boundary condition is included without bloat.
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?
With annotations covering safety and an output schema covering return structure, the description supplies the essential calling semantics: direction, cap, and tip behavior. The notable omission is sibling differentiation, which leaves a gap in a very crowded block-related namespace.
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 single height parameter is documented in the schema, yet the description adds crucial meaning: height is the ending/top height of the range, not the starting point, and traversal goes backwards. That resolves the main ambiguity an agent could have when passing the parameter.
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 a specific verb and resource with scope: retrieve up to 15 blocks with extended data going backwards from a given height. The 15-block cap and backwards direction are clear. However, it never distinguishes itself from near-identical siblings such as get_blocks_v1 and get_blocks_from_height, which an agent must disambiguate by schema inspection alone.
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 explicit when-to-use or when-not-to-use guidance and no alternative is named. The scope sentence implies the tool is for height-anchored backward listings, but with dozens of block-related siblings, implied usage is insufficient for reliable selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_tip_hashBlock tip hashCRead-onlyIdempotentInspect
REST operation: GET /api/blocks/tip/hash.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, and an output schema exists, so the safety profile is covered. The description adds no behavioral context of its own — no note on network scope, freshness/latency of the tip, or failure modes — beyond pointing at external docs.
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?
It is very short with no filler, but it is structured as a docs link followed by a raw REST path rather than as a front-loaded statement of what the agent gets back. The first line is a bare URL that conveys nothing on its own.
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?
For a zero-parameter read with an output schema, the minimum needed to invoke it is present. Still, the description never says in words that the return value is the tip block hash, nor distinguishes it from the sibling height tool, leaving the agent to lean entirely on the name and external documentation.
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 the baseline is 4; there is nothing for the description to explain. The empty schema is consistent with the described parameterless GET endpoint.
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?
The description only restates the tool name as a REST path ('GET /api/blocks/tip/hash'), which an agent can decode to mean 'the hash of the current chain tip'. That is enough to grasp the resource, but it offers no plain-language statement and no differentiation from close siblings like get_block_tip_height or get_block_hash_by_height.
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 guidance on when to call this versus get_block_tip_height, get_block_hash_by_height, or get_block. The agent must infer usage purely from the name and URL path, with no 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.
get_block_tip_heightBlock tip heightCRead-onlyIdempotentInspect
REST operation: GET /api/blocks/tip/height.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond a documentation URL — no note on rate limits, freshness/latency of the tip value, or that the result is a scalar rather than a block object.
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?
Two short lines with no filler; the doc link and endpoint are front-loaded. It is efficient, though the link precedes any plain-language statement of purpose, which is slightly backwards for an agent skimming.
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?
With an output schema present, return values needn't be explained, and with zero parameters and rich annotations the bar is low. Still, a one-clause note clarifying that this returns the latest block height (a plain integer) would close the only real gap.
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 nothing to disambiguate; the baseline of 4 applies. The description neither adds nor obscures parameter meaning.
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?
The description gives the exact REST endpoint (GET /api/blocks/tip/height), which pins down the resource precisely, but it never states in words what the call returns (the height of the chain tip). Combined with the name it is decipherable, yet it leans on the name rather than explaining the purpose, and it does not distinguish itself from neighbors like get_block_tip_hash or get_blocks.
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 guidance on when to call this instead of get_block_tip_hash, get_blocks, or get_block_by_timestamp. The doc link is the only hint at context, and the agent must infer the use case entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_txidTransaction ID at indexARead-onlyIdempotentInspect
Retrieve a single transaction ID at a specific index within a block. Returns plain text txid.
REST operation: GET /api/block/{hash}/txid/{index}.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | ||
| index | Yes | Transaction index within the block (0-based) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is handled. The description adds only that the result is plain-text txid rather than JSON, which is mildly useful context but the output schema already covers the return shape.
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?
Front-loaded with the action, then the return type, then a docs link and the REST path. Efficient, though the 'REST operation' line is largely redundant with the tool's purpose.
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?
For a two-parameter read tool with full annotations and an output schema, the description supplies everything needed to call it correctly. Nothing essential about errors, out-of-range indices, or block-not-found behavior is stated, but that is a minor gap.
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?
Both parameters are documented in the schema via $refs (BlockHash explains double-SHA256 byte order; BlockTxIndex explains 0-based position and that 0 is the coinbase), and the description adds no syntax, format, or range detail beyond that. With the schema doing the heavy lifting, baseline 3 is appropriate.
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 a specific verb and resource (retrieve a single transaction ID) plus the scoping constraint 'within a block' and the index position, which distinguishes it from chain-wide index lookups like get_txid_by_index. It does not explicitly name any sibling, so it stops just 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description tells you what it returns, from which you infer you need a block hash and index. There is no statement of when to prefer it over get_block_txs_from_index or get_txid_by_index, and no prerequisites or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_txs_from_indexBlock transactions (paginated)ARead-onlyIdempotentInspect
Up to 25 transactions starting at start_index, a multiple of 25.
REST operation: GET /api/block/{hash}/txs/{start_index}.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | ||
| start_index | Yes | Starting transaction index within the block (0-based) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the description's job is to add the operational constraint it does: page size capped at 25 and `start_index` must be a multiple of 25. That is a real behavioral rule not present in the schema. It omits error behavior for non-multiple indices and rate limits, so not a 5.
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?
One front-loaded sentence carries the page size and the index constraint; the docs link and REST operation line are reference metadata that aid traceability without bloating. Slightly more than strictly necessary but nothing wasteful.
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 no explanation, and annotations cover the safety profile; the description supplies the paging contract that is the main failure mode. Missing only error semantics for invalid `start_index` values and any rate-limit notes.
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?
Schema coverage is only 50%, and the description fills a genuine gap by adding the 'multiple of 25' requirement for `start_index`, which the schema only constrains to minimum 0. It adds nothing about `hash` beyond the schema's existing $defs description.
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 a specific verb and resource ('transactions' for a block, paginated from `start_index`) and the page size, so the agent knows exactly what is returned. It does not name a sibling such as `get_block_txid` to sharpen the contrast, which keeps it below a 5.
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?
No explicit when-to-use or when-not-to-use text; the agent must infer that this is the paginated enumeration path while `get_block_txid` fetches one transaction at an index. The 'multiple of 25' rule implies the paging pattern but is a constraint, not guidance about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_v1Block (v1)BRead-onlyIdempotentInspect
Returns block details with extras by hash.
REST operation: GET /api/v1/block/{hash}.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and open-world behavior, so the safety profile is covered. The description adds the REST endpoint and docs reference, but leaves “extras” unexplained and gives no behavioral detail about rate limits or response shape.
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?
The description is short, front-loaded with the core purpose, and contains no filler. The docs link and REST operation are compact and useful.
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 documented, and annotations cover safety. However, the description does not clarify what “extras” includes or how this tool differs from closely related block tools, leaving meaningful ambiguity for an agent choosing among siblings.
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 description only says “by hash,” which identifies the parameter name but adds little semantic meaning. The context signal reports 0% schema description coverage, so the description should compensate by explaining the expected hash format, but it does not.
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?
The description states a clear verb and resource: returns block details for a given hash. It is more specific than a tautology, but it does not explain what “extras” means or distinguish this tool from the sibling get_block / get_blocks_v1 tools.
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?
It provides no guidance on when to use this tool instead of get_block, get_block_header, get_block_status, or the other block-related siblings. The docs link and REST path identify the operation but do not tell an agent when this variant is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cpfpCPFP infoARead-onlyIdempotentInspect
Returns ancestors and descendants for a CPFP (Child Pays For Parent) transaction, including the effective fee rate of the package. A mempool transaction answers its live package; a confirmed one its package among its block's transactions; an unknown transaction, or a confirmed one without relatives in its block, {"ancestors":[]}.
REST operation: GET /api/v1/cpfp/{txid}.
| Name | Required | Description | Default |
|---|---|---|---|
| txid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuine behavioral context beyond them: results are state-dependent on whether the transaction is in the mempool or confirmed in a block, and an unknown or orphaned transaction yields `{"ancestors":[]}` rather than an error. It omits things like whether the empty-package case is distinguishable from a malformed txid, but this is solid added value over the annotations.
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?
Purpose is front-loaded in the first clause, the three state cases are compressed into one dense sentence each, and the docs link plus REST operation trail at the end where they belong. Nothing is padded.
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?
With an output schema handling return values and annotations handling the safety profile, the description only needs to carry the semantics of the result set, which it does via the mempool/confirmed/unknown cases. For a single-parameter read tool this is sufficient for correct invocation and interpretation.
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?
Schema description coverage is reported as 0%, but the shared Txid definition carries a description plus a hex pattern and three examples, so the format is well documented structurally. The prose adds nothing about the txid beyond what the schema shows; the only semantic hint is the implicit point that the same txid returns different packages depending on its confirmation state.
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?
The description names a specific resource (the CPFP package for a transaction) and a specific payload (ancestors, descendants, and effective package fee rate), which is far more precise than the bare name 'get_cpfp'. It does not explicitly route the agent away from the topically adjacent siblings (get_tx, get_tx_outspends, get_fullrbf_replacements), so it falls short of full sibling differentiation.
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?
Usage is only implied: the state-by-state explanation (mempool, confirmed, unknown) tells the agent what it will get for a given txid but never states when to prefer this tool over get_tx or get_fullrbf_replacements. There are no explicit when-not conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_difficulty_adjustmentDifficulty adjustmentARead-onlyIdempotentInspect
Get current difficulty adjustment progress and estimates.
REST operation: GET /api/v1/difficulty-adjustment.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is fully covered. The description adds only the 'current' framing (latest snapshot rather than historical series), which is modest extra value; it does not mention freshness/latency or that it hits a live upstream API despite openWorldHint.
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?
Two short lines, with the purpose front-loaded. The docs link and REST operation mapping are compact and useful for disambiguation rather than filler.
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?
With no parameters, a rich annotation set, and an output schema present, the description need not explain return values. The only missing piece is the sibling differentiation that would let an agent pick correctly among the three difficulty-adjustment tools.
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 and the schema is empty with additionalProperties=false, so there is nothing for the description to document. Baseline 4 applies.
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 a specific verb and resource ('Get current difficulty adjustment progress and estimates'), which is clearer than the title alone. However, it never distinguishes itself from the near-identical siblings get_difficulty_adjustments and get_difficulty_adjustments_by_period, so an agent cannot tell from the text which one returns the current epoch snapshot vs. history.
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?
No when-to-use guidance, no exclusions, and no reference to the two obvious alternatives despite their names being nearly identical. The word 'current' hints at a selection condition but the agent must infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_difficulty_adjustmentsDifficulty adjustments (all time)CRead-onlyIdempotentInspect
REST operation: GET /api/v1/mining/difficulty-adjustments.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered without prose. The description adds nothing beyond a link to external docs — no note on result volume, ordering, or whether the series is capped/paginated, which matters for an all-time list endpoint.
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?
Two short lines with no padding, and the docs link is placed first. It is efficient but nearly content-free — terseness here comes at the cost of information rather than as deliberate prioritization.
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?
With zero params, a rich annotation set, and an output schema, the description needs only to state scope and differentiation — and it only half does that, via the title. An external link to mempool.space docs is a weak substitute for in-band explanation of what 'all time' returns.
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 for this dimension is 4. The description correctly implies no filtering input is accepted.
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?
The description body only restates the REST route (`GET /api/v1/mining/difficulty-adjustments`), leaving the resource meaning to the name and title. The distinguishing scope detail — 'all time' — appears in the title rather than the description, and the description never says it returns the full history of difficulty retargets as opposed to a single adjustment.
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?
No guidance on when to use this versus `get_difficulty_adjustment` or `get_difficulty_adjustments_by_period`, despite those siblings being directly adjacent in function. An agent must infer from the title that this is the unfiltered/all-time variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_difficulty_adjustments_by_periodDifficulty adjustmentsBRead-onlyIdempotentInspect
Get historical difficulty adjustments for a time period.
REST operation: GET /api/v1/mining/difficulty-adjustments/{time_period}.
| Name | Required | Description | Default |
|---|---|---|---|
| time_period | Yes | Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent, non-destructive, open-world operation. The description adds the REST endpoint path and documentation link, which is useful but not substantial behavioral context beyond the annotations.
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?
The description is short and front-loaded: purpose first, then documentation link and REST operation. Every sentence earns its place.
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?
With a fully documented single parameter, complete annotations, and an output schema, the description is sufficient for correct invocation. The main omission is why this tool exists alongside the two similarly named difficulty-adjustment siblings.
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 single time_period parameter is fully documented in the schema, including all enum values. The description only restates 'time period' without adding format, default, or edge-case details beyond the schema.
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?
The description states a clear verb and resource: get historical difficulty adjustments for a time period. However, it does not distinguish this tool from the closely named siblings get_difficulty_adjustment and get_difficulty_adjustments.
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?
No guidance is given on when to use this tool instead of the singular or plural sibling tools. There are no exclusions, prerequisites, or alternative-selection hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fullrbf_replacementsRecent full-RBF replacementsARead-onlyIdempotentInspect
Same response shape as GET /api/v1/replacements, but limited to trees where at least one predecessor was non-signaling (full-RBF).
REST operation: GET /api/v1/fullrbf/replacements.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds the filtering criterion and response-shape note, but does not mention auth, rate limits, or pagination.
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?
Front-loaded single sentence plus a docs link and REST operation. No redundant explanation and every sentence contributes information.
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?
With an output schema and rich annotations, the description supplies enough to select and invoke correctly. The only minor gap is an explicit alternative-tool pointer for the non-full-RBF case.
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?
Zero parameters, so baseline is 4. The description does not need parameter details and correctly omits them.
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?
The description specifies a concrete resource and precise filter: replacement trees where at least one predecessor was non-signaling (full-RBF). It distinguishes this from the broader replacement endpoint by naming the REST endpoint it mirrors and the limitation.
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?
The 'but limited to' clause implies when to choose this over the all-replacements endpoint. However, it does not explicitly name the MCP sibling or state when not to use it, leaving a small gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hashrateNetwork hashrate (all time)ARead-onlyIdempotentInspect
Get network hashrate and difficulty data for all time.
REST operation: GET /api/v1/mining/hashrate.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world and non-destructive, so the safety profile is covered. The description adds only a docs link and the underlying REST path — nothing about cadence, history span, or approximate response size for an all-time series, which is the main behavioral risk here.
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?
Front-loaded with the purpose in one sentence, followed by a reference link and the REST operation. The docs link and REST path are supporting metadata rather than wasted prose, though they are not strictly needed for invocation.
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?
With zero parameters and an output schema present, the description need not explain return values. The only remaining gap is the granularity and total history span of the 'all time' series, which would help an agent judge payload size.
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, which is the baseline-4 case; there is nothing for the description to disambiguate. The schema's empty properties object is consistent with the description's framing as a fixed-endpoint read.
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 a specific verb (get) and resource (network hashrate and difficulty data), and the phrase 'for all time' implicitly distinguishes it from the period-scoped variant. It does not explicitly name get_hashrate_by_period, so sibling separation is implied rather than stated.
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?
The 'all time' qualifier hints at when this is appropriate versus get_hashrate_by_period, but no explicit when-to-use or when-not-to-use guidance is given. An agent must infer the routing rule from the tool name and the phrase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hashrate_by_periodNetwork hashrateBRead-onlyIdempotentInspect
Get network hashrate and difficulty data for a time period.
REST operation: GET /api/v1/mining/hashrate/{time_period}.
| Name | Required | Description | Default |
|---|---|---|---|
| time_period | Yes | Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds that both hashrate and difficulty series are returned and that it maps to a documented REST endpoint, but says nothing about result granularity, units, or response shape beyond that.
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?
One sentence stating what is returned, front-loaded, followed by a docs link and REST operation mapping that help an agent ground the call. No filler, though the REST line is arguably metadata rather than guidance.
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 needn't be described, and the sole parameter is fully documented in the schema. What's missing is enough context to place this tool among its many hashrate/difficulty siblings, which is the main gap for correct selection.
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?
Schema description coverage is 100% and the single time_period parameter already enumerates all valid windows with examples, so the baseline of 3 applies. The phrase 'for a time period' restates the parameter without adding semantics such as default window or resolution of returned data points.
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 a specific verb and resource plus the scope ('network hashrate and difficulty data for a time period'), which is clearer than most siblings. However, it never distinguishes itself from near-neighbors like get_hashrate, get_difficulty_adjustments_by_period, or get_pools_hashrate_by_period, so an agent must guess which of these overlapping tools 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?
The description gives no when-to-use or when-not-to-use guidance and never names an alternative. With at least three sibling tools covering hashrate/difficulty over periods, the choice is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historical_priceHistorical priceARead-onlyIdempotentInspect
Completed four-hour BTC/USD closes, newest first as mempool.space lists them, labeled by interval end, from the first priced interval (2010-08-16). With a UNIX timestamp, returns the latest nonempty completed close at or before it; before the first close returns an empty list. The current partial interval is excluded. USD only (currency accepts USD); exchangeRates is empty.
REST operation: GET /api/v1/historical-price.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | Quote currency: USD, the only one served | |
| timestamp | No | UNIX timestamp: the latest close at or before it |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the readOnly/idempotent annotations: ordering (newest first), labeling convention (interval end), exclusion of the current partial interval, empty-list edge case, and that exchangeRates comes back empty. These are exactly the non-obvious traits an agent would otherwise have to discover by trial.
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?
Front-loaded with the core resource and ordering, then edge cases, then docs link and REST operation. Dense and mostly waste-free, though the opening sentence packs several clauses and the repeated 'USD only' point sits slightly awkwardly after the empty-list caveat.
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?
With an output schema present, the description need not explain return shape, and it covers everything else an agent needs: scope, ordering, timestamp resolution, boundary behavior, and the currency limitation. No material gaps for a two-param read.
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?
Schema coverage is 100%, so the baseline is 3; the description earns a step above by spelling out the timestamp semantics on boundary cases (nonempty completed close at or before it, empty list before inception) and restating the USD-only constraint beyond the enum.
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 a specific verb+resource with granularity: 'Completed four-hour BTC/USD closes ... labeled by interval end, from the first priced interval (2010-08-16).' An agent can tell this is the historical 4h close series rather than a spot quote, though the nearest sibling (get_prices) is never named to make the split explicit.
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?
Gives concrete selection conditions: with no timestamp it lists all closes newest-first, with a UNIX timestamp it returns the latest close at or before it, and before the first close it returns an empty list. It does not name or exclude the sibling price/series tools, so routing is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mempoolMempool statisticsCRead-onlyIdempotentInspect
REST operation: GET /api/mempool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds nothing beyond that – no snapshot-vs-live semantics, no caching/freshness behavior, no cost or rate context for an open-world endpoint. No contradiction, but zero added value.
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?
It is short and free of padding, but the space it uses is spent on a URL and a route string rather than on the purpose sentence that should lead. Front-loading is weak: the first element is a doc link, not a statement of what the tool returns.
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 there are no parameters to document. Still, in a 70-plus-sibling server with several mempool-scoped tools, an agent cannot tell from this text whether the call returns aggregate mempool stats or a recent-transaction list; the definition leans entirely on the external doc link.
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 no parameters, so the baseline is 4. The description neither helps nor hurts here; there is simply nothing to disambiguate.
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?
The description only restates the name as a REST route ('GET /api/mempool') plus a docs link, without saying what a mempool statistic is or what the payload covers (fees, backlog, counts). It gives no basis for distinguishing this from close siblings such as get_mempool_recent or get_mempool_blocks.
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 guidance, no exclusions, and no mention of the near-identical siblings ('get_mempool_recent', 'get_mempool_blocks') that an agent must choose between. The only signal is a link, which is not usable guidance in-context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mempool_blocksProjected mempool blocksARead-onlyIdempotentInspect
Projected blocks for fee estimation. Block 0 reflects Bitcoin Core's actual next-block selection; blocks 1+ are a fee-tier approximation.
REST operation: GET /api/v1/fees/mempool-blocks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it discloses that only block 0 is a real projection while blocks 1+ are a fee-tier approximation, warning the agent about data fidelity.
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?
Two tight sentences front-load the purpose and the important block-0 caveat. The trailing docs link and 'REST operation: GET /api/v1/fees/mempool-blocks' are brief but boilerplate that adds little for an agent already given the tool schema.
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-value structure needn't be spelled out, and the description still conveys the meaning of block 0 versus later blocks. Combined with a zero-parameter, annotated, read-only operation, this is nearly complete; only explicit sibling routing is missing.
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 the baseline is 4. Nothing in the schema needs explanation, and the description correctly does not invent parameter guidance.
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 a specific resource ('Projected blocks') and its purpose ('for fee estimation'), plus the key structural distinction that block 0 is Core's actual next-block selection while blocks 1+ are approximations. It doesn't name which sibling to use instead (e.g., get_precise_fees or get_block_fee_rates), so sibling differentiation is implicit rather than explicit.
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?
'For fee estimation' implies the use case, and the block-0-vs-1+ note hints at when the data is authoritative versus approximate. However, there is no explicit statement of when to prefer this over the many sibling fee/block tools (get_precise_fees, get_block_fee_rates, get_mempool), leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mempool_recentRecent mempool transactionsARead-onlyIdempotentInspect
Get the last 10 transactions to enter the mempool.
REST operation: GET /api/mempool/recent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior. The description adds the useful behavioral limit ('last 10') and names the REST endpoint, but does not discuss freshness, ordering, rate limits, or return format. With annotations covering safety, a 3 is appropriate.
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?
The scope is front-loaded in the first sentence, followed by a docs link and REST operation. Every element earns its place and there is no padding.
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?
For a zero-parameter read-only tool with an output schema and rich annotations, the description supplies everything needed to invoke it correctly: exactly what is returned and the underlying endpoint. No missing call-critical context.
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 has zero parameters, so there are no parameter semantics to explain; baseline 4 applies. The description correctly does not invent parameter details.
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 a specific verb ('Get'), resource ('transactions to enter the mempool'), and hard scope ('last 10'). This distinguishes it from sibling tools like get_mempool (mempool state) and get_address_mempool_txs (address-scoped mempool transactions).
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?
The description says what it returns but never states when to use it versus alternatives such as get_mempool or get_address_mempool_txs. No exclusions or prerequisite context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_poolMining pool detailsARead-onlyIdempotentInspect
Block counts and mining shares by time period for one pool.
REST operation: GET /api/v1/mining/pool/{slug}.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a safe, read-only, idempotent, open-world operation. The description adds useful context about the returned metrics and the underlying REST path, but does not disclose pagination, time-period controls, or output behavior beyond what annotations and the output schema provide.
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?
The description is short, front-loaded with the core behavior, and includes the docs link and REST operation without unnecessary filler.
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?
For a single-parameter read-only endpoint with an output schema, the description is mostly complete: it states what metrics the tool returns and maps to the REST operation. Minor gaps remain around how the time period is determined, but the output schema likely covers the response shape.
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?
There is only one parameter, slug, and the schema enumerates all valid pool identifiers with a description. The description only indirectly references it via the REST path template '{slug}' and adds no additional guidance on selecting a pool slug.
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?
The description identifies the resource (one mining pool) and the metrics returned (block counts and mining shares by time period). This distinguishes it reasonably well from siblings like get_pool_blocks and get_pool_hashrate, though it does not use a direct verb-resource phrasing.
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?
The phrase 'for one pool' implies this is the single-pool aggregate-stats endpoint, distinguishing it from list-oriented siblings such as get_pools. However, there is no explicit guidance on when to use this tool versus get_pool_blocks, get_pool_hashrate, or get_pool_ranking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pool_blocksMining pool blocksBRead-onlyIdempotentInspect
Get up to 100 recent blocks mined by a specific pool.
REST operation: GET /api/v1/mining/pool/{slug}/blocks.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds one genuinely useful behavioral fact -- results are capped at 100 blocks -- but says nothing about ordering, whether the cap is silent truncation, or how an unknown slug behaves.
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?
One precise sentence front-loads the purpose and scope, followed by a short docs link and REST path. The citation lines are boilerplate but compact; nothing is padded.
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?
With full annotations and an output schema, the description need only cover selection and scope, and it does both for a single-parameter list tool. Minor gaps (ordering of the 100 blocks, truncation behavior) are secondary given the output schema defines the return shape.
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?
Only one required parameter exists and the schema's enum enumerates every valid slug, so the parameter is largely self-documenting even though stated coverage is 0%. The description's phrase "a specific pool" restates the obvious rather than explaining slug format or what happens for pool slugs not in the enum.
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 a specific verb and resource ("Get ... blocks mined by a specific pool") and adds a concrete scope limit of 100 results, so an agent knows exactly what it retrieves. It does not explicitly name the sibling get_pool_blocks_from_height to differentiate itself, which keeps it from a 5.
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?
No when-to-use or when-not-to-use guidance is provided; the selection logic against siblings like get_pool_blocks_from_height or get_pool must be inferred from the word "recent" and the 100-block cap. The docs link and REST operation line supply no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pool_blocks_from_heightMining pool blocks before heightARead-onlyIdempotentInspect
Get up to 100 blocks mined by a specific pool strictly below the given height (pass the last height of a page to get the next one).
REST operation: GET /api/v1/mining/pool/{slug}/blocks/{height}.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| height | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description adds real behavioral facts: a hard cap of 100 results, strict exclusivity of the height boundary, and the pagination contract — none of which are in the annotations.
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?
One front-loaded sentence covering result cap, filter, and pagination, followed by a doc link and the REST operation. Every element is load-bearing; nothing is padded.
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?
Output schema exists, so return values need not be explained, and the cap, exclusivity, and pagination are all covered. The only gap is guidance on choosing this tool versus get_pool_blocks, which is left implicit.
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?
Schema description coverage is reported at 0%, though the $defs do carry brief descriptions and a full pool enum. The description adds meaningful semantics for height ('strictly below', page cursor usage) but says nothing about slug beyond 'a specific pool', leaving the enum to speak for itself.
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 a specific verb and resource ('Get up to 100 blocks mined by a specific pool') plus the scoping constraint ('strictly below the given height'), which clearly separates it from the parent-range siblings get_pool_blocks and get_blocks_from_height.
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?
Gives concrete usage context for pagination ('pass the last height of a page to get the next one'), which tells the agent how to iterate. It does not explicitly exclude or name alternatives like get_pool_blocks, so it falls short of a full when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pool_hashrateMining pool hashrateBRead-onlyIdempotentInspect
Get hashrate history for a specific mining pool.
REST operation: GET /api/v1/mining/pool/{slug}/hashrate.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds the upstream REST endpoint and a docs link, which aids interpretation, but says nothing about time granularity, default range, or coverage of the returned history.
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?
The purpose sentence is front-loaded and the docs link plus endpoint line are compact and useful reference material. Slight overhead from formatting, but nothing extraneous.
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 and annotations cover the safety profile, so the burden is lighter. Still, the existence of get_hashrate_by_period and get_pools_hashrate_by_period siblings means the description should clarify whether this returns full history at a default resolution or supports period selection.
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?
Schema description coverage is 0% at the property level; the only documentation is the $defs description of PoolSlug. The description compensates slightly by tying the slug to "a specific mining pool," but adds no examples, format rules, or note that invalid slugs fail.
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?
"Get hashrate history for a specific mining pool" gives a specific verb, resource, and scope (single pool), which implicitly separates it from the network-wide get_hashrate and the multi-pool get_pools_hashrate. It never names those siblings explicitly, so an agent must infer the distinction from the word "specific."
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?
Usage is only implied by the phrase "for a specific mining pool." There is no explicit guidance on when to prefer this over get_pools_hashrate, get_hashrate_by_period, or get_pools_hashrate_by_period, which are the most plausible alternatives given the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pool_rankingMining pool statisticsBRead-onlyIdempotentInspect
Get mining pool statistics for a time period.
REST operation: GET /api/v1/mining/pools/{time_period}.
| Name | Required | Description | Default |
|---|---|---|---|
| time_period | Yes | Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior, so the safety profile is covered. The description adds useful provenance (the REST operation GET /api/v1/mining/pools/{time_period} and a docs link) but says nothing about what the statistics contain, how they are ordered, or units of measurement.
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?
Two short sentences with the purpose front-loaded, followed by the docs link and REST mapping. Slightly more boilerplate than needed, but nothing is padded.
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?
For a single-parameter, read-only tool with an output schema available, the description covers purpose and provenance adequately. The remaining gap is that an agent cannot tell from the description how this ranking differs from the other pool endpoints.
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?
Schema description coverage is 100% and the enum values are fully documented in the schema, so the baseline of 3 applies. The description itself never mentions time_period's accepted values or default behavior, adding nothing beyond the schema.
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 a specific verb and resource ("Get mining pool statistics for a time period"), which is clear on its own. However, it gives no signal distinguishing it from the many pool-related siblings such as get_pools, get_pools_hashrate, or get_pools_hashrate_by_period, and it never says that the result is a *ranking* of pools as the tool name implies.
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 guidance on when to choose this over get_pools or get_pools_hashrate_by_period, and no exclusions or prerequisites. Usage is only inferable from the single required time_period parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_poolsList all mining poolsCRead-onlyIdempotentInspect
REST operation: GET /api/v1/mining/pools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered without the description. The description adds nothing behavioral — no mention of aggregation window, caching, rate limits, or whether the pool list is historical vs current — so it contributes essentially no value beyond structured fields.
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?
Two lines with no filler and the docs link is front-loaded, which is good. However, the body is so thin that 'concise' tips into 'under-specified' — the REST path line largely restates the name and occupies space that could have gone to a one-line purpose statement.
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?
With no parameters, a full annotation set, and an output schema, the structural burden is low, so the minimal description is almost sufficient. It still omits what the response covers (e.g., whether the pool list spans all time or a specific window) and how it relates to the several sibling pool endpoints, leaving a real gap for an open-world data tool.
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, which is the baseline-4 case; there is nothing for the description to disambiguate. Schema coverage is reported at 100% and the empty object schema is self-explanatory.
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?
The description itself only supplies a docs link and the raw REST path `GET /api/v1/mining/pools`; the actual 'list mining pools' intent comes from the title rather than the prose. An agent can infer the resource but gets no explicit statement of what a pool record contains or how it differs from siblings like get_pool, get_pool_ranking, or get_pools_hashrate.
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 guidance, no alternatives named, and no prerequisites stated. The only external pointer is a docs URL, which forces the agent to leave the tool definition to decide whether this or get_pool_ranking / get_pools_hashrate is the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pools_hashrateAll pools hashrate (all time)BRead-onlyIdempotentInspect
Get weekly hashrate data, over the whole chain, of the mining pools that mined in the last week, by time and then their weekly rank.
REST operation: GET /api/v1/mining/hashrate/pools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds ordering behavior ('by time and then their weekly rank') and the last-week scope, which is modest but real added context.
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?
The core purpose and ordering are front-loaded in the first sentence; the docs link and REST operation are short trailing metadata. Slight awkwardness in 'by time and then their weekly rank' but nothing wasteful.
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 explained, and annotations cover the safety profile. However, the mismatch between the title ('all time') and the body ('last week') leaves ambiguity about the actual time window that the description should have resolved.
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 nothing for the description to disambiguate; baseline 4 applies. The schema is empty and consistent with the description.
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?
The description states a specific verb and resource ('Get weekly hashrate data ... of the mining pools') along with scope ('whole chain', 'mined in the last week'). It does not, however, distinguish itself from close siblings like get_pools_hashrate_by_period or get_pool_hashrate, and the title's '(all time)' conflicts with the 'last week' wording.
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 explicit when-to-use guidance and no mention of alternatives such as get_pool_hashrate (single pool) or get_pools_hashrate_by_period. The agent must infer applicability from the word 'weekly' alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pools_hashrate_by_periodAll pools hashrateARead-onlyIdempotentInspect
Get weekly hashrate data, for a time period, of the mining pools that mined in the last week, by time and then their weekly rank.
REST operation: GET /api/v1/mining/hashrate/pools/{time_period}.
| Name | Required | Description | Default |
|---|---|---|---|
| time_period | Yes | Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe, idempotent, read-only open-world operation, so the description does not need to cover those traits. It adds useful behavioral context by saying the data is for pools that mined in the last week and is ordered by time and then weekly rank. It does not cover return format, but an output schema exists.
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?
The description is front-loaded with the core purpose and includes the REST endpoint and docs link without excessive boilerplate. It is somewhat awkwardly phrased around weekly data and weekly rank, but it remains appropriately compact.
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?
Given the rich annotations, full schema coverage, and an output schema, the description provides enough context for a simple read-only endpoint. The main remaining gap is sibling differentiation, which is more of a usage-guideline issue than missing core context.
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?
Schema description coverage is 100%, and the single time_period parameter is fully documented in the schema with its enum and examples. The description only refers generically to a time period, so it adds little semantic meaning beyond the schema. Baseline 3 is appropriate.
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?
The description states a specific resource and operation: hashrate data for mining pools, scoped by a time period, ordered by time and weekly rank. It is clear enough to identify the tool, but it does not distinguish this from close siblings such as get_pools_hashrate, get_pool_hashrate, or get_pool_ranking.
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?
The description gives no explicit when-to-use guidance and does not name any alternative tool. With many closely named sibling tools available, an agent receives no routing help about when this by-period variant should be chosen over the others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_precise_feesRecommended fee rates (precise)ARead-onlyIdempotentInspect
Recommended fee rates by confirmation target, with up to three decimal places and support for sub-sat/vB rates.
REST operation: GET /api/v1/fees/precise.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description still adds genuinely useful behavior beyond that: output precision (three decimals) and support for sub-sat/vB rates, which materially affects how an agent interprets the returned numbers.
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?
Purpose is front-loaded in the first clause, followed by the distinguishing precision detail. The docs link and REST operation line are compact and aid upstream mapping, though the markdown link is mild boilerplate.
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?
With no parameters, an output schema covering return values, and rich annotations, the description only needs to add units and precision, which it does. A brief note on whether the recommendation is a live mempool estimate or a snapshot would close the remaining gap.
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?
Zero parameters, so the baseline of 4 applies. The phrase 'by confirmation target' usefully signals the shape of the response (rates keyed per target), which is the only semantic an agent needs here.
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 a specific resource and qualifier (recommended fee rates by confirmation target, with up to three decimal places and sub-sat/vB support), which is far more than a restatement of the name. It stops short of distinguishing this from the adjacent get_block_fee_rates and get_block_fee_rates_precise siblings, so an agent still has to infer why to pick this one.
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?
Usage is only implied: 'recommended fee rates by confirmation target' hints at the fee-selection use case, but there is no explicit when-to-use, no named alternative, and no statement of when the non-precise or block-based fee endpoints would be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricesCurrent BTC priceARead-onlyIdempotentInspect
Returns bitcoin latest price (on-chain derived, USD only).
REST operation: GET /api/v1/prices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: the price is on-chain derived rather than an exchange feed, and only USD is supported, which materially affects interpretation of the result.
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?
Lead sentence front-loads what matters (what it returns, how it is derived, currency limit). The docs link and the REST operation line are mildly redundant but act as grounding metadata; nothing is padded.
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?
With zero inputs, a present output schema, and full annotation coverage, the description only needs to convey meaning and constraints, which it does. Only the missing routing versus get_historical_price keeps it from a 5.
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?
Zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It correctly does not invent parameter discussion and instead spends its words on output meaning and constraints.
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 a specific verb and resource ('Returns bitcoin latest price') plus a meaningful qualifier ('on-chain derived, USD only'). The word 'latest' implicitly separates it from the sibling get_historical_price, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the word 'latest' and the USD/on-chain constraint; there is no explicit statement of when to prefer this over get_historical_price. The agent can infer the split, but the description never names the alternative or sets the condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_replacementsRecent RBF replacementsARead-onlyIdempotentInspect
Returns up to 25 most-recent RBF replacement trees across the whole mempool. Each entry has the shape of replacements in GET /api/v1/tx/{txid}/rbf.
REST operation: GET /api/v1/replacements.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false. The description adds useful behavior beyond annotations: a cap of 25, most-recent ordering, and a pointer to the entry shape, though it does not describe empty/error behavior.
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?
The description is short and front-loaded with scope, cap, and recency. The docs link and REST operation reference are useful context rather than filler.
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?
With an output schema, full annotation coverage, and zero parameters, the description supplies the remaining essentials: the 25-item cap, recency, global mempool scope, and return-entry shape. Nothing critical for calling it correctly is missing.
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 has zero parameters, so the baseline of 4 applies. The description correctly does not invent parameter details because none exist.
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 a specific verb and resource: returns recent RBF replacement trees, with a clear scope of across the whole mempool. It does not explicitly name or differentiate from sibling tools such as get_tx_rbf or get_fullrbf_replacements, so it is clear but not fully sibling-differentiated.
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?
Provides no explicit when-to-use guidance, prerequisites, or alternatives. An agent must infer from 'across the whole mempool' that this is the global recent-list endpoint rather than a per-transaction RBF view.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reward_statsMining reward statisticsARead-onlyIdempotentInspect
Get mining reward statistics for the last N blocks including total rewards, fees, and transaction count.
REST operation: GET /api/v1/mining/reward-stats/{block_count}.
| Name | Required | Description | Default |
|---|---|---|---|
| block_count | Yes | Number of recent blocks to include |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so safety needs no restating. The description adds genuine context beyond them: the result is an aggregate over a rolling window of recent blocks and covers three specific metric families. Missing only practical behavior such as cost/pagination or a max block_count.
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?
The core sentence is front-loaded and covers purpose plus returned fields in one line. The trailing docs link and REST operation line are supplementary rather than wasteful, though the raw endpoint string adds little for an agent already holding this tool.
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?
Given an output schema (return values need no explanation), rich annotations, and a fully documented single parameter, the description covers what is needed to call it correctly. The only gap is the absence of any note on valid ranges or expected call cost for large block_count values.
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 single parameter has full schema coverage with a description, a minimum, and an example. The description's 'last N blocks' merely restates what the schema already says about block_count, adding no format or boundary detail. Baseline 3 applies when the schema carries the parameter burden.
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 a specific verb and resource (get mining reward statistics) and enumerates the returned metrics (total rewards, fees, transaction count) over the last N blocks. The 'last N blocks' aggregation scope implicitly separates it from per-block siblings like get_block_rewards, but it never names an alternative explicitly.
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?
Usage is only implied: the phrase 'for the last N blocks' signals this is an aggregate window query rather than a single-block lookup. There is no explicit guidance on when to prefer this over get_block_rewards or get_block_fees, and no stated limits on block_count.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_seriesGet series dataCRead-onlyIdempotentInspect
Rows selected by a range of positions, dates or timestamps, as JSON or CSV.
REST operation: GET /api/series/{series}/{index}.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Exclusive end: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. | |
| index | Yes | ||
| limit | No | Maximum number of values to return; with `end` too, the tighter of the two applies. Omitted, the rest of the range. | |
| start | No | Inclusive start: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. | |
| format | No | ||
| series | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds only that output can be JSON or CSV, which merely echoes the format enum in the schema; it says nothing about volume, pagination, or the cost of wide ranges.
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?
Two short sentences plus a route line, with the ranged-row behavior front-loaded and zero filler. The REST operation line is useful for agents mapping to the underlying API.
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?
Six parameters, half of them undocumented in the schema, an output schema present, and a crowded set of get_series_* siblings — yet the description explains neither the series/index semantics nor why this variant should be chosen. It is too thin for the surface area.
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?
Schema coverage is 50%, but the description does real work by explaining that the range can be expressed as positions, dates, or timestamps, which is exactly the anyOf meaning of start/end. It stops short of covering series name, index aggregation, or how limit interacts with end.
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?
The description says it returns "Rows selected by a range of positions, dates or timestamps, as JSON or CSV," which conveys a ranged-read of series data, and the REST route GET /api/series/{series}/{index} pins the resource. However, it never says what a "series" value actually is, and it draws no distinction from close siblings like get_series_bulk, get_series_latest, or get_series_len.
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 guidance at all — no statement about choosing a bounded range versus the bulk, latest, or count variants that sit right next to it in the tool list. The agent must infer selection from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_series_bulkBulk series dataARead-onlyIdempotentInspect
Fetch multiple series in a single request. Supports filtering by index and date range. Returns an array of SeriesData objects. For a single series, use get_series instead.
REST operation: GET /api/series/bulk.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Exclusive end: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. | |
| index | Yes | ||
| limit | No | Maximum number of values to return; with `end` too, the tighter of the two applies. Omitted, the rest of the range. | |
| start | No | Inclusive start: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. | |
| format | No | ||
| series | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds the return shape ('array of SeriesData objects') and the underlying REST operation, which is useful context beyond the annotations, though it doesn't mention pagination or error behavior.
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?
Three tight sentences plus the REST line; the core purpose and the sibling routing are front-loaded with no wasted text.
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?
With an output schema present, return values needn't be explained, and the description correctly signals the array-of-SeriesData result. The remaining gap is parameter-level guidance for the series list and limit interplay, which the 50% schema coverage doesn't fully cover.
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?
Schema coverage is only 50%, so the description needs to compensate. It gestures at 'filtering by index and date range' (start/end/index) but says nothing about the comma-separated `series` list format, its 32-name/2048-byte budget, `limit`, or `format` — all left to the schema. Adequate but leaves a gap at this coverage level.
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 a specific verb and resource ('Fetch multiple series in a single request') and explicitly contrasts with the sibling get_series for single-series use. An agent can distinguish this bulk variant from get_series without opening either schema.
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?
Explicitly routes single-series callers to `get_series` instead, which is a concrete alternative. It doesn't spell out other exclusion conditions (e.g., when to prefer get_series_latest or search_series), but the primary branching decision is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_series_countSeries countARead-onlyIdempotentInspect
Returns the number of series available per index type.
REST operation: GET /api/series/count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that the tool is read-only, idempotent, open-world, and non-destructive. The description adds useful context about what is returned, but it does not describe authentication, rate limits, or other behavioral traits beyond the annotations.
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?
The description is two short sentences and front-loads the actual behavior. There is no wasted wording, and the REST endpoint is supplementary but compact.
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?
For a no-parameter, read-only count endpoint with annotations and an output schema, the description is mostly complete. It could better clarify how this count relates to nearby series-listing or length tools, but no critical calling information is missing.
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 has zero parameters, so there is no parameter semantics burden in the description. The empty input schema makes the baseline score 4 appropriate.
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?
The description states a specific verb and resource: it returns the number of series available per index type. It is clear what the tool does, though it does not explicitly differentiate itself from nearby siblings such as list_series, search_series, or get_series_len.
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?
The description gives no guidance on when to use this tool versus alternatives. The REST operation line is implementation detail, not usage guidance, and it does not explain when a count is preferable to listing or searching series.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_series_infoGet series infoARead-onlyIdempotentInspect
Returns the optional description, supported indexes, the indexes whose values can be null, the value type, and the optional unit (what the value type measures) for the specified series. The decoded series name is limited to 1024 UTF-8 bytes.
REST operation: GET /api/series/{series}.
| Name | Required | Description | Default |
|---|---|---|---|
| series | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so safety is covered. The description adds real behavioral detail beyond them: which returned fields are optional (description and unit may be absent) and that the decoded series name is capped at 1024 UTF-8 bytes, which matters for how the call can be made.
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?
One dense sentence front-loads the useful content (what is returned) before the constraint and REST path. The REST operation line is minor filler but non-redundant; nothing is repeated from schema or annotations.
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?
With an output schema present, the description needn't detail return shape, yet it usefully previews the fields and flags which are optional. Annotations cover the safety profile. For a single-parameter read tool this is essentially complete, short of guidance on behavior for unknown series names.
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?
Schema description coverage is 0%, but the schema itself carries pattern (^[a-z0-9_]+$) and examples, so the naming format is discoverable. The description compensates partially with the 1024-byte decoded-name limit, but adds nothing about resolution behavior when a series does not exist.
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 a specific verb ('Returns') and enumerates exactly what metadata comes back for a series: description, indexes, nullable indexes, value type, unit. This is clearly distinct from value-fetching siblings like get_series or get_series_latest, though the description never names those siblings to make the distinction explicit.
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 explicit when-to-use guidance or exclusion versus get_series, get_series_latest, list_series, or search_series. The scope ('for the specified series') implicitly signals this is a per-series metadata lookup, but the agent must infer the choice from the return fields listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_series_latestGet latest series valueBRead-onlyIdempotentInspect
Returns the single most recent value for a series, unwrapped (not inside a SeriesData object).
REST operation: GET /api/series/{series}/{index}/latest.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| series | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered structurally. The description adds one useful behavioral fact – the value is returned unwrapped, not inside a SeriesData object – plus the underlying REST path, but says nothing about behavior for empty/missing series or error conditions.
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?
Two short sentences, front-loaded with the meaning of the return value. The REST operation line is marginally useful as a mapping hint but is not needed for invocation.
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 shape need not be restated, and annotations carry the safety profile. The remaining gaps are the total absence of parameter explanation for a 2-required-param tool and the lack of explicit differentiation from the many get_series* siblings.
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?
Schema description coverage is 0% at the property level; 'series' and 'index' are bare $refs, and the description never explains either. It does not say what a valid series name is, what the index aggregation dimension does to the result, or how a non-time index like 'height' affects the 'latest' semantics.
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 a specific verb and resource: returns the single most recent value for a series, and adds the distinguishing detail that the result is unwrapped rather than a SeriesData object. That distinguishes it reasonably from get_series, though it never names the sibling explicitly.
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?
Usage is only implied by the phrase 'single most recent value' – an agent can infer this is the shortcut when only the latest point is needed, but there is no explicit 'use X when you need the full series' routing against get_series or get_series_bulk.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_series_lenGet series data lengthCRead-onlyIdempotentInspect
Get series data length
REST operation: GET /api/series/{series}/{index}/len.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| series | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description contributes only the underlying REST route, which adds minor context but says nothing about authentication, rate limits, or error behavior.
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?
It is short and front-loaded, but the opening line duplicates the title verbatim, so half the content carries zero incremental information. Concision here comes from under-specification rather than tight writing.
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 shape needn't be described, but the core semantic question — what 'length' measures for a series under a given index — is left unanswered. For a tool in a dense family of near-identically named get_series* siblings, more disambiguation is required.
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?
Schema description coverage is reported at 0% and the description says nothing about the 'series' or 'index' parameters. The embedded $defs do supply an enum and examples for Index, but the description itself never confirms that 'series' is a name from list_series or explains the aggregation dimension's role in the length calculation.
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 verb 'get' and the resource 'series data length', but the first line is essentially a restatement of the title with no elaboration on what 'length' means (number of data points? size of response array?). It does not distinguish itself from the very similar sibling get_series_count, leaving the agent unable to tell the two apart.
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 guidance on when to use this versus get_series, get_series_count, get_series_latest, or get_series_bulk. The most important disambiguation — this tool versus get_series_count — is completely unaddressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_series_versionGet series versionARead-onlyIdempotentInspect
Returns the vector's schema/computation version, not its length or latest update. Appends and reorgs do not by themselves change this version.
REST operation: GET /api/series/{series}/{index}/version.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| series | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds useful semantics beyond that: appends and reorgs do not by themselves change this version, which helps the agent understand what the returned version represents.
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?
The description is front-loaded with the key distinction, explains the meaning of the version in one additional sentence, and ends with the REST operation. There is no wasted text.
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. The description adequately explains the tool's semantic purpose and behavioral nuance, but it leaves parameter meaning largely to the schema despite low documented coverage.
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?
Schema description coverage is reported as 0%, and the description does not explain what series or index mean semantically beyond showing them in the REST path. It relies entirely on the schema's examples and enum to convey parameter meaning, leaving a significant gap for two required parameters.
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?
The description states a precise verb and resource: it returns the vector's schema/computation version. It also distinguishes this from sibling concepts like length and latest update, so an agent can separate it from get_series_len and get_series_latest.
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?
It clearly frames when this tool is appropriate by contrast: use it for schema/computation version, not for length or latest update. However, it does not explicitly name the alternative sibling tools or state exclusions beyond those contrasts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sync_statusSync statusARead-onlyIdempotentInspect
Returns a coherent local index snapshot and a separately observed Bitcoin Core tip height. The two heights can differ during indexing or a reorg. Conditional requests refresh these observations before validation.
REST operation: GET /api/server/sync.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a read-only, idempotent, non-destructive call, so the bar is lowered. The description still adds genuine context the annotations do not: the two heights may legitimately diverge, and conditional requests re-observe the values before validation — a caching/ETag nuance an agent would otherwise misinterpret as stale data.
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?
Four short sentences, front-loaded with the return semantics before the edge-case note and the REST route. The 'Conditional requests refresh these observations before validation' line is terse to the point of being cryptic, but nothing is redundant.
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?
With an output schema present and annotations covering the safety profile, the description only needs to explain the semantic subtlety of two divergent heights, which it does. It stops short of stating what a caller should conclude from a non-zero divergence, leaving interpretation to the schema.
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 and the schema is closed with additionalProperties=false, so baseline is 4. Nothing in the description is needed to explain inputs, and the return-shape explanation is left to the output schema.
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?
The description names a specific resource (sync status) and states precisely what is returned: a coherent local index snapshot plus a separately observed Bitcoin Core tip height. It is clear enough to distinguish from the block/tip siblings, but never explicitly contrasts with get_block_tip_height or get_block_status, which report related heights.
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?
Usage is only implied: 'can differ during indexing or a reorg' hints at when an agent would care (diagnosing index lag or a chain reorg), but there is no explicit when-to-use, when-not, or named alternative such as get_block_tip_height for the raw tip alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transaction_timesTransaction first-seen timesARead-onlyIdempotentInspect
First-seen UNIX timestamps in seconds, in request order, of transactions in the mempool or that recently left it other than by replacement (mined ones included); 0 otherwise.
REST operation: GET /api/v1/transaction-times.
| Name | Required | Description | Default |
|---|---|---|---|
| txids | Yes | Transaction IDs to look up (max 100 per request). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: timestamps are UNIX seconds, results follow request order, mined transactions are included, replacement transactions are excluded, and the fallback value is 0. This is substantive context for interpreting output, though error and freshness semantics are not covered.
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?
The description is front-loaded with the return semantics and edge cases, then supplies a docs link and REST operation. Every sentence is compact and useful, with no filler.
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?
For a simple read-only lookup with a fully described input schema, complete annotations, and an output schema, the description supplies sufficient behavioral context. The key edge cases and ordering semantics are explained, so an agent can invoke and interpret the tool correctly.
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?
Schema description coverage is 100%, and the single txids parameter is fully documented in the schema. The description adds slightly by saying values are returned 'in request order', but it does not otherwise add parameter meaning beyond the schema; baseline 3 is appropriate.
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?
The description states a specific verb and resource: it returns first-seen UNIX timestamps for requested transactions. 'First-seen' and the mempool/recently-left scope distinguish it from general transaction lookups like get_tx or get_tx_status, though it does not explicitly name those siblings.
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 explicit when-to-use or when-not-to-use guidance, and no alternative tool is named. The description explains the data scope but leaves the agent to infer when this tool is preferable to get_tx_status or other transaction tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_txTransaction informationCRead-onlyIdempotentInspect
REST operation: GET /api/tx/{txid}.
| Name | Required | Description | Default |
|---|---|---|---|
| txid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered elsewhere. The description adds only an external documentation link and the HTTP route; it says nothing about rate limits, unconfirmed/mempool transaction behavior, 404 handling for unknown txids, or response shape beyond what the output schema provides.
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?
It is short and has no filler, but it is short because it says almost nothing; the only substantive content is a link and a route restatement. Brevity here reflects under-specification rather than disciplined editing.
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?
For a one-parameter read with annotations and an output schema, the definition could be complete with one sentence of plain-language purpose, but instead it defers entirely to an external URL. An agent working offline or choosing among the many tx-prefixed siblings gets no in-band signal about what this call returns.
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 reported schema coverage is 0% at the property level, but the `$defs.Txid` node itself carries a description ('A transaction ID: its hash.'), a 64-hex pattern, and three examples, so the parameter is effectively well documented in structured data. The description contributes nothing about txid format or whether the transaction may be unconfirmed, so it neither compensates nor detracts.
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?
The description reduces purpose to the REST mapping `GET /api/tx/{txid}`, from which an agent can infer 'fetch a transaction by txid', but it never states that in words. With siblings like get_tx_status, get_tx_hex, get_tx_merkle_proof and get_tx_outspends all referring to the same resource, there is no differentiation of what this one returns (full transaction details) versus the others.
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?
No when-to-use guidance is given, and none of the closely-related tx siblings are named as alternatives or complements. The agent must infer from the name alone that this is the full-record fetch rather than a status, hex, or proof lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tx_hexTransaction hexBRead-onlyIdempotentInspect
| Name | Required | Description | Default |
|---|---|---|---|
| txid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds only the REST endpoint mapping and a documentation link, which is modest added value; it says nothing about error behavior for unknown or unconfirmed txids, which matters for a lookup keyed on a 64-hex txid.
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?
Three short lines, front-loaded with the return content before the doc link and endpoint. Nothing is padded, though the leading sentence is a fragment rather than a complete statement of action, which slightly weakens the front-loading.
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?
With an output schema present, return values need not be explained, and annotations cover the safety profile, so the core is adequate for a one-parameter lookup. What is missing is the sibling relationship to get_tx and whether unconfirmed (mempool) transactions are valid inputs, both of which bear directly on correct invocation.
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?
Schema description coverage is reported as 0%, but the single parameter is a $ref to a Txid definition that carries its own description ('A transaction ID: its hash'), a strict 64-hex pattern, and three examples. The description's URL template '{txid}' reinforces placement but adds no format or validation detail beyond the schema; the schema effectively carries the semantics, so a middle score is appropriate.
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?
The noun phrase 'Hex-encoded serialized transaction' combined with the explicit REST operation 'GET /api/tx/{txid}/hex' makes clear this fetches the raw serialized hex of a single transaction. It is distinguishable from get_tx (parsed JSON) only by inference from the word 'hex', not by any explicit comparison to a sibling.
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 statement of when to choose this over get_tx, get_tx_status, or get_tx_merkle_proof, nor any mention of prerequisites or when it is unsuitable. The agent must infer the use case purely from the phrase 'hex-encoded', which is the definition of no guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_txid_by_indexTxid by indexARead-onlyIdempotentInspect
Retrieve the transaction ID (txid) at a given global transaction index. Returns the txid as plain text.
REST operation: GET /api/tx-index/{index}.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Global transaction index across the chain |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds value by stating the return is plain text and giving the underlying REST route, though it says nothing about behavior for out-of-range or very large indexes.
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?
Two short sentences, fully front-loaded with the operation and result, then the REST mapping. No filler.
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?
With an output schema present, the description need not detail return values, and it still notes plain-text output. Slightly incomplete only in not covering failure behavior for an invalid index in a lookup tool that an agent may call with user-supplied input.
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?
Schema description coverage is 100%, with the parameter documented as 'Global transaction index across the chain' including the genesis example. The description restates that same idea ('global transaction index') without adding format, bounds, or lookup-cost detail, so baseline 3 applies.
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 a specific verb and resource: retrieve the transaction ID (txid) at a given global transaction index, plus the REST route. It does not name or contrast with siblings such as get_block_txid or get_block_txs_from_index, which is the only thing keeping it from a 5.
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?
The phrase 'global transaction index' implies the use case, and the schema note ('For an in-block position, use `BlockTxIndex` instead') clarifies the alternative. That distinction lives in the schema, however, not the description, so guidance here is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tx_merkleblock_proofTransaction merkleblock proofBRead-onlyIdempotentInspect
Get the merkleblock proof for a transaction (BIP37 format, hex encoded).
REST operation: GET /api/tx/{txid}/merkleblock-proof.
| Name | Required | Description | Default |
|---|---|---|---|
| txid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world, so safety is covered. The description adds the BIP37 serialization and hex encoding, which is useful behavioral context, but says nothing about error behavior for unconfirmed or unknown txids, or the size/shape of the returned proof.
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?
Two short paragraphs: the capability and format first, then docs link and REST route. No filler; the REST operation line is arguably redundant with the docs link but is small and useful for mapping to the API.
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?
With one required parameter and an output schema present, the description is nearly sufficient; the main missing element is the distinction from get_tx_merkle_proof, which is essential for correct tool selection among ~80 siblings.
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?
Schema coverage is reported as 0%, and the description only says 'for a transaction' without explaining the txid format. The schema itself supplies a 64-hex pattern and worked examples, so the agent can still construct the call, but the description does not compensate for the coverage gap.
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 a specific verb and resource: fetch the merkleblock proof for a transaction, with format qualifiers (BIP37, hex encoded) and the underlying REST route. It does not, however, distinguish itself from the sibling get_tx_merkle_proof, which an agent could easily confuse with this one.
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 statement of when to use this versus get_tx_merkle_proof or get_tx_hex, and no prerequisites noted (e.g. whether the transaction must be confirmed for a merkleblock to exist). The docs link hints at context but leaves selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tx_merkle_proofTransaction merkle proofCRead-onlyIdempotentInspect
REST operation: GET /api/tx/{txid}/merkle-proof.
| Name | Required | Description | Default |
|---|---|---|---|
| txid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no mention of behavior for unknown/unconfirmed txids, no error or 404 semantics, no rate-limit or upstream-availability context for an open-world external API call.
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?
Two short lines, no padding, and the docs link is front-loaded — structurally clean. But the brevity comes from under-specification rather than efficiency; nearly all the available space is spent restating the endpoint instead of adding usable information.
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 needn't be described, and the annotations cover safety. Still, for a tool with a documented parameter at 0% coverage and a confusingly similar sibling, the description is too thin to let an agent invoke it confidently without reading the external docs link.
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?
Schema description coverage is 0% per the signals, so the description is expected to compensate, and it does not. The only parameter hint is the `{txid}` placeholder in the URL template; nothing explains format constraints (64-char lowercase hex), whether unconfirmed transactions are valid input, or what happens with a malformed hash.
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?
The REST path `GET /api/tx/{txid}/merkle-proof` plus the title identify the resource as a transaction's merkle proof, so the operation is inferable. However, the description never says in prose what it returns or how it differs from the near-identical sibling `get_tx_merkleblock_proof`, leaving the agent to decode the URL to understand the tool.
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 guidance on when to use this versus `get_tx`, `get_tx_status`, or especially `get_tx_merkleblock_proof`, which sounds functionally adjacent. The only usage signal is the implicit requirement that the txid be already known, which is left unstated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tx_outspendOutput spend statusARead-onlyIdempotentInspect
Whether the output has been spent and, if so, the spending transaction details. An output no known transaction holds is unspent.
REST operation: GET /api/tx/{txid}/outspend/{vout}.
| Name | Required | Description | Default |
|---|---|---|---|
| txid | Yes | ||
| vout | Yes | Output index |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description usefully adds the semantic edge case that an output not held by any known transaction is reported as unspent. The docs link and REST operation mapping add further traceability, though nothing is said about mempool-vs-confirmed behavior or failure cases.
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?
Two tight sentences lead with the core answer, followed by the edge-case rule, doc reference, and REST endpoint mapping. No filler; every element is front-loaded and earns its place.
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?
With an output schema present and annotations covering the read-only profile, the description needn't explain return values, and it does supply the crucial 'unspent' interpretation rule. The only real gap is the absent differentiation from the plural get_tx_outspends sibling.
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?
Schema description coverage is 50%, and the $defs already document both txid (hash format) and vout (output index, with the coinbase 4294967295 note). The description adds no parameter meaning beyond that, so the baseline of 3 applies.
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 a specific verb+resource: determines whether a given transaction output has been spent and returns the spending transaction details. The singular 'outspend' implicitly differs from the sibling get_tx_outspends (plural), but the description never makes that contrast explicit.
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 guidance on when to use this tool versus the plural get_tx_outspends sibling, nor on prerequisites (e.g., needing a confirmed txid/vout). The only contextual sentence — 'An output no known transaction holds is unspent' — explains result semantics rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tx_outspendsAll output spend statusesCRead-onlyIdempotentInspect
Spend statuses in output-index order.
REST operation: GET /api/tx/{txid}/outspends.
| Name | Required | Description | Default |
|---|---|---|---|
| txid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds only the ordering guarantee (output-index order), which is a genuine but minor behavioral detail; it says nothing about cost, rate limits, or behavior for spent/unspent outputs.
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?
Very short and front-loaded: the ordering semantics come first, followed by a docs link and the REST operation. Nothing is padded, though the doc-link and REST-path lines add little for an agent that already has the schema.
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 explained, and annotations cover safety. The remaining material gap is disambiguation from get_tx_outspend and any hint about the txid input, which the description omits.
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?
Schema description coverage is 0% per the context signals, and the description never mentions the single `txid` parameter, its required status, or its format. The only parameter meaning lives in the schema's $defs (`Txid`), so the description does not compensate for the coverage gap.
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?
The phrase "Spend statuses in output-index order" plus the REST path `GET /api/tx/{txid}/outspends` implies it returns the spend status of every output of a transaction, but the verb and object are only inferable from the URL. It never states explicitly that this is the plural/all-outputs variant, so it is not cleanly distinguishable from the sibling get_tx_outspend.
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?
No when-to-use guidance at all. The most important routing decision — all outputs (this tool) vs. a single output (get_tx_outspend) — is left entirely to the agent, even though that sibling is present in the tool list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tx_rbfRBF replacement historyARead-onlyIdempotentInspect
Returns the RBF replacement tree for a transaction, if any. Both replacements and replaces are null when the tx has no known RBF history within the mempool monitor's retention window.
REST operation: GET /api/v1/tx/{txid}/rbf.
| Name | Required | Description | Default |
|---|---|---|---|
| txid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds meaningful behavioral context by explaining the retention window and that both `replacements` and `replaces` are null when no history is known.
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?
The text is short, front-loaded with the core purpose, and every sentence adds useful information: null behavior, retention scope, docs link, and REST operation.
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 the description need not document return structure, and annotations cover safety. The description handles the main edge case, but it could better distinguish this tool from the other RBF-related siblings.
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?
There is only one parameter, `txid`, and the description only implies it through the REST path. The schema definition provides the hash format, pattern, and examples, so parameter meaning is adequate overall, but the description itself adds little beyond the schema.
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?
The description gives a specific verb and resource: it returns the RBF replacement tree for a transaction. That is clear, but it does not explain how this differs from siblings such as get_fullrbf_replacements or get_replacements.
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?
Usage is implied: call this when you need the RBF history of a specific transaction. The null-result condition is useful, but there is no explicit guidance on when to use this versus the other replacement-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tx_statusTransaction statusARead-onlyIdempotentInspect
Retrieve the confirmation status of a transaction. Returns whether the transaction is confirmed and, if so, the block height, hash, and timestamp. A transaction not in the chain, pending or unknown, is {"confirmed":false}.
REST operation: GET /api/tx/{txid}/status.
| Name | Required | Description | Default |
|---|---|---|---|
| txid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: the exact response payload when confirmed, and the important fact that a pending or unknown transaction yields a normal {confirmed:false} response rather than an error — that is the detail an agent most needs to avoid misreading a negative result.
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?
Two tight body sentences lead with the action and the return shape before the edge case; the doc link and REST operation line are short and additive rather than repetitive. Slight waste in restating the endpoint after the docs link.
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?
For a one-parameter read-only lookup with an output schema and full annotations, this covers what an agent needs: what it returns, and how unconfirmed transactions appear. The only gap is error/permission behavior for a malformed or non-existent txid, which the description folds into the generic 'not in the chain' case.
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?
Schema description coverage is reported as 0% because the single property is a $ref, and the description says nothing about txid at all. In practice the $defs entry supplies a description, a 64-hex pattern, and three examples, so the parameter is still documented — but the credit belongs to the schema, not the description.
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?
The description states a specific verb and resource ('Retrieve the confirmation status of a transaction') and enumerates exactly what is returned (confirmed flag, block height, hash, timestamp), which implicitly separates it from get_tx / get_tx_hex / get_tx_merkle_proof. It never names a sibling tool explicitly, so an agent must infer the boundary rather than read it.
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 guidance and no mention of alternatives in a sibling list that contains at least four other transaction-level tools (get_tx, get_tx_hex, get_tx_merkle_proof, get_transaction_times). The 'pending or unknown returns {confirmed:false}' line describes output behavior, not selection criteria, so the agent is left to infer routing on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_urpdURPD at block height or dateARead-onlyIdempotentInspect
URPD for a cohort at a block height or the last block of a UTC day. Returns { height, hash, date, cohort, weight, aggregation, close, supply, buckets } where buckets is columns, { price, supply, realized_cap, unrealized_pnl }, one entry per bucket in ascending price: the same block header and columnar layout as GET /api/utxo-set/{point}. close, price, realized_cap, and unrealized_pnl are USD; supply is BTC. unrealized_pnl can be negative. Bucket realized_cap and unrealized_pnl value each coin at its creation price on the price grid (four significant digits of the price in cents, within 0.05% of the exact price), rounded to the cent per bucket, so the buckets need not sum to the realized cap series. With a wakefulness or mobility weight, supply is the weighted supply (whole satoshis) and the bucket values follow it.
REST operation: GET /api/urpd/{cohort}/{point}.
| Name | Required | Description | Default |
|---|---|---|---|
| agg | No | Aggregation strategy. Default: raw (no aggregation). | raw |
| point | Yes | Confirmed block height (`840000`) or UTC calendar day (`YYYY-MM-DD`) | |
| cohort | Yes | ||
| weight | No | Supply weighting. Default: none (unweighted). | none |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's added context is what counts: units per field, the fact that `unrealized_pnl` may be negative, the price-grid valuation basis with its tolerance, and the caveat that buckets need not sum to the realized cap series. Those are non-obvious behaviors an agent could not infer from the annotations.
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?
Front-loaded with purpose and point-selection, which is good, but a large share of the body restates the return payload field-by-field even though an output schema exists. The information is useful but not maximally economical.
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?
For a four-parameter read tool with an output schema and full annotations, the description supplies the semantics an agent needs: point resolution, aggregation effect, weighting effect, units, and the non-summing bucket caveat. Only the relationship to sibling tools is missing.
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?
Schema coverage is 75%, so the baseline is already near 3, and the description adds real meaning beyond the schema: it explains the consequence of `weight` on the output (`supply` becomes weighted whole satoshis and bucket values follow) and pins the price-grid basis for `realized_cap`/`unrealized_pnl`. It does not explain `agg` beyond what the enum description already says.
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 a specific resource (URPD), a specific scope (a cohort at a block height or the last block of a UTC day), and names the REST route. An agent can tell it fetches a historical URPD snapshot rather than the current one, though it never names `get_urpd_latest` as the sibling it differs from.
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?
Usage is implied by the point-selection rule (a height or a UTC day resolves to that day's last block), which is genuinely useful selection logic. But there is no explicit when-to-use guidance, no mention of `get_urpd_latest` or `list_urpd_cohorts` as alternatives, and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_urpd_latestLatest URPDARead-onlyIdempotentInspect
URPD for the latest published block; date echoes the date served. Fields, units, price-grid rounding and weighting as in GET /api/urpd/{cohort}/{point}.
REST operation: GET /api/urpd/{cohort}.
| Name | Required | Description | Default |
|---|---|---|---|
| agg | No | Aggregation strategy. Default: raw (no aggregation). | raw |
| cohort | Yes | ||
| weight | No | Supply weighting. Default: none (unweighted). | none |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low, and the description adds real behavioral context: results are pinned to 'the latest published block' and the response echoes back the date actually served, which matters for a time-series tool. It still doesn't say whether it fails when no block is published or how staleness is signalled.
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?
Two compact sentences: the primary statement leads, then the REST mapping. No filler. The dense jargon ('URPD', 'price-grid rounding') assumes vocabulary the description never defines, which is a minor readability cost.
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 no explanation, and the description covers scope (latest block) plus the date echo. Its key deficiency is deferring field/unit semantics to a different endpoint's documentation, which an agent may not have loaded — the completeness depends on that cross-reference being resolvable.
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?
Schema coverage is 67% but the enum $defs for cohort, weight and agg are extensively documented, and the description points to `GET /api/urpd/{cohort}/{point}` as the reference for units, price-grid rounding and weighting semantics — which ties directly to the `agg`/`weight` params. It adds a pointer rather than full parameter meaning, so it's above baseline but not self-sufficient.
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 (URPD) and the scope qualifier (latest published block), and the REST mapping `GET /api/urpd/{cohort}` makes the underlying operation unambiguous. It implicitly distinguishes itself from the sibling `get_urpd` (historical) via 'latest', but never names that sibling explicitly.
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?
Usage is only implied: the word 'latest' tells an agent this is the no-date variant, but the description never says 'use this instead of get_urpd when you want the most recent snapshot', nor does it state prerequisites or when not to use it. An agent must infer the routing decision from a single adjective.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_utxo_set_diffUTXO set changes of a block or dateARead-onlyIdempotentInspect
What a block (840000) or a UTC day's published blocks (YYYY-MM-DD) changed in the UTXO set. Returns { first, last, hash, date, created, spent }: created has one row per block, spent one row per creation height, each as columnar height, count and supply (BTC). The set after block first - 1 plus created minus spent is the set after block last.
REST operation: GET /api/utxo-set/{point}/diff.
| Name | Required | Description | Default |
|---|---|---|---|
| point | Yes | Confirmed block height (`840000`) or UTC calendar day (`YYYY-MM-DD`) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive safety profile, so the bar is lower. The description adds real value beyond that: the columnar shape of `created`/`spent`, the BTC unit of `supply`, and the set-reconciliation identity (set after first-1 + created - spent = set after last) which tells the agent exactly what the numbers mean.
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?
Front-loaded with the scope sentence, then return shape, then the reconciliation rule — each sentence carries information. It is dense but not padded; the only minor cost is that the reconciliation sentence takes a moment to parse.
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 the description needn't enumerate return fields, and it still adds the key semantic rule for interpreting them. With one fully documented parameter and annotations covering safety, the only real gap is sibling disambiguation.
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?
Schema description coverage is 100%, so the HeightOrDate anyOf, the YYYY-MM-DD pattern and the examples are already fully documented. The description restates the accepted formats but adds no syntax or constraint detail beyond the schema, so baseline 3 applies.
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 a specific verb and resource: what a block height or UTC day 'changed in the UTXO set', and gives concrete input examples (840000, YYYY-MM-DD). It doesn't distinguish itself from nearby siblings like get_urpd or get_tx_outspends, so it stops 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two supported query modes (single block vs whole UTC day) are implied clearly, which is useful context. But there is no explicit when-to-use guidance, no exclusions, and no routing to alternatives such as get_urpd or get_tx_outspends for related UTXO questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_indexesList available indexesBRead-onlyIdempotentInspect
Returns every index a series can be read at, by the name series routes take.
REST operation: GET /api/series/indexes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and open-world behavior. The description adds no further behavioral context such as rate limits, auth requirements, or what the returned names represent beyond the schema.
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?
Two sentences, front-loaded with the purpose, and no wasted words. The phrasing 'by the name series routes take' is slightly convoluted but still compact.
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?
Given the simple zero-parameter tool, rich annotations, and presence of an output schema, the description is nearly complete. The only minor gap is that 'index' is not further defined, but the output schema likely handles that.
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?
There are zero parameters, so the schema imposes no semantic burden. The description does not need to explain any parameters and appropriately focuses on the tool's result.
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?
The description states the tool returns 'every index a series can be read at' and clarifies it uses the name series routes take. This is a specific verb+resource and distinguishes it from series listing tools like list_series, though the term 'index' remains somewhat domain-specific.
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?
No guidance is given about when to use this tool versus alternatives such as list_series or search_series. The description merely states what it returns, leaving the agent to infer its role from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_seriesSeries listBRead-onlyIdempotentInspect
Paginated flat list of all available series names.
REST operation: GET /api/series/list.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based page number (default: 0) | |
| per_page | No | Results per page, 1 to 1,000 (default: 1000) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds that the list is unfiltered/flat (implying a full enumeration) and pins the REST endpoint, but says nothing about response size risk despite a default per_page of 1000, or ordering of results.
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?
Two short sentences with the core statement front-loaded and no filler. The REST endpoint line is compact and useful for callers mapping to the underlying API.
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 explained, and annotations cover safety. Still missing is any clarification of how this differs from the many get_series*/search_series siblings and any warning that the default page size of 1,000 can produce a very large payload.
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?
Schema description coverage is 100%, with both page and per_page fully documented including defaults, ranges, and examples. The description only repeats 'paginated' and adds no semantics beyond the schema, so the baseline 3 is appropriate.
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 a specific verb and resource: a paginated flat list of all available series names. The word 'flat' and 'names' signal that this returns identifiers only, not data points, which distinguishes it somewhat from get_series. However, it never explicitly names the closely-related siblings (get_series, get_series_info, search_series) it differs from.
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?
No when-to-use guidance is given. With siblings like search_series, get_series, get_series_info, get_series_bulk, and get_series_latest available, the agent must infer from the name alone that this is for enumerating the full series catalogue rather than searching or fetching values. No exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_urpd_cohortsAvailable URPD cohortsARead-onlyIdempotentInspect
Every URPD cohort once a UTXO set is published (none before): the age aggregates (all, sth, lth, age_under_4m, ...), then the age bands from the youngest (age_under_1h, age_1h_to_1d, ...).
REST operation: GET /api/urpd.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile, so the description correctly spends its budget on non-obvious behavior: an empty result before a UTXO set is published, plus the ordering of the returned cohorts. That is a genuine edge case an agent would otherwise not anticipate.
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?
Two short sentences plus the REST endpoint line, front-loaded with the key fact and free of filler. The telegraphic phrasing ('Every URPD cohort once a UTXO set is published') is slightly elliptical but costs no length.
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?
With an output schema present, the description need not document return values, and annotations cover safety. What remains is the missing explicit link to get_urpd as the consumer of these cohort labels, which would make the discovery-tool role fully unambiguous.
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?
Zero parameters, so the schema baseline is 4. The description goes slightly beyond by enumerating example cohort labels (`all`, `sth`, `lth`, `age_under_1h`, ...), which helps the agent recognize the shape of values it will get back.
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?
The description names the resource unambiguously (URPD cohorts) and conveys that the tool enumerates the available cohort labels, including the ordering scheme (age aggregates first, then age bands youngest-first). It does not use an explicit verb like 'list', but the enumeration intent is clear and it reads differently from the data-returning siblings get_urpd / get_urpd_latest.
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?
Usage is only implied: an agent must infer that this is the discovery step to find valid cohort identifiers before calling get_urpd. The parenthetical '(none before)' hints at a precondition (no data until a UTXO set is published), but no sibling is named and there is no explicit when-to-use/when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_seriesSearch seriesARead-onlyIdempotentInspect
Search series by name or descriptive terms. Results prioritize whole query words in names, then descriptions, then fuzzy names, then fuzzy descriptions. Word order does not matter. Descriptions provide cohort terminology and formulas. The decoded q parameter is limited to 1024 UTF-8 bytes.
REST operation: GET /api/series/search.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Words to find in series names and descriptions (`realized price`, `mvrv`), in any order | |
| limit | No | Maximum number of results, 1 to 1,000 (default: 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds useful behavioral detail beyond annotations: result ranking order, word-order insensitivity, and the 1024-byte decoded q constraint. Return-value behavior is covered by the output schema.
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?
The description is compact and front-loaded: purpose first, then ranking behavior, then a key constraint. Every sentence contributes relevant information for selecting or invoking the tool.
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?
With rich annotations, 100% schema description coverage, and an output schema, the description supplies enough context to invoke the tool correctly. Its main remaining gap is not explicitly routing between this search tool and sibling series-list/get tools.
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?
Schema coverage is 100%, so the schema already defines both parameters well. The description adds meaningful parameter context by stating that word order does not matter and that the decoded q parameter is limited to 1024 UTF-8 bytes, which is not captured in the schema.
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?
The description states a specific verb and resource: search series by name or descriptive terms. It also explains ranking behavior, making the operation clear. It does not explicitly differentiate itself from the sibling list_series tool, which keeps it from a 5.
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?
Usage is implied by 'search series by name or descriptive terms,' but the description does not state when to use this instead of list_series or get_series. No alternatives or exclusions are named, leaving the agent to infer the selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_addressValidate addressARead-onlyIdempotentInspect
Validate a Bitcoin address and get information about its type and scriptPubKey. Returns isvalid: false with an error message for invalid addresses; a string that isn't 2 to 130 letters and digits answers 400.
REST operation: GET /api/v1/validate-address/{address}.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Bitcoin address to validate: 2 to 130 letters and digits (a P2PK public key in hex is 130); anything else answers 400, as mempool.space does |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new behavior beyond them: invalid addresses return isvalid:false with an error message, and malformed input (not 2-130 alphanumerics) yields HTTP 400. That is exactly the failure-mode detail an agent needs before calling.
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?
Front-loaded with the action and the two behavioral outcomes, with the docs link and REST path trailing as reference. Slight redundancy: the 2-130 alphanumeric rule restates the schema description verbatim, costing a clause.
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?
For a one-parameter read-only check with full annotation coverage and an output schema, everything needed is present: what it does, what an invalid result looks like, and how bad input is handled. Return-value shape is correctly left to the output schema.
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?
Schema coverage is 100% and the single parameter already documents the 2-130 length rule with four examples, so the description adds no syntax or format detail beyond it. Baseline 3 applies when the schema does the work.
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 a specific verb and resource ("Validate a Bitcoin address") and adds concrete scope: returns type and scriptPubKey. That distinguishes it in kind from the get_address* siblings, which fetch data for an address rather than checking validity, though no sibling is named explicitly.
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?
Usage is only implied: an agent can infer this is the cheap pre-check to run before get_address or get_address_utxos, but the description never says so or sets conditions. No exclusions or explicit alternative are given.
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.
87 tool updates
- Changed
get_address17 fields changed- removed
Input schema / $defs / AddrRemoved value: -{ - "description": "Bitcoin address string", - "examples": [ - "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", - "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", - "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" - ], - "type": "string" -} - added
Input schema / $defs / AddressAdded value: +{ + "description": "Bitcoin address, or the hex public key of a P2PK output.", + "examples": [ + "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", + "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", + "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" + ], + "type": "string" +} - changed
Input schema / properties / address / $refPrevious value: -"#/$defs/Addr"New value: +"#/$defs/Address" - removed
Output schema / $defs / AddrRemoved value: -{ - "type": "string" -} - removed
Output schema / $defs / AddrChainStatsRemoved value: -{ - "properties": { - "balance": { - "allOf": [ - { - "$ref": "#/$defs/Sats" - } - ] - }, - "funded_txo_count": { - "format": "uint32", - "minimum": 0, - "type": "integer" - }, - "funded_txo_sum": { - "allOf": [ - { - "$ref": "#/$defs/Sats" - } - ] - }, - "realized_price": { - "allOf": [ - { - "$ref": "#/$defs/Dollars" - } - ] - }, - "spent_txo_count": { - "format": "uint32", - "minimum": 0, - "type": "integer" - }, - "spent_txo_sum": { - "allOf": [ - { - "$ref": "#/$defs/Sats" - } - ] - }, - "tx_count": { - "format": "uint32", - "minimum": 0, - "type": "integer" - }, - "type_index": { - "allOf": [ - { - "$ref": "#/$defs/TypeIndex" - } - ] - } - }, - "required": [ - "balance", - "funded_txo_count", - "funded_txo_sum", - "spent_txo_count", - "spent_txo_sum", - "tx_count", - "type_index", - "realized_price" - ], - "type": "object" -} - removed
Output schema / $defs / AddrMempoolStatsRemoved value: -{ - "properties": { - "balance_delta": { - "allOf": [ - { - "$ref": "#/$defs/SatsSigned" - } - ] - }, - "funded_txo_count": { - "format": "uint32", - "minimum": 0, - "type": "integer" - }, - "funded_txo_sum": { - "allOf": [ - { - "$ref": "#/$defs/Sats" - } - ] - }, - "spent_txo_count": { - "format": "uint32", - "minimum": 0, - "type": "integer" - }, - "spent_txo_sum": { - "allOf": [ - { - "$ref": "#/$defs/Sats" - } - ] - }, - "tx_count": { - "format": "uint32", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "balance_delta", - "funded_txo_count", - "funded_txo_sum", - "spent_txo_count", - "spent_txo_sum", - "tx_count" - ], - "type": "object" -} - removed
Output schema / $defs / AddrStatsRemoved value: -{ - "properties": { - "addr_type": { - "allOf": [ - { - "$ref": "#/$defs/OutputType" - } - ] - }, - "address": { - "allOf": [ - { - "$ref": "#/$defs/Addr" - } - ] - }, - "balance": { - "allOf": [ - { - "$ref": "#/$defs/Sats" - } - ] - }, - "chain_stats": { - "allOf": [ - { - "$ref": "#/$defs/AddrChainStats" - } - ] - }, - "mempool_stats": { - "allOf": [ - { - "$ref": "#/$defs/AddrMempoolStats" - } - ] - } - }, - "required": [ - "address", - "addr_type", - "chain_stats", - "mempool_stats", - "balance" - ], - "type": "object" -} - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - added
Output schema / $defs / AddressChainStatsAdded value: +{ + "properties": { + "balance": { + "allOf": [ + { + "$ref": "#/$defs/Sats" + } + ] + }, + "funded_txo_count": { + "minimum": 0, + "type": "integer" + }, + "funded_txo_sum": { + "allOf": [ + { + "$ref": "#/$defs/Sats" + } + ] + }, + "realized_price": { + "allOf": [ + { + "$ref": "#/$defs/Dollars" + } + ] + }, + "spent_txo_count": { + "minimum": 0, + "type": "integer" + }, + "spent_txo_sum": { + "allOf": [ + { + "$ref": "#/$defs/Sats" + } + ] + }, + "tx_count": { + "minimum": 0, + "type": "integer" + }, + "type_index": { + "anyOf": [ + { + "$ref": "#/$defs/TypeIndex" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "balance", + "funded_txo_count", + "funded_txo_sum", + "spent_txo_count", + "spent_txo_sum", + "tx_count", + "realized_price" + ], + "type": "object" +} - added
Output schema / $defs / AddressMempoolStatsAdded value: +{ + "properties": { + "balance_delta": { + "allOf": [ + { + "$ref": "#/$defs/SatsSigned" + } + ] + }, + "funded_txo_count": { + "minimum": 0, + "type": "integer" + }, + "funded_txo_sum": { + "allOf": [ + { + "$ref": "#/$defs/Sats" + } + ] + }, + "spent_txo_count": { + "minimum": 0, + "type": "integer" + }, + "spent_txo_sum": { + "allOf": [ + { + "$ref": "#/$defs/Sats" + } + ] + }, + "tx_count": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "balance_delta", + "funded_txo_count", + "funded_txo_sum", + "spent_txo_count", + "spent_txo_sum", + "tx_count" + ], + "type": "object" +} - added
Output schema / $defs / AddressStatsAdded value: +{ + "properties": { + "address": { + "allOf": [ + { + "$ref": "#/$defs/Address" + } + ] + }, + "address_type": { + "allOf": [ + { + "$ref": "#/$defs/OutputType" + } + ] + }, + "balance": { + "allOf": [ + { + "$ref": "#/$defs/Sats" + } + ] + }, + "chain_stats": { + "allOf": [ + { + "$ref": "#/$defs/AddressChainStats" + } + ] + }, + "mempool_stats": { + "allOf": [ + { + "$ref": "#/$defs/AddressMempoolStats" + } + ] + } + }, + "required": [ + "address", + "address_type", + "chain_stats", + "mempool_stats", + "balance" + ], + "type": "object" +} - removed
Output schema / $defs / Dollars / formatRemoved value: -"double" - changed
Output schema / $defs / OutputType / enumPrevious value: -[ - "p2pk65", - "p2pk33", - "p2pkh", - "p2ms", - "p2sh", - "opreturn", - "p2wpkh", - "p2wsh", - "p2tr", - "p2a", - "empty", - "unknown" -]New value: +[ + "p2pk65", + "p2pk33", + "p2pkh", + "p2ms", + "p2sh", + "op_return", + "p2wpkh", + "p2wsh", + "p2tr", + "p2a", + "empty_script", + "unknown_script" +] - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / SatsSigned / formatRemoved value: -"int64" - removed
Output schema / $defs / TypeIndex / formatRemoved value: -"uint32" - changed
Output schema / $refPrevious value: -"#/$defs/AddrStats"New value: +"#/$defs/AddressStats"
- Changed
get_address_confirmed_txs33 fields changed- removed
Input schema / $defs / AddrRemoved value: -{ - "description": "Bitcoin address string", - "examples": [ - "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", - "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", - "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" - ], - "type": "string" -} - added
Input schema / $defs / AddressAdded value: +{ + "description": "Bitcoin address, or the hex public key of a P2PK output.", + "examples": [ + "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", + "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", + "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" + ], + "type": "string" +} - changed
Input schema / properties / address / $refPrevious value: -"#/$defs/Addr"New value: +"#/$defs/Address" - added
Input schema / properties / max_txsAdded value: +{ + "description": "Transactions to return, at most 25 (the default); larger values return 25.", + "minimum": 0, + "type": "integer" +} - removed
Output schema / $defs / AddrRemoved value: -{ - "type": "string" -} - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / HexAdded value: +{ + "pattern": "^([0-9a-f]{2})*$", + "type": "string" +} - removed
Output schema / $defs / RawLockTime / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / SigOps / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Transaction / properties / size / formatRemoved value: -"uint" - added
Output schema / $defs / Transaction / properties / status / $refAdded value: +"#/$defs/TxStatus" - removed
Output schema / $defs / Transaction / properties / status / allOfRemoved value: -[ - { - "$ref": "#/$defs/TxStatus" - } -] - added
Output schema / $defs / TxIn / properties / scriptsig / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxIn / properties / scriptsig / typeRemoved value: -"string" - removed
Output schema / $defs / TxIn / properties / sequence / formatRemoved value: -"uint32" - removed
Output schema / $defs / TxIn / properties / witness / allOfRemoved value: -[ - { - "$ref": "#/$defs/Witness" - } -] - added
Output schema / $defs / TxIn / properties / witness / itemsAdded value: +{ + "$ref": "#/$defs/Hex" +} - added
Output schema / $defs / TxIn / properties / witness / typeAdded value: +"array" - removed
Output schema / $defs / TxIndex / formatRemoved value: -"uint32" - added
Output schema / $defs / TxOut / properties / scriptpubkey / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxOut / properties / scriptpubkey / typeRemoved value: -"string" - changed
Output schema / $defs / TxOut / properties / scriptpubkey_address / allOfPrevious value: -[ - { - "$ref": "#/$defs/Addr" - } -]New value: +[ + { + "$ref": "#/$defs/Address" + } +] - removed
Output schema / $defs / TxVersionRaw / formatRemoved value: -"int32" - added
Output schema / $defs / TxVersionRaw / minimumAdded value: +0 - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Vout / formatRemoved value: -"uint16" - removed
Output schema / $defs / Vout / maximumRemoved value: -65535 - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32" - removed
Output schema / $defs / WitnessRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -}
- Changed
get_address_confirmed_txs_after35 fields changed- removed
Input schema / $defs / AddrRemoved value: -{ - "description": "Bitcoin address string", - "examples": [ - "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", - "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", - "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" - ], - "type": "string" -} - added
Input schema / $defs / AddressAdded value: +{ + "description": "Bitcoin address, or the hex public key of a P2PK output.", + "examples": [ + "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", + "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", + "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" + ], + "type": "string" +} - changed
Input schema / $defs / Txid / descriptionPrevious value: -"Transaction ID (hash)"New value: +"A transaction ID: its hash." - added
Input schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - changed
Input schema / properties / address / $refPrevious value: -"#/$defs/Addr"New value: +"#/$defs/Address" - added
Input schema / properties / max_txsAdded value: +{ + "description": "Transactions to return, at most 25 (the default); larger values return 25.", + "minimum": 0, + "type": "integer" +} - removed
Output schema / $defs / AddrRemoved value: -{ - "type": "string" -} - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / HexAdded value: +{ + "pattern": "^([0-9a-f]{2})*$", + "type": "string" +} - removed
Output schema / $defs / RawLockTime / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / SigOps / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Transaction / properties / size / formatRemoved value: -"uint" - added
Output schema / $defs / Transaction / properties / status / $refAdded value: +"#/$defs/TxStatus" - removed
Output schema / $defs / Transaction / properties / status / allOfRemoved value: -[ - { - "$ref": "#/$defs/TxStatus" - } -] - added
Output schema / $defs / TxIn / properties / scriptsig / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxIn / properties / scriptsig / typeRemoved value: -"string" - removed
Output schema / $defs / TxIn / properties / sequence / formatRemoved value: -"uint32" - removed
Output schema / $defs / TxIn / properties / witness / allOfRemoved value: -[ - { - "$ref": "#/$defs/Witness" - } -] - added
Output schema / $defs / TxIn / properties / witness / itemsAdded value: +{ + "$ref": "#/$defs/Hex" +} - added
Output schema / $defs / TxIn / properties / witness / typeAdded value: +"array" - removed
Output schema / $defs / TxIndex / formatRemoved value: -"uint32" - added
Output schema / $defs / TxOut / properties / scriptpubkey / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxOut / properties / scriptpubkey / typeRemoved value: -"string" - changed
Output schema / $defs / TxOut / properties / scriptpubkey_address / allOfPrevious value: -[ - { - "$ref": "#/$defs/Addr" - } -]New value: +[ + { + "$ref": "#/$defs/Address" + } +] - removed
Output schema / $defs / TxVersionRaw / formatRemoved value: -"int32" - added
Output schema / $defs / TxVersionRaw / minimumAdded value: +0 - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Vout / formatRemoved value: -"uint16" - removed
Output schema / $defs / Vout / maximumRemoved value: -65535 - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32" - removed
Output schema / $defs / WitnessRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -}
- Changed
get_address_hash_prefix_matches13 fields changed- added
Input schema / $defs / AddressOutputTypeAdded value: +{ + "description": "The output type of an address: any output type but `p2ms`, `op_return`, `empty_script` and `unknown_script`.", + "enum": [ + "p2pk65", + "p2pk33", + "p2pkh", + "p2sh", + "p2wpkh", + "p2wsh", + "p2tr", + "p2a" + ], + "type": "string" +} - removed
Input schema / $defs / OutputTypeRemoved value: -{ - "description": "Type (P2PKH, P2WPKH, P2SH, P2TR, etc.)", - "enum": [ - "p2pk65", - "p2pk33", - "p2pkh", - "p2ms", - "p2sh", - "opreturn", - "p2wpkh", - "p2wsh", - "p2tr", - "p2a", - "empty", - "unknown" - ], - "type": "string" -} - removed
Input schema / properties / addr_typeRemoved value: -{ - "$ref": "#/$defs/OutputType" -} - added
Input schema / properties / address_typeAdded value: +{ + "$ref": "#/$defs/AddressOutputType" +} - added
Input schema / properties / prefix / patternAdded value: +"^[0-9a-f]{1,16}$" - changed
Input schema / requiredPrevious value: -[ - "addr_type", - "prefix" -]New value: +[ + "address_type", + "prefix" +] - removed
Output schema / $defs / AddrRemoved value: -{ - "type": "string" -} - removed
Output schema / $defs / AddrHashPrefixMatchesRemoved value: -{ - "properties": { - "addr_type": { - "$ref": "#/$defs/OutputType" - }, - "addresses": { - "items": { - "$ref": "#/$defs/Addr" - }, - "type": "array" - }, - "prefix": { - "type": "string" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "addr_type", - "prefix", - "truncated", - "addresses" - ], - "type": "object" -} - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - added
Output schema / $defs / AddressHashPrefixMatchesAdded value: +{ + "properties": { + "address_type": { + "$ref": "#/$defs/AddressOutputType" + }, + "addresses": { + "items": { + "$ref": "#/$defs/Address" + }, + "type": "array" + }, + "prefix": { + "pattern": "^[0-9a-f]{1,16}$", + "type": "string" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "address_type", + "prefix", + "truncated", + "addresses" + ], + "type": "object" +} - added
Output schema / $defs / AddressOutputTypeAdded value: +{ + "enum": [ + "p2pk65", + "p2pk33", + "p2pkh", + "p2sh", + "p2wpkh", + "p2wsh", + "p2tr", + "p2a" + ], + "type": "string" +} - removed
Output schema / $defs / OutputTypeRemoved value: -{ - "enum": [ - "p2pk65", - "p2pk33", - "p2pkh", - "p2ms", - "p2sh", - "opreturn", - "p2wpkh", - "p2wsh", - "p2tr", - "p2a", - "empty", - "unknown" - ], - "type": "string" -} - changed
Output schema / $refPrevious value: -"#/$defs/AddrHashPrefixMatches"New value: +"#/$defs/AddressHashPrefixMatches"
- Changed
get_address_mempool_txs33 fields changed- removed
Input schema / $defs / AddrRemoved value: -{ - "description": "Bitcoin address string", - "examples": [ - "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", - "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", - "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" - ], - "type": "string" -} - added
Input schema / $defs / AddressAdded value: +{ + "description": "Bitcoin address, or the hex public key of a P2PK output.", + "examples": [ + "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", + "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", + "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" + ], + "type": "string" +} - changed
Input schema / properties / address / $refPrevious value: -"#/$defs/Addr"New value: +"#/$defs/Address" - added
Input schema / properties / max_txsAdded value: +{ + "description": "Transactions to return, at most 50 (the default); larger values return 50.", + "minimum": 0, + "type": "integer" +} - removed
Output schema / $defs / AddrRemoved value: -{ - "type": "string" -} - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / HexAdded value: +{ + "pattern": "^([0-9a-f]{2})*$", + "type": "string" +} - removed
Output schema / $defs / RawLockTime / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / SigOps / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Transaction / properties / size / formatRemoved value: -"uint" - added
Output schema / $defs / Transaction / properties / status / $refAdded value: +"#/$defs/TxStatus" - removed
Output schema / $defs / Transaction / properties / status / allOfRemoved value: -[ - { - "$ref": "#/$defs/TxStatus" - } -] - added
Output schema / $defs / TxIn / properties / scriptsig / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxIn / properties / scriptsig / typeRemoved value: -"string" - removed
Output schema / $defs / TxIn / properties / sequence / formatRemoved value: -"uint32" - removed
Output schema / $defs / TxIn / properties / witness / allOfRemoved value: -[ - { - "$ref": "#/$defs/Witness" - } -] - added
Output schema / $defs / TxIn / properties / witness / itemsAdded value: +{ + "$ref": "#/$defs/Hex" +} - added
Output schema / $defs / TxIn / properties / witness / typeAdded value: +"array" - removed
Output schema / $defs / TxIndex / formatRemoved value: -"uint32" - added
Output schema / $defs / TxOut / properties / scriptpubkey / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxOut / properties / scriptpubkey / typeRemoved value: -"string" - changed
Output schema / $defs / TxOut / properties / scriptpubkey_address / allOfPrevious value: -[ - { - "$ref": "#/$defs/Addr" - } -]New value: +[ + { + "$ref": "#/$defs/Address" + } +] - removed
Output schema / $defs / TxVersionRaw / formatRemoved value: -"int32" - added
Output schema / $defs / TxVersionRaw / minimumAdded value: +0 - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Vout / formatRemoved value: -"uint16" - removed
Output schema / $defs / Vout / maximumRemoved value: -65535 - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32" - removed
Output schema / $defs / WitnessRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -}
- Changed
get_address_txs35 fields changed- removed
Input schema / $defs / AddrRemoved value: -{ - "description": "Bitcoin address string", - "examples": [ - "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", - "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", - "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" - ], - "type": "string" -} - added
Input schema / $defs / AddressAdded value: +{ + "description": "Bitcoin address, or the hex public key of a P2PK output.", + "examples": [ + "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", + "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", + "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" + ], + "type": "string" +} - added
Input schema / $defs / TxidAdded value: +{ + "description": "A transaction ID: its hash.", + "examples": [ + "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b", + "2bb85f4b004be6da54f766c17c1e855187327112c231ef2ff35ebad0ea67c69e", + "9a0b3b8305bb30cacf9e8443a90d53a76379fb3305047fdeaa4e4b0934a2a1ba" + ], + "pattern": "^[0-9a-f]{64}$", + "type": "string" +} - changed
Input schema / properties / address / $refPrevious value: -"#/$defs/Addr"New value: +"#/$defs/Address" - added
Input schema / properties / after_txidAdded value: +{ + "$ref": "#/$defs/Txid", + "description": "Continue after this transaction, a mempool or a confirmed one: the older ones (a confirmed\ncursor skips the mempool). One that is neither answers 422." +} - added
Input schema / properties / max_txsAdded value: +{ + "description": "Transactions to return, at most 50 (the default); larger values return 50.", + "minimum": 0, + "type": "integer" +} - removed
Output schema / $defs / AddrRemoved value: -{ - "type": "string" -} - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / HexAdded value: +{ + "pattern": "^([0-9a-f]{2})*$", + "type": "string" +} - removed
Output schema / $defs / RawLockTime / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / SigOps / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Transaction / properties / size / formatRemoved value: -"uint" - added
Output schema / $defs / Transaction / properties / status / $refAdded value: +"#/$defs/TxStatus" - removed
Output schema / $defs / Transaction / properties / status / allOfRemoved value: -[ - { - "$ref": "#/$defs/TxStatus" - } -] - added
Output schema / $defs / TxIn / properties / scriptsig / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxIn / properties / scriptsig / typeRemoved value: -"string" - removed
Output schema / $defs / TxIn / properties / sequence / formatRemoved value: -"uint32" - removed
Output schema / $defs / TxIn / properties / witness / allOfRemoved value: -[ - { - "$ref": "#/$defs/Witness" - } -] - added
Output schema / $defs / TxIn / properties / witness / itemsAdded value: +{ + "$ref": "#/$defs/Hex" +} - added
Output schema / $defs / TxIn / properties / witness / typeAdded value: +"array" - removed
Output schema / $defs / TxIndex / formatRemoved value: -"uint32" - added
Output schema / $defs / TxOut / properties / scriptpubkey / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxOut / properties / scriptpubkey / typeRemoved value: -"string" - changed
Output schema / $defs / TxOut / properties / scriptpubkey_address / allOfPrevious value: -[ - { - "$ref": "#/$defs/Addr" - } -]New value: +[ + { + "$ref": "#/$defs/Address" + } +] - removed
Output schema / $defs / TxVersionRaw / formatRemoved value: -"int32" - added
Output schema / $defs / TxVersionRaw / minimumAdded value: +0 - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Vout / formatRemoved value: -"uint16" - removed
Output schema / $defs / Vout / maximumRemoved value: -65535 - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32" - removed
Output schema / $defs / WitnessRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -}
- Changed
get_address_utxos16 fields changed- removed
Input schema / $defs / AddrRemoved value: -{ - "description": "Bitcoin address string", - "examples": [ - "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", - "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", - "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" - ], - "type": "string" -} - added
Input schema / $defs / AddressAdded value: +{ + "description": "Bitcoin address, or the hex public key of a P2PK output.", + "examples": [ + "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", + "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", + "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" + ], + "type": "string" +} - changed
Input schema / properties / address / $refPrevious value: -"#/$defs/Addr"New value: +"#/$defs/Address" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - added
Output schema / $defs / Utxo / properties / status / $refAdded value: +"#/$defs/TxStatus" - removed
Output schema / $defs / Utxo / properties / status / allOfRemoved value: -[ - { - "$ref": "#/$defs/TxStatus" - } -] - added
Output schema / $defs / Utxo / properties / txid / $refAdded value: +"#/$defs/Txid" - removed
Output schema / $defs / Utxo / properties / txid / allOfRemoved value: -[ - { - "$ref": "#/$defs/Txid" - } -] - added
Output schema / $defs / Utxo / properties / vout / $refAdded value: +"#/$defs/Vout" - removed
Output schema / $defs / Utxo / properties / vout / allOfRemoved value: -[ - { - "$ref": "#/$defs/Vout" - } -] - removed
Output schema / $defs / Vout / formatRemoved value: -"uint16" - removed
Output schema / $defs / Vout / maximumRemoved value: -65535
- Changed
get_block19 fields changed- added
Input schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / BlockInfo / properties / bits / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfo / properties / difficulty / formatRemoved value: -"double" - added
Output schema / $defs / BlockInfo / properties / height / $refAdded value: +"#/$defs/Height" - removed
Output schema / $defs / BlockInfo / properties / height / allOfRemoved value: -[ - { - "$ref": "#/$defs/Height" - } -] - added
Output schema / $defs / BlockInfo / properties / merkle_root / $refAdded value: +"#/$defs/MerkleNode" - removed
Output schema / $defs / BlockInfo / properties / merkle_root / typeRemoved value: -"string" - removed
Output schema / $defs / BlockInfo / properties / nonce / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfo / properties / previousblockhash / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockHash" - } -] - added
Output schema / $defs / BlockInfo / properties / previousblockhash / anyOfAdded value: +[ + { + "$ref": "#/$defs/BlockHash" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockInfo / properties / size / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockInfo / properties / tx_count / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfo / properties / version / formatRemoved value: -"uint32" - changed
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" +] - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / MerkleNodeAdded value: +{ + "pattern": "^[0-9a-f]{64}$", + "type": "string" +} - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32"
- Removed
get_block_by_height - Changed
get_block_by_timestamp9 fields changed- changed
Input schema / $defs / Timestamp / descriptionPrevious value: -"UNIX timestamp in seconds"New value: +"A Unix timestamp, in seconds." - removed
Input schema / $defs / Timestamp / formatRemoved value: -"uint32" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - added
Output schema / $defs / BlockTimestamp / properties / hash / $refAdded value: +"#/$defs/BlockHash" - removed
Output schema / $defs / BlockTimestamp / properties / hash / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockHash" - } -] - added
Output schema / $defs / BlockTimestamp / properties / height / $refAdded value: +"#/$defs/Height" - removed
Output schema / $defs / BlockTimestamp / properties / height / allOfRemoved value: -[ - { - "$ref": "#/$defs/Height" - } -] - added
Output schema / $defs / BlockTimestamp / properties / timestamp / formatAdded value: +"date-time" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32"
- Changed
get_block_fee_rates28 fields changed- changed
Input schema / $defs / TimePeriod / descriptionPrevious value: -"Time period for mining statistics.\n\nUsed to specify the lookback window for pool statistics, hashrate calculations,\nand other time-based mining series."New value: +"Lookback window for mining statistics." - changed
Input schema / $defs / TimePeriod / enumPrevious value: -[ - "24h", - "3d", - "1w", - "1m", - "3m", - "6m", - "1y", - "2y", - "3y", - "all" -]New value: +[ + "24h", + "3d", + "1w", + "1m", + "3m", + "6m", + "1y", + "2y", + "3y", + "4y", + "all" +] - added
Input schema / properties / time_period / descriptionAdded value: +"Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`." - added
Input schema / properties / time_period / examplesAdded value: +[ + "24h" +] - removed
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_0 / allOfRemoved value: -[ - { - "$ref": "#/$defs/FeeRate" - } -] - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_0 / minimumAdded value: +0 - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_0 / typeAdded value: +"integer" - removed
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_10 / allOfRemoved value: -[ - { - "$ref": "#/$defs/FeeRate" - } -] - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_10 / minimumAdded value: +0 - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_10 / typeAdded value: +"integer" - removed
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_100 / allOfRemoved value: -[ - { - "$ref": "#/$defs/FeeRate" - } -] - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_100 / minimumAdded value: +0 - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_100 / typeAdded value: +"integer" - removed
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_25 / allOfRemoved value: -[ - { - "$ref": "#/$defs/FeeRate" - } -] - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_25 / minimumAdded value: +0 - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_25 / typeAdded value: +"integer" - removed
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_50 / allOfRemoved value: -[ - { - "$ref": "#/$defs/FeeRate" - } -] - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_50 / minimumAdded value: +0 - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_50 / typeAdded value: +"integer" - removed
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_75 / allOfRemoved value: -[ - { - "$ref": "#/$defs/FeeRate" - } -] - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_75 / minimumAdded value: +0 - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_75 / typeAdded value: +"integer" - removed
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_90 / allOfRemoved value: -[ - { - "$ref": "#/$defs/FeeRate" - } -] - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_90 / minimumAdded value: +0 - added
Output schema / $defs / BlockFeeRatesEntry / properties / avgFee_90 / typeAdded value: +"integer" - removed
Output schema / $defs / FeeRateRemoved value: -{ - "format": "double", - "type": "number" -} - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Added
get_block_fee_rates_precise - Changed
get_block_fees8 fields changed- changed
Input schema / $defs / TimePeriod / descriptionPrevious value: -"Time period for mining statistics.\n\nUsed to specify the lookback window for pool statistics, hashrate calculations,\nand other time-based mining series."New value: +"Lookback window for mining statistics." - changed
Input schema / $defs / TimePeriod / enumPrevious value: -[ - "24h", - "3d", - "1w", - "1m", - "3m", - "6m", - "1y", - "2y", - "3y", - "all" -]New value: +[ + "24h", + "3d", + "1w", + "1m", + "3m", + "6m", + "1y", + "2y", + "3y", + "4y", + "all" +] - added
Input schema / properties / time_period / descriptionAdded value: +"Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`." - added
Input schema / properties / time_period / examplesAdded value: +[ + "24h" +] - removed
Output schema / $defs / Dollars / formatRemoved value: -"double" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Added
get_block_hash_by_height - Changed
get_block_header2 fields changed- added
Input schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "Hex": { + "pattern": "^([0-9a-f]{2})*$", + "type": "string" + } + }, + "$ref": "#/$defs/Hex", + "$schema": "https://json-schema.org/draft/2020-12/schema" +}
- Changed
get_block_rewards8 fields changed- changed
Input schema / $defs / TimePeriod / descriptionPrevious value: -"Time period for mining statistics.\n\nUsed to specify the lookback window for pool statistics, hashrate calculations,\nand other time-based mining series."New value: +"Lookback window for mining statistics." - changed
Input schema / $defs / TimePeriod / enumPrevious value: -[ - "24h", - "3d", - "1w", - "1m", - "3m", - "6m", - "1y", - "2y", - "3y", - "all" -]New value: +[ + "24h", + "3d", + "1w", + "1m", + "3m", + "6m", + "1y", + "2y", + "3y", + "4y", + "all" +] - added
Input schema / properties / time_period / descriptionAdded value: +"Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`." - added
Input schema / properties / time_period / examplesAdded value: +[ + "24h" +] - removed
Output schema / $defs / Dollars / formatRemoved value: -"double" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Changed
get_block_sizes_weights8 fields changed- changed
Input schema / $defs / TimePeriod / descriptionPrevious value: -"Time period for mining statistics.\n\nUsed to specify the lookback window for pool statistics, hashrate calculations,\nand other time-based mining series."New value: +"Lookback window for mining statistics." - changed
Input schema / $defs / TimePeriod / enumPrevious value: -[ - "24h", - "3d", - "1w", - "1m", - "3m", - "6m", - "1y", - "2y", - "3y", - "all" -]New value: +[ + "24h", + "3d", + "1w", + "1m", + "3m", + "6m", + "1y", + "2y", + "3y", + "4y", + "all" +] - added
Input schema / properties / time_period / descriptionAdded value: +"Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`." - added
Input schema / properties / time_period / examplesAdded value: +[ + "24h" +] - removed
Output schema / $defs / BlockSizeEntry / properties / avgSize / formatRemoved value: -"uint64" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32"
- Changed
get_block_status3 fields changed- added
Input schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32"
- Changed
get_block_tip_hash1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "BlockHash": { + "pattern": "^[0-9a-f]{64}$", + "type": "string" + } + }, + "$ref": "#/$defs/BlockHash", + "$schema": "https://json-schema.org/draft/2020-12/schema" +}
- Changed
get_block_tip_height1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "Height": { + "minimum": 0, + "type": "integer" + } + }, + "$ref": "#/$defs/Height", + "$schema": "https://json-schema.org/draft/2020-12/schema" +}
- Changed
get_block_txid5 fields changed- added
Input schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Input schema / $defs / BlockTxIndex / formatRemoved value: -"uint32" - removed
Input schema / properties / hash / descriptionRemoved value: -"Bitcoin block hash" - added
Input schema / properties / index / examplesAdded value: +[ + 0 +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "Txid": { + "pattern": "^[0-9a-f]{64}$", + "type": "string" + } + }, + "$ref": "#/$defs/Txid", + "$schema": "https://json-schema.org/draft/2020-12/schema" +}
- Changed
get_block_txs_from_index33 fields changed- added
Input schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Input schema / $defs / BlockTxIndex / formatRemoved value: -"uint32" - removed
Input schema / properties / hash / descriptionRemoved value: -"Bitcoin block hash" - added
Input schema / properties / start_index / examplesAdded value: +[ + 0 +] - removed
Output schema / $defs / AddrRemoved value: -{ - "type": "string" -} - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / HexAdded value: +{ + "pattern": "^([0-9a-f]{2})*$", + "type": "string" +} - removed
Output schema / $defs / RawLockTime / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / SigOps / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Transaction / properties / size / formatRemoved value: -"uint" - added
Output schema / $defs / Transaction / properties / status / $refAdded value: +"#/$defs/TxStatus" - removed
Output schema / $defs / Transaction / properties / status / allOfRemoved value: -[ - { - "$ref": "#/$defs/TxStatus" - } -] - added
Output schema / $defs / TxIn / properties / scriptsig / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxIn / properties / scriptsig / typeRemoved value: -"string" - removed
Output schema / $defs / TxIn / properties / sequence / formatRemoved value: -"uint32" - removed
Output schema / $defs / TxIn / properties / witness / allOfRemoved value: -[ - { - "$ref": "#/$defs/Witness" - } -] - added
Output schema / $defs / TxIn / properties / witness / itemsAdded value: +{ + "$ref": "#/$defs/Hex" +} - added
Output schema / $defs / TxIn / properties / witness / typeAdded value: +"array" - removed
Output schema / $defs / TxIndex / formatRemoved value: -"uint32" - added
Output schema / $defs / TxOut / properties / scriptpubkey / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxOut / properties / scriptpubkey / typeRemoved value: -"string" - changed
Output schema / $defs / TxOut / properties / scriptpubkey_address / allOfPrevious value: -[ - { - "$ref": "#/$defs/Addr" - } -]New value: +[ + { + "$ref": "#/$defs/Address" + } +] - removed
Output schema / $defs / TxVersionRaw / formatRemoved value: -"int32" - added
Output schema / $defs / TxVersionRaw / minimumAdded value: +0 - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Vout / formatRemoved value: -"uint16" - removed
Output schema / $defs / Vout / maximumRemoved value: -65535 - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32" - removed
Output schema / $defs / WitnessRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -}
- Changed
get_block_v160 fields changed- added
Input schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - removed
Output schema / $defs / BlockExtras / properties / avgTxSize / formatRemoved value: -"double" - added
Output schema / $defs / BlockExtras / properties / coinbaseAddress / anyOfAdded value: +[ + { + "$ref": "#/$defs/Address" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockExtras / properties / coinbaseAddress / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / $defs / BlockExtras / properties / coinbaseAddresses / items / $refAdded value: +"#/$defs/Address" - removed
Output schema / $defs / BlockExtras / properties / coinbaseAddresses / items / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / coinbaseBip54Added value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Output schema / $defs / BlockExtras / properties / coinbaseRaw / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / BlockExtras / properties / coinbaseRaw / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / expectedFeesAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/Sats" + }, + { + "type": "null" + } + ] +} - added
Output schema / $defs / BlockExtras / properties / expectedWeightAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/Weight" + }, + { + "type": "null" + } + ] +} - added
Output schema / $defs / BlockExtras / properties / firstSeen / anyOfAdded value: +[ + { + "$ref": "#/$defs/Timestamp" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockExtras / properties / firstSeen / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / firstSeen / minimumRemoved value: -0 - removed
Output schema / $defs / BlockExtras / properties / firstSeen / typeRemoved value: -[ - "integer", - "null" -] - added
Output schema / $defs / BlockExtras / properties / header / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / BlockExtras / properties / header / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / matchRateAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / $defs / BlockExtras / properties / orphans / items / $refAdded value: +"#/$defs/BlockOrphan" - removed
Output schema / $defs / BlockExtras / properties / orphans / items / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / pool / $refAdded value: +"#/$defs/BlockPool" - removed
Output schema / $defs / BlockExtras / properties / pool / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockPool" - } -] - removed
Output schema / $defs / BlockExtras / properties / segwitTotalSize / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / segwitTotalTxs / formatRemoved value: -"uint32" - added
Output schema / $defs / BlockExtras / properties / segwitTotalWeight / $refAdded value: +"#/$defs/Weight" - removed
Output schema / $defs / BlockExtras / properties / segwitTotalWeight / allOfRemoved value: -[ - { - "$ref": "#/$defs/Weight" - } -] - removed
Output schema / $defs / BlockExtras / properties / totalInputs / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / totalOutputs / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / utxoSetChange / formatRemoved value: -"int64" - removed
Output schema / $defs / BlockExtras / properties / utxoSetSize / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / virtualSize / formatRemoved value: -"double" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / BlockInfoV1 / properties / bits / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / difficulty / formatRemoved value: -"double" - added
Output schema / $defs / BlockInfoV1 / properties / extras / $refAdded value: +"#/$defs/BlockExtras" - removed
Output schema / $defs / BlockInfoV1 / properties / extras / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockExtras" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / height / $refAdded value: +"#/$defs/Height" - removed
Output schema / $defs / BlockInfoV1 / properties / height / allOfRemoved value: -[ - { - "$ref": "#/$defs/Height" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / merkle_root / $refAdded value: +"#/$defs/MerkleNode" - removed
Output schema / $defs / BlockInfoV1 / properties / merkle_root / typeRemoved value: -"string" - removed
Output schema / $defs / BlockInfoV1 / properties / nonce / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / previousblockhash / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockHash" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / previousblockhash / anyOfAdded value: +[ + { + "$ref": "#/$defs/BlockHash" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockInfoV1 / properties / size / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockInfoV1 / properties / tx_count / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / version / formatRemoved value: -"uint32" - changed
Output schema / $defs / BlockInfoV1 / requiredPrevious value: -[ - "id", - "height", - "version", - "timestamp", - "bits", - "nonce", - "difficulty", - "merkle_root", - "tx_count", - "size", - "weight", - "previousblockhash", - "mediantime", - "extras" -]New value: +[ + "id", + "height", + "version", + "timestamp", + "bits", + "nonce", + "difficulty", + "merkle_root", + "tx_count", + "size", + "weight", + "mediantime", + "extras" +] - added
Output schema / $defs / BlockOrphanAdded value: +{ + "properties": { + "branchlen": { + "minimum": 0, + "type": "integer" + }, + "hash": { + "$ref": "#/$defs/BlockHash" + }, + "height": { + "$ref": "#/$defs/Height" + }, + "prevhash": { + "allOf": [ + { + "$ref": "#/$defs/BlockHash" + } + ] + }, + "status": { + "$ref": "#/$defs/BlockOrphanStatus" + } + }, + "required": [ + "height", + "hash", + "branchlen", + "status", + "prevhash" + ], + "type": "object" +} - added
Output schema / $defs / BlockOrphanStatusAdded value: +{ + "oneOf": [ + { + "const": "invalid", + "type": "string" + }, + { + "const": "headers-only", + "type": "string" + }, + { + "const": "valid-headers", + "type": "string" + }, + { + "const": "valid-fork", + "type": "string" + } + ] +} - removed
Output schema / $defs / BlockPool / properties / blockNumber / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockPool / properties / id / formatRemoved value: -"uint8" - removed
Output schema / $defs / Dollars / formatRemoved value: -"double" - removed
Output schema / $defs / FeeRate / formatRemoved value: -"double" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / HexAdded value: +{ + "pattern": "^([0-9a-f]{2})*$", + "type": "string" +} - added
Output schema / $defs / MerkleNodeAdded value: +{ + "pattern": "^[0-9a-f]{64}$", + "type": "string" +} - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32"
- Changed
get_blocks18 fields changed- added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / BlockInfo / properties / bits / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfo / properties / difficulty / formatRemoved value: -"double" - added
Output schema / $defs / BlockInfo / properties / height / $refAdded value: +"#/$defs/Height" - removed
Output schema / $defs / BlockInfo / properties / height / allOfRemoved value: -[ - { - "$ref": "#/$defs/Height" - } -] - added
Output schema / $defs / BlockInfo / properties / merkle_root / $refAdded value: +"#/$defs/MerkleNode" - removed
Output schema / $defs / BlockInfo / properties / merkle_root / typeRemoved value: -"string" - removed
Output schema / $defs / BlockInfo / properties / nonce / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfo / properties / previousblockhash / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockHash" - } -] - added
Output schema / $defs / BlockInfo / properties / previousblockhash / anyOfAdded value: +[ + { + "$ref": "#/$defs/BlockHash" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockInfo / properties / size / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockInfo / properties / tx_count / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfo / properties / version / formatRemoved value: -"uint32" - changed
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" +] - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / MerkleNodeAdded value: +{ + "pattern": "^[0-9a-f]{64}$", + "type": "string" +} - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32"
- Changed
get_blocks_from_height20 fields changed- changed
Input schema / $defs / Height / descriptionPrevious value: -"Block height"New value: +"A block height: how many blocks came before it." - removed
Input schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / BlockInfo / properties / bits / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfo / properties / difficulty / formatRemoved value: -"double" - added
Output schema / $defs / BlockInfo / properties / height / $refAdded value: +"#/$defs/Height" - removed
Output schema / $defs / BlockInfo / properties / height / allOfRemoved value: -[ - { - "$ref": "#/$defs/Height" - } -] - added
Output schema / $defs / BlockInfo / properties / merkle_root / $refAdded value: +"#/$defs/MerkleNode" - removed
Output schema / $defs / BlockInfo / properties / merkle_root / typeRemoved value: -"string" - removed
Output schema / $defs / BlockInfo / properties / nonce / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfo / properties / previousblockhash / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockHash" - } -] - added
Output schema / $defs / BlockInfo / properties / previousblockhash / anyOfAdded value: +[ + { + "$ref": "#/$defs/BlockHash" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockInfo / properties / size / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockInfo / properties / tx_count / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfo / properties / version / formatRemoved value: -"uint32" - changed
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" +] - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / MerkleNodeAdded value: +{ + "pattern": "^[0-9a-f]{64}$", + "type": "string" +} - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32"
- Changed
get_blocks_v159 fields changed- added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - removed
Output schema / $defs / BlockExtras / properties / avgTxSize / formatRemoved value: -"double" - added
Output schema / $defs / BlockExtras / properties / coinbaseAddress / anyOfAdded value: +[ + { + "$ref": "#/$defs/Address" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockExtras / properties / coinbaseAddress / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / $defs / BlockExtras / properties / coinbaseAddresses / items / $refAdded value: +"#/$defs/Address" - removed
Output schema / $defs / BlockExtras / properties / coinbaseAddresses / items / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / coinbaseBip54Added value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Output schema / $defs / BlockExtras / properties / coinbaseRaw / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / BlockExtras / properties / coinbaseRaw / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / expectedFeesAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/Sats" + }, + { + "type": "null" + } + ] +} - added
Output schema / $defs / BlockExtras / properties / expectedWeightAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/Weight" + }, + { + "type": "null" + } + ] +} - added
Output schema / $defs / BlockExtras / properties / firstSeen / anyOfAdded value: +[ + { + "$ref": "#/$defs/Timestamp" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockExtras / properties / firstSeen / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / firstSeen / minimumRemoved value: -0 - removed
Output schema / $defs / BlockExtras / properties / firstSeen / typeRemoved value: -[ - "integer", - "null" -] - added
Output schema / $defs / BlockExtras / properties / header / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / BlockExtras / properties / header / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / matchRateAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / $defs / BlockExtras / properties / orphans / items / $refAdded value: +"#/$defs/BlockOrphan" - removed
Output schema / $defs / BlockExtras / properties / orphans / items / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / pool / $refAdded value: +"#/$defs/BlockPool" - removed
Output schema / $defs / BlockExtras / properties / pool / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockPool" - } -] - removed
Output schema / $defs / BlockExtras / properties / segwitTotalSize / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / segwitTotalTxs / formatRemoved value: -"uint32" - added
Output schema / $defs / BlockExtras / properties / segwitTotalWeight / $refAdded value: +"#/$defs/Weight" - removed
Output schema / $defs / BlockExtras / properties / segwitTotalWeight / allOfRemoved value: -[ - { - "$ref": "#/$defs/Weight" - } -] - removed
Output schema / $defs / BlockExtras / properties / totalInputs / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / totalOutputs / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / utxoSetChange / formatRemoved value: -"int64" - removed
Output schema / $defs / BlockExtras / properties / utxoSetSize / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / virtualSize / formatRemoved value: -"double" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / BlockInfoV1 / properties / bits / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / difficulty / formatRemoved value: -"double" - added
Output schema / $defs / BlockInfoV1 / properties / extras / $refAdded value: +"#/$defs/BlockExtras" - removed
Output schema / $defs / BlockInfoV1 / properties / extras / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockExtras" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / height / $refAdded value: +"#/$defs/Height" - removed
Output schema / $defs / BlockInfoV1 / properties / height / allOfRemoved value: -[ - { - "$ref": "#/$defs/Height" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / merkle_root / $refAdded value: +"#/$defs/MerkleNode" - removed
Output schema / $defs / BlockInfoV1 / properties / merkle_root / typeRemoved value: -"string" - removed
Output schema / $defs / BlockInfoV1 / properties / nonce / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / previousblockhash / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockHash" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / previousblockhash / anyOfAdded value: +[ + { + "$ref": "#/$defs/BlockHash" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockInfoV1 / properties / size / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockInfoV1 / properties / tx_count / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / version / formatRemoved value: -"uint32" - changed
Output schema / $defs / BlockInfoV1 / requiredPrevious value: -[ - "id", - "height", - "version", - "timestamp", - "bits", - "nonce", - "difficulty", - "merkle_root", - "tx_count", - "size", - "weight", - "previousblockhash", - "mediantime", - "extras" -]New value: +[ + "id", + "height", + "version", + "timestamp", + "bits", + "nonce", + "difficulty", + "merkle_root", + "tx_count", + "size", + "weight", + "mediantime", + "extras" +] - added
Output schema / $defs / BlockOrphanAdded value: +{ + "properties": { + "branchlen": { + "minimum": 0, + "type": "integer" + }, + "hash": { + "$ref": "#/$defs/BlockHash" + }, + "height": { + "$ref": "#/$defs/Height" + }, + "prevhash": { + "allOf": [ + { + "$ref": "#/$defs/BlockHash" + } + ] + }, + "status": { + "$ref": "#/$defs/BlockOrphanStatus" + } + }, + "required": [ + "height", + "hash", + "branchlen", + "status", + "prevhash" + ], + "type": "object" +} - added
Output schema / $defs / BlockOrphanStatusAdded value: +{ + "oneOf": [ + { + "const": "invalid", + "type": "string" + }, + { + "const": "headers-only", + "type": "string" + }, + { + "const": "valid-headers", + "type": "string" + }, + { + "const": "valid-fork", + "type": "string" + } + ] +} - removed
Output schema / $defs / BlockPool / properties / blockNumber / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockPool / properties / id / formatRemoved value: -"uint8" - removed
Output schema / $defs / Dollars / formatRemoved value: -"double" - removed
Output schema / $defs / FeeRate / formatRemoved value: -"double" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / HexAdded value: +{ + "pattern": "^([0-9a-f]{2})*$", + "type": "string" +} - added
Output schema / $defs / MerkleNodeAdded value: +{ + "pattern": "^[0-9a-f]{64}$", + "type": "string" +} - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32"
- Changed
get_blocks_v1_from_height61 fields changed- changed
Input schema / $defs / Height / descriptionPrevious value: -"Block height"New value: +"A block height: how many blocks came before it." - removed
Input schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - removed
Output schema / $defs / BlockExtras / properties / avgTxSize / formatRemoved value: -"double" - added
Output schema / $defs / BlockExtras / properties / coinbaseAddress / anyOfAdded value: +[ + { + "$ref": "#/$defs/Address" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockExtras / properties / coinbaseAddress / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / $defs / BlockExtras / properties / coinbaseAddresses / items / $refAdded value: +"#/$defs/Address" - removed
Output schema / $defs / BlockExtras / properties / coinbaseAddresses / items / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / coinbaseBip54Added value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Output schema / $defs / BlockExtras / properties / coinbaseRaw / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / BlockExtras / properties / coinbaseRaw / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / expectedFeesAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/Sats" + }, + { + "type": "null" + } + ] +} - added
Output schema / $defs / BlockExtras / properties / expectedWeightAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/Weight" + }, + { + "type": "null" + } + ] +} - added
Output schema / $defs / BlockExtras / properties / firstSeen / anyOfAdded value: +[ + { + "$ref": "#/$defs/Timestamp" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockExtras / properties / firstSeen / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / firstSeen / minimumRemoved value: -0 - removed
Output schema / $defs / BlockExtras / properties / firstSeen / typeRemoved value: -[ - "integer", - "null" -] - added
Output schema / $defs / BlockExtras / properties / header / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / BlockExtras / properties / header / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / matchRateAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / $defs / BlockExtras / properties / orphans / items / $refAdded value: +"#/$defs/BlockOrphan" - removed
Output schema / $defs / BlockExtras / properties / orphans / items / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / pool / $refAdded value: +"#/$defs/BlockPool" - removed
Output schema / $defs / BlockExtras / properties / pool / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockPool" - } -] - removed
Output schema / $defs / BlockExtras / properties / segwitTotalSize / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / segwitTotalTxs / formatRemoved value: -"uint32" - added
Output schema / $defs / BlockExtras / properties / segwitTotalWeight / $refAdded value: +"#/$defs/Weight" - removed
Output schema / $defs / BlockExtras / properties / segwitTotalWeight / allOfRemoved value: -[ - { - "$ref": "#/$defs/Weight" - } -] - removed
Output schema / $defs / BlockExtras / properties / totalInputs / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / totalOutputs / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / utxoSetChange / formatRemoved value: -"int64" - removed
Output schema / $defs / BlockExtras / properties / utxoSetSize / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / virtualSize / formatRemoved value: -"double" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / BlockInfoV1 / properties / bits / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / difficulty / formatRemoved value: -"double" - added
Output schema / $defs / BlockInfoV1 / properties / extras / $refAdded value: +"#/$defs/BlockExtras" - removed
Output schema / $defs / BlockInfoV1 / properties / extras / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockExtras" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / height / $refAdded value: +"#/$defs/Height" - removed
Output schema / $defs / BlockInfoV1 / properties / height / allOfRemoved value: -[ - { - "$ref": "#/$defs/Height" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / merkle_root / $refAdded value: +"#/$defs/MerkleNode" - removed
Output schema / $defs / BlockInfoV1 / properties / merkle_root / typeRemoved value: -"string" - removed
Output schema / $defs / BlockInfoV1 / properties / nonce / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / previousblockhash / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockHash" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / previousblockhash / anyOfAdded value: +[ + { + "$ref": "#/$defs/BlockHash" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockInfoV1 / properties / size / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockInfoV1 / properties / tx_count / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / version / formatRemoved value: -"uint32" - changed
Output schema / $defs / BlockInfoV1 / requiredPrevious value: -[ - "id", - "height", - "version", - "timestamp", - "bits", - "nonce", - "difficulty", - "merkle_root", - "tx_count", - "size", - "weight", - "previousblockhash", - "mediantime", - "extras" -]New value: +[ + "id", + "height", + "version", + "timestamp", + "bits", + "nonce", + "difficulty", + "merkle_root", + "tx_count", + "size", + "weight", + "mediantime", + "extras" +] - added
Output schema / $defs / BlockOrphanAdded value: +{ + "properties": { + "branchlen": { + "minimum": 0, + "type": "integer" + }, + "hash": { + "$ref": "#/$defs/BlockHash" + }, + "height": { + "$ref": "#/$defs/Height" + }, + "prevhash": { + "allOf": [ + { + "$ref": "#/$defs/BlockHash" + } + ] + }, + "status": { + "$ref": "#/$defs/BlockOrphanStatus" + } + }, + "required": [ + "height", + "hash", + "branchlen", + "status", + "prevhash" + ], + "type": "object" +} - added
Output schema / $defs / BlockOrphanStatusAdded value: +{ + "oneOf": [ + { + "const": "invalid", + "type": "string" + }, + { + "const": "headers-only", + "type": "string" + }, + { + "const": "valid-headers", + "type": "string" + }, + { + "const": "valid-fork", + "type": "string" + } + ] +} - removed
Output schema / $defs / BlockPool / properties / blockNumber / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockPool / properties / id / formatRemoved value: -"uint8" - removed
Output schema / $defs / Dollars / formatRemoved value: -"double" - removed
Output schema / $defs / FeeRate / formatRemoved value: -"double" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / HexAdded value: +{ + "pattern": "^([0-9a-f]{2})*$", + "type": "string" +} - added
Output schema / $defs / MerkleNodeAdded value: +{ + "pattern": "^[0-9a-f]{64}$", + "type": "string" +} - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32"
- Changed
get_cpfp14 fields changed- changed
Input schema / $defs / Txid / descriptionPrevious value: -"Transaction ID (hash)"New value: +"A transaction ID: its hash." - added
Input schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - added
Output schema / $defs / ConfirmedCpfpAdded value: +{ + "properties": { + "ancestors": { + "items": { + "$ref": "#/$defs/CpfpEntry" + }, + "type": "array" + }, + "cluster": { + "allOf": [ + { + "$ref": "#/$defs/CpfpCluster" + } + ] + }, + "descendants": { + "items": { + "$ref": "#/$defs/CpfpEntry" + }, + "type": "array" + }, + "effectiveFeePerVsize": { + "allOf": [ + { + "$ref": "#/$defs/FeeRate" + } + ] + } + }, + "required": [ + "ancestors", + "descendants", + "effectiveFeePerVsize", + "cluster" + ], + "type": "object" +} - added
Output schema / $defs / CpfpAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/CpfpInfo" + }, + { + "$ref": "#/$defs/ConfirmedCpfp" + }, + { + "$ref": "#/$defs/EmptyCpfp" + } + ] +} - removed
Output schema / $defs / CpfpCluster / properties / chunkIndex / formatRemoved value: -"uint32" - removed
Output schema / $defs / CpfpClusterTxIndex / formatRemoved value: -"uint32" - added
Output schema / $defs / EmptyCpfpAdded value: +{ + "properties": { + "ancestors": { + "maxItems": 0, + "type": "array" + } + }, + "required": [ + "ancestors" + ], + "type": "object" +} - removed
Output schema / $defs / FeeRate / formatRemoved value: -"double" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / SigOps / formatRemoved value: -"uint32" - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / VSize / formatRemoved value: -"uint64" - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32" - changed
Output schema / $refPrevious value: -"#/$defs/CpfpInfo"New value: +"#/$defs/Cpfp"
- Changed
get_difficulty_adjustment12 fields changed- removed
Output schema / $defs / DifficultyAdjustment / properties / adjustedTimeAvg / formatRemoved value: -"uint64" - removed
Output schema / $defs / DifficultyAdjustment / properties / difficultyChange / formatRemoved value: -"double" - removed
Output schema / $defs / DifficultyAdjustment / properties / estimatedRetargetDate / formatRemoved value: -"uint64" - removed
Output schema / $defs / DifficultyAdjustment / properties / expectedBlocks / formatRemoved value: -"double" - removed
Output schema / $defs / DifficultyAdjustment / properties / previousRetarget / formatRemoved value: -"double" - removed
Output schema / $defs / DifficultyAdjustment / properties / progressPercent / formatRemoved value: -"double" - removed
Output schema / $defs / DifficultyAdjustment / properties / remainingBlocks / formatRemoved value: -"uint32" - removed
Output schema / $defs / DifficultyAdjustment / properties / remainingTime / formatRemoved value: -"uint64" - removed
Output schema / $defs / DifficultyAdjustment / properties / timeAvg / formatRemoved value: -"uint64" - removed
Output schema / $defs / DifficultyAdjustment / properties / timeOffset / formatRemoved value: -"int64" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Changed
get_difficulty_adjustments5 fields changed- changed
Output schema / $defs / DifficultyAdjustmentEntry / itemsPrevious value: -{ - "format": "double", - "type": "number" -}New value: +false - removed
Output schema / $defs / DifficultyAdjustmentEntry / maxItemsRemoved value: -4 - added
Output schema / $defs / DifficultyAdjustmentEntry / prefixItemsAdded value: +[ + { + "$ref": "#/$defs/Timestamp" + }, + { + "$ref": "#/$defs/Height" + }, + { + "type": "number" + }, + { + "type": "number" + } +] - added
Output schema / $defs / HeightAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Output schema / $defs / TimestampAdded value: +{ + "minimum": 0, + "type": "integer" +}
- Changed
get_difficulty_adjustments_by_period9 fields changed- changed
Input schema / $defs / TimePeriod / descriptionPrevious value: -"Time period for mining statistics.\n\nUsed to specify the lookback window for pool statistics, hashrate calculations,\nand other time-based mining series."New value: +"Lookback window for mining statistics." - changed
Input schema / $defs / TimePeriod / enumPrevious value: -[ - "24h", - "3d", - "1w", - "1m", - "3m", - "6m", - "1y", - "2y", - "3y", - "all" -]New value: +[ + "24h", + "3d", + "1w", + "1m", + "3m", + "6m", + "1y", + "2y", + "3y", + "4y", + "all" +] - added
Input schema / properties / time_period / descriptionAdded value: +"Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`." - added
Input schema / properties / time_period / examplesAdded value: +[ + "24h" +] - changed
Output schema / $defs / DifficultyAdjustmentEntry / itemsPrevious value: -{ - "format": "double", - "type": "number" -}New value: +false - removed
Output schema / $defs / DifficultyAdjustmentEntry / maxItemsRemoved value: -4 - added
Output schema / $defs / DifficultyAdjustmentEntry / prefixItemsAdded value: +[ + { + "$ref": "#/$defs/Timestamp" + }, + { + "$ref": "#/$defs/Height" + }, + { + "type": "number" + }, + { + "type": "number" + } +] - added
Output schema / $defs / HeightAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Output schema / $defs / TimestampAdded value: +{ + "minimum": 0, + "type": "integer" +}
- Changed
get_fullrbf_replacements6 fields changed- removed
Output schema / $defs / FeeRate / formatRemoved value: -"double" - removed
Output schema / $defs / ReplacementNode / properties / interval / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / VSize / formatRemoved value: -"uint64"
- Changed
get_hashrate9 fields changed- removed
Output schema / $defs / DifficultyEntry / properties / adjustment / formatRemoved value: -"double" - removed
Output schema / $defs / DifficultyEntry / properties / difficulty / formatRemoved value: -"double" - added
Output schema / $defs / DifficultyEntry / properties / height / $refAdded value: +"#/$defs/Height" - removed
Output schema / $defs / DifficultyEntry / properties / height / allOfRemoved value: -[ - { - "$ref": "#/$defs/Height" - } -] - removed
Output schema / $defs / HashrateEntry / properties / avgHashrate / formatRemoved value: -"uint128" - removed
Output schema / $defs / HashrateSummary / properties / currentDifficulty / formatRemoved value: -"double" - removed
Output schema / $defs / HashrateSummary / properties / currentHashrate / formatRemoved value: -"uint128" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Changed
get_hashrate_by_period13 fields changed- changed
Input schema / $defs / TimePeriod / descriptionPrevious value: -"Time period for mining statistics.\n\nUsed to specify the lookback window for pool statistics, hashrate calculations,\nand other time-based mining series."New value: +"Lookback window for mining statistics." - changed
Input schema / $defs / TimePeriod / enumPrevious value: -[ - "24h", - "3d", - "1w", - "1m", - "3m", - "6m", - "1y", - "2y", - "3y", - "all" -]New value: +[ + "24h", + "3d", + "1w", + "1m", + "3m", + "6m", + "1y", + "2y", + "3y", + "4y", + "all" +] - added
Input schema / properties / time_period / descriptionAdded value: +"Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`." - added
Input schema / properties / time_period / examplesAdded value: +[ + "24h" +] - removed
Output schema / $defs / DifficultyEntry / properties / adjustment / formatRemoved value: -"double" - removed
Output schema / $defs / DifficultyEntry / properties / difficulty / formatRemoved value: -"double" - added
Output schema / $defs / DifficultyEntry / properties / height / $refAdded value: +"#/$defs/Height" - removed
Output schema / $defs / DifficultyEntry / properties / height / allOfRemoved value: -[ - { - "$ref": "#/$defs/Height" - } -] - removed
Output schema / $defs / HashrateEntry / properties / avgHashrate / formatRemoved value: -"uint128" - removed
Output schema / $defs / HashrateSummary / properties / currentDifficulty / formatRemoved value: -"double" - removed
Output schema / $defs / HashrateSummary / properties / currentHashrate / formatRemoved value: -"uint128" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Changed
get_historical_price11 fields changed- added
Input schema / $defs / CurrencyAdded value: +{ + "description": "A quote currency prices are served in: USD only.", + "enum": [ + "USD" + ], + "type": "string" +} - changed
Input schema / $defs / Timestamp / descriptionPrevious value: -"UNIX timestamp in seconds"New value: +"A Unix timestamp, in seconds." - removed
Input schema / $defs / Timestamp / formatRemoved value: -"uint32" - added
Input schema / properties / currencyAdded value: +{ + "$ref": "#/$defs/Currency", + "description": "Quote currency: USD, the only one served" +} - added
Input schema / properties / timestamp / descriptionAdded value: +"UNIX timestamp: the latest close at or before it" - removed
Output schema / $defs / Dollars / formatRemoved value: -"double" - added
Output schema / $defs / ExchangeRates / additionalPropertiesAdded value: +false - changed
Output schema / $defs / HistoricalPrice / properties / prices / items / $refPrevious value: -"#/$defs/HistoricalPriceEntry"New value: +"#/$defs/PricePoint" - removed
Output schema / $defs / HistoricalPriceEntryRemoved value: -{ - "properties": { - "USD": { - "allOf": [ - { - "$ref": "#/$defs/Dollars" - } - ] - }, - "time": { - "allOf": [ - { - "$ref": "#/$defs/Timestamp" - } - ] - } - }, - "required": [ - "time", - "USD" - ], - "type": "object" -} - added
Output schema / $defs / PricePointAdded value: +{ + "properties": { + "USD": { + "allOf": [ + { + "$ref": "#/$defs/Dollars" + } + ] + }, + "time": { + "allOf": [ + { + "$ref": "#/$defs/Timestamp" + } + ] + } + }, + "required": [ + "time", + "USD" + ], + "type": "object" +} - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Removed
get_indexes - Changed
get_mempool4 fields changed- removed
Output schema / $defs / MempoolInfo / properties / count / formatRemoved value: -"uint" - removed
Output schema / $defs / MempoolInfo / properties / fee_histogram / items / items / formatRemoved value: -"double" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / VSize / formatRemoved value: -"uint64"
- Changed
get_mempool_blocks5 fields changed- removed
Output schema / $defs / FeeRate / formatRemoved value: -"double" - removed
Output schema / $defs / MempoolBlock / properties / blockSize / formatRemoved value: -"uint64" - removed
Output schema / $defs / MempoolBlock / properties / blockVSize / formatRemoved value: -"double" - removed
Output schema / $defs / MempoolBlock / properties / nTx / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64"
- Removed
get_mempool_hash - Changed
get_mempool_recent5 fields changed- added
Output schema / $defs / MempoolRecentTx / properties / txid / $refAdded value: +"#/$defs/Txid" - removed
Output schema / $defs / MempoolRecentTx / properties / txid / allOfRemoved value: -[ - { - "$ref": "#/$defs/Txid" - } -] - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / VSize / formatRemoved value: -"uint64"
- Removed
get_oracle_histogram_outputs - Removed
get_oracle_histogram_outputs_live - Removed
get_oracle_histogram_payments - Removed
get_oracle_histogram_payments_live - Changed
get_pool26 fields changed- changed
Input schema / $defs / PoolSlug / descriptionPrevious value: -"URL-friendly mining pool identifier"New value: +"A mining pool's identifier, as written in URLs." - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - removed
Output schema / $defs / PoolBlockCounts / properties / 1w / formatRemoved value: -"uint64" - removed
Output schema / $defs / PoolBlockCounts / properties / 24h / formatRemoved value: -"uint64" - removed
Output schema / $defs / PoolBlockCounts / properties / all / formatRemoved value: -"uint64" - removed
Output schema / $defs / PoolBlockShares / properties / 1w / formatRemoved value: -"double" - removed
Output schema / $defs / PoolBlockShares / properties / 24h / formatRemoved value: -"double" - removed
Output schema / $defs / PoolBlockShares / properties / all / formatRemoved value: -"double" - added
Output schema / $defs / PoolDetail / properties / avgBlockHealthAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / $defs / PoolDetail / properties / blockCount / $refAdded value: +"#/$defs/PoolBlockCounts" - removed
Output schema / $defs / PoolDetail / properties / blockCount / allOfRemoved value: -[ - { - "$ref": "#/$defs/PoolBlockCounts" - } -] - added
Output schema / $defs / PoolDetail / properties / blockShare / $refAdded value: +"#/$defs/PoolBlockShares" - removed
Output schema / $defs / PoolDetail / properties / blockShare / allOfRemoved value: -[ - { - "$ref": "#/$defs/PoolBlockShares" - } -] - removed
Output schema / $defs / PoolDetail / properties / estimatedHashrate / formatRemoved value: -"uint128" - added
Output schema / $defs / PoolDetail / properties / pool / $refAdded value: +"#/$defs/PoolDetailInfo" - removed
Output schema / $defs / PoolDetail / properties / pool / allOfRemoved value: -[ - { - "$ref": "#/$defs/PoolDetailInfo" - } -] - removed
Output schema / $defs / PoolDetail / properties / reportedHashrate / formatRemoved value: -"uint128" - removed
Output schema / $defs / PoolDetail / properties / totalReward / anyOfRemoved value: -[ - { - "$ref": "#/$defs/Sats" - }, - { - "type": "null" - } -] - added
Output schema / $defs / PoolDetail / properties / totalReward / patternAdded value: +"^[0-9]+$" - added
Output schema / $defs / PoolDetail / properties / totalReward / typeAdded value: +"string" - changed
Output schema / $defs / PoolDetail / requiredPrevious value: -[ - "pool", - "blockCount", - "blockShare", - "estimatedHashrate" -]New value: +[ + "pool", + "blockCount", + "blockShare", + "estimatedHashrate", + "totalReward" +] - added
Output schema / $defs / PoolDetailInfo / properties / addresses / items / $refAdded value: +"#/$defs/Address" - removed
Output schema / $defs / PoolDetailInfo / properties / addresses / items / typeRemoved value: -"string" - removed
Output schema / $defs / PoolDetailInfo / properties / id / formatRemoved value: -"uint8" - removed
Output schema / $defs / PoolDetailInfo / properties / unique_id / formatRemoved value: -"uint8" - removed
Output schema / $defs / SatsRemoved value: -{ - "format": "uint64", - "minimum": 0, - "type": "integer" -}
- Changed
get_pool_blocks60 fields changed- changed
Input schema / $defs / PoolSlug / descriptionPrevious value: -"URL-friendly mining pool identifier"New value: +"A mining pool's identifier, as written in URLs." - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - removed
Output schema / $defs / BlockExtras / properties / avgTxSize / formatRemoved value: -"double" - added
Output schema / $defs / BlockExtras / properties / coinbaseAddress / anyOfAdded value: +[ + { + "$ref": "#/$defs/Address" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockExtras / properties / coinbaseAddress / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / $defs / BlockExtras / properties / coinbaseAddresses / items / $refAdded value: +"#/$defs/Address" - removed
Output schema / $defs / BlockExtras / properties / coinbaseAddresses / items / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / coinbaseBip54Added value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Output schema / $defs / BlockExtras / properties / coinbaseRaw / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / BlockExtras / properties / coinbaseRaw / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / expectedFeesAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/Sats" + }, + { + "type": "null" + } + ] +} - added
Output schema / $defs / BlockExtras / properties / expectedWeightAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/Weight" + }, + { + "type": "null" + } + ] +} - added
Output schema / $defs / BlockExtras / properties / firstSeen / anyOfAdded value: +[ + { + "$ref": "#/$defs/Timestamp" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockExtras / properties / firstSeen / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / firstSeen / minimumRemoved value: -0 - removed
Output schema / $defs / BlockExtras / properties / firstSeen / typeRemoved value: -[ - "integer", - "null" -] - added
Output schema / $defs / BlockExtras / properties / header / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / BlockExtras / properties / header / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / matchRateAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / $defs / BlockExtras / properties / orphans / items / $refAdded value: +"#/$defs/BlockOrphan" - removed
Output schema / $defs / BlockExtras / properties / orphans / items / typeRemoved value: -"string" - added
Output schema / $defs / BlockExtras / properties / pool / $refAdded value: +"#/$defs/BlockPool" - removed
Output schema / $defs / BlockExtras / properties / pool / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockPool" - } -] - removed
Output schema / $defs / BlockExtras / properties / segwitTotalSize / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / segwitTotalTxs / formatRemoved value: -"uint32" - added
Output schema / $defs / BlockExtras / properties / segwitTotalWeight / $refAdded value: +"#/$defs/Weight" - removed
Output schema / $defs / BlockExtras / properties / segwitTotalWeight / allOfRemoved value: -[ - { - "$ref": "#/$defs/Weight" - } -] - removed
Output schema / $defs / BlockExtras / properties / totalInputs / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / totalOutputs / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / utxoSetChange / formatRemoved value: -"int64" - removed
Output schema / $defs / BlockExtras / properties / utxoSetSize / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockExtras / properties / virtualSize / formatRemoved value: -"double" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / BlockInfoV1 / properties / bits / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / difficulty / formatRemoved value: -"double" - added
Output schema / $defs / BlockInfoV1 / properties / extras / $refAdded value: +"#/$defs/BlockExtras" - removed
Output schema / $defs / BlockInfoV1 / properties / extras / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockExtras" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / height / $refAdded value: +"#/$defs/Height" - removed
Output schema / $defs / BlockInfoV1 / properties / height / allOfRemoved value: -[ - { - "$ref": "#/$defs/Height" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / merkle_root / $refAdded value: +"#/$defs/MerkleNode" - removed
Output schema / $defs / BlockInfoV1 / properties / merkle_root / typeRemoved value: -"string" - removed
Output schema / $defs / BlockInfoV1 / properties / nonce / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / previousblockhash / allOfRemoved value: -[ - { - "$ref": "#/$defs/BlockHash" - } -] - added
Output schema / $defs / BlockInfoV1 / properties / previousblockhash / anyOfAdded value: +[ + { + "$ref": "#/$defs/BlockHash" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / BlockInfoV1 / properties / size / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockInfoV1 / properties / tx_count / formatRemoved value: -"uint32" - removed
Output schema / $defs / BlockInfoV1 / properties / version / formatRemoved value: -"uint32" - changed
Output schema / $defs / BlockInfoV1 / requiredPrevious value: -[ - "id", - "height", - "version", - "timestamp", - "bits", - "nonce", - "difficulty", - "merkle_root", - "tx_count", - "size", - "weight", - "previousblockhash", - "mediantime", - "extras" -]New value: +[ + "id", + "height", + "version", + "timestamp", + "bits", + "nonce", + "difficulty", + "merkle_root", + "tx_count", + "size", + "weight", + "mediantime", + "extras" +] - added
Output schema / $defs / BlockOrphanAdded value: +{ + "properties": { + "branchlen": { + "minimum": 0, + "type": "integer" + }, + "hash": { + "$ref": "#/$defs/BlockHash" + }, + "height": { + "$ref": "#/$defs/Height" + }, + "prevhash": { + "allOf": [ + { + "$ref": "#/$defs/BlockHash" + } + ] + }, + "status": { + "$ref": "#/$defs/BlockOrphanStatus" + } + }, + "required": [ + "height", + "hash", + "branchlen", + "status", + "prevhash" + ], + "type": "object" +} - added
Output schema / $defs / BlockOrphanStatusAdded value: +{ + "oneOf": [ + { + "const": "invalid", + "type": "string" + }, + { + "const": "headers-only", + "type": "string" + }, + { + "const": "valid-headers", + "type": "string" + }, + { + "const": "valid-fork", + "type": "string" + } + ] +} - removed
Output schema / $defs / BlockPool / properties / blockNumber / formatRemoved value: -"uint64" - removed
Output schema / $defs / BlockPool / properties / id / formatRemoved value: -"uint8" - removed
Output schema / $defs / Dollars / formatRemoved value: -"double" - removed
Output schema / $defs / FeeRate / formatRemoved value: -"double" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / HexAdded value: +{ + "pattern": "^([0-9a-f]{2})*$", + "type": "string" +} - added
Output schema / $defs / MerkleNodeAdded value: +{ + "pattern": "^[0-9a-f]{64}$", + "type": "string" +} - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32"
- Removed
get_pool_blocks_from - Added
get_pool_blocks_from_height - Changed
get_pool_hashrate4 fields changed- changed
Input schema / $defs / PoolSlug / descriptionPrevious value: -"URL-friendly mining pool identifier"New value: +"A mining pool's identifier, as written in URLs." - removed
Output schema / $defs / PoolHashrateEntry / properties / avgHashrate / formatRemoved value: -"uint128" - removed
Output schema / $defs / PoolHashrateEntry / properties / share / formatRemoved value: -"double" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Added
get_pool_ranking - Removed
get_pool_stats - Changed
get_pools1 field changed- removed
Output schema / $defs / PoolInfo / properties / unique_id / formatRemoved value: -"uint8"
- Changed
get_pools_hashrate3 fields changed- removed
Output schema / $defs / PoolHashrateEntry / properties / avgHashrate / formatRemoved value: -"uint128" - removed
Output schema / $defs / PoolHashrateEntry / properties / share / formatRemoved value: -"double" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Changed
get_pools_hashrate_by_period7 fields changed- changed
Input schema / $defs / TimePeriod / descriptionPrevious value: -"Time period for mining statistics.\n\nUsed to specify the lookback window for pool statistics, hashrate calculations,\nand other time-based mining series."New value: +"Lookback window for mining statistics." - changed
Input schema / $defs / TimePeriod / enumPrevious value: -[ - "24h", - "3d", - "1w", - "1m", - "3m", - "6m", - "1y", - "2y", - "3y", - "all" -]New value: +[ + "24h", + "3d", + "1w", + "1m", + "3m", + "6m", + "1y", + "2y", + "3y", + "4y", + "all" +] - added
Input schema / properties / time_period / descriptionAdded value: +"Lookback period: `24h`, `3d`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`, `4y` or `all`." - added
Input schema / properties / time_period / examplesAdded value: +[ + "24h" +] - removed
Output schema / $defs / PoolHashrateEntry / properties / avgHashrate / formatRemoved value: -"uint128" - removed
Output schema / $defs / PoolHashrateEntry / properties / share / formatRemoved value: -"double" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Changed
get_precise_fees4 fields changed- removed
Output schema / $defs / FeeRate / formatRemoved value: -"double" - added
Output schema / $defs / PreciseRecommendedFeesAdded value: +{ + "properties": { + "economyFee": { + "allOf": [ + { + "$ref": "#/$defs/FeeRate" + } + ] + }, + "fastestFee": { + "allOf": [ + { + "$ref": "#/$defs/FeeRate" + } + ] + }, + "halfHourFee": { + "allOf": [ + { + "$ref": "#/$defs/FeeRate" + } + ] + }, + "hourFee": { + "allOf": [ + { + "$ref": "#/$defs/FeeRate" + } + ] + }, + "minimumFee": { + "allOf": [ + { + "$ref": "#/$defs/FeeRate" + } + ] + } + }, + "required": [ + "fastestFee", + "halfHourFee", + "hourFee", + "economyFee", + "minimumFee" + ], + "type": "object" +} - removed
Output schema / $defs / RecommendedFeesRemoved value: -{ - "properties": { - "economyFee": { - "allOf": [ - { - "$ref": "#/$defs/FeeRate" - } - ] - }, - "fastestFee": { - "allOf": [ - { - "$ref": "#/$defs/FeeRate" - } - ] - }, - "halfHourFee": { - "allOf": [ - { - "$ref": "#/$defs/FeeRate" - } - ] - }, - "hourFee": { - "allOf": [ - { - "$ref": "#/$defs/FeeRate" - } - ] - }, - "minimumFee": { - "allOf": [ - { - "$ref": "#/$defs/FeeRate" - } - ] - } - }, - "required": [ - "fastestFee", - "halfHourFee", - "hourFee", - "economyFee", - "minimumFee" - ], - "type": "object" -} - changed
Output schema / $refPrevious value: -"#/$defs/RecommendedFees"New value: +"#/$defs/PreciseRecommendedFees"
- Changed
get_prices5 fields changed- removed
Output schema / $defs / Dollars / formatRemoved value: -"double" - added
Output schema / $defs / PricePointAdded value: +{ + "properties": { + "USD": { + "allOf": [ + { + "$ref": "#/$defs/Dollars" + } + ] + }, + "time": { + "allOf": [ + { + "$ref": "#/$defs/Timestamp" + } + ] + } + }, + "required": [ + "time", + "USD" + ], + "type": "object" +} - removed
Output schema / $defs / PricesRemoved value: -{ - "properties": { - "USD": { - "allOf": [ - { - "$ref": "#/$defs/Dollars" - } - ] - }, - "time": { - "allOf": [ - { - "$ref": "#/$defs/Timestamp" - } - ] - } - }, - "required": [ - "time", - "USD" - ], - "type": "object" -} - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - changed
Output schema / $refPrevious value: -"#/$defs/Prices"New value: +"#/$defs/PricePoint"
- Changed
get_replacements6 fields changed- removed
Output schema / $defs / FeeRate / formatRemoved value: -"double" - removed
Output schema / $defs / ReplacementNode / properties / interval / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / VSize / formatRemoved value: -"uint64"
- Changed
get_reward_stats6 fields changed- removed
Input schema / properties / block_count / formatRemoved value: -"uint" - changed
Input schema / properties / block_count / minimumPrevious value: -0New value: +1 - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / RewardStats / properties / totalFee / patternAdded value: +"^[0-9]+$" - added
Output schema / $defs / RewardStats / properties / totalReward / patternAdded value: +"^[0-9]+$" - added
Output schema / $defs / RewardStats / properties / totalTx / patternAdded value: +"^[0-9]+$"
- Changed
get_series25 fields changed- removed
Input schema / $defs / Format / descriptionRemoved value: -"Output format for API responses" - changed
Input schema / $defs / Index / descriptionPrevious value: -"Aggregation dimension for querying series. Includes time-based (date, week, month, year),\nblock-based (height, tx_index), and address/output type indexes."New value: +"Aggregation dimension for querying series. Includes time-based (date, week, month, year), block-based (height, tx_index), and address/output type indexes." - changed
Input schema / $defs / Index / enumPrevious value: -[ - "minute10", - "minute30", - "hour1", - "hour4", - "hour12", - "day1", - "day3", - "week1", - "month1", - "month3", - "month6", - "year1", - "year10", - "halving", - "epoch", - "height", - "tx_index", - "txin_index", - "txout_index", - "empty_output_index", - "op_return_index", - "p2a_addr_index", - "p2ms_output_index", - "p2pk33_addr_index", - "p2pk65_addr_index", - "p2pkh_addr_index", - "p2sh_addr_index", - "p2tr_addr_index", - "p2wpkh_addr_index", - "p2wsh_addr_index", - "unknown_output_index", - "funded_addr_index", - "empty_addr_index", - "extended_empty_addr_index" -]New value: +[ + "minute10", + "minute30", + "hour1", + "hour4", + "hour12", + "day1", + "day3", + "week1", + "month1", + "month3", + "month6", + "year1", + "year10", + "halving_epoch", + "difficulty_epoch", + "height", + "tx_index", + "txin_index", + "txout_index", + "empty_script_output_index", + "op_return_output_index", + "p2a_address_index", + "p2ms_output_index", + "p2pk33_address_index", + "p2pk65_address_index", + "p2pkh_address_index", + "p2sh_address_index", + "p2tr_address_index", + "p2wpkh_address_index", + "p2wsh_address_index", + "unknown_script_output_index" +] - changed
Input schema / $defs / Limit / descriptionPrevious value: -"Maximum number of results to return. Defaults to 100 if not specified."New value: +"Maximum number of results to return; each parameter states what omitting it means." - removed
Input schema / $defs / Limit / formatRemoved value: -"uint" - changed
Input schema / $defs / RangeIndex / anyOfPrevious value: -[ - { - "examples": [ - 0, - -366 - ], - "format": "int64", - "type": "integer" - }, - { - "examples": [ - "2025-08-15" - ], - "format": "date", - "pattern": "^\\d{4}-\\d{2}-\\d{2}$", - "type": "string" - }, - { - "examples": [ - "2025-08-15T00:00:00Z" - ], - "format": "date-time", - "type": "string" - } -]New value: +[ + { + "examples": [ + 0, + -366 + ], + "type": "integer" + }, + { + "examples": [ + "2025-08-15" + ], + "format": "date", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "examples": [ + "2025-08-15T00:00:00Z" + ], + "format": "date-time", + "type": "string" + } +] - removed
Input schema / $defs / SeriesName / descriptionRemoved value: -"Series name" - added
Input schema / $defs / SeriesName / patternAdded value: +"^[a-z0-9_]+$" - changed
Input schema / properties / end / descriptionPrevious value: -"Exclusive end: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `to`, `t`, `e`"New value: +"Exclusive end: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end." - removed
Input schema / properties / format / descriptionRemoved value: -"Format of the output" - removed
Input schema / properties / index / descriptionRemoved value: -"Aggregation index" - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of values to return (ignored if `end` is set). Aliases: `count`, `c`, `l`"New value: +"Maximum number of values to return; with `end` too, the tighter of the two applies. Omitted, the rest of the range." - removed
Input schema / properties / series / descriptionRemoved value: -"Series name" - changed
Input schema / properties / start / descriptionPrevious value: -"Inclusive start: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `from`, `f`, `s`"New value: +"Inclusive start: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end." - changed
Output schema / $defs / Index / enumPrevious value: -[ - "minute10", - "minute30", - "hour1", - "hour4", - "hour12", - "day1", - "day3", - "week1", - "month1", - "month3", - "month6", - "year1", - "year10", - "halving", - "epoch", - "height", - "tx_index", - "txin_index", - "txout_index", - "empty_output_index", - "op_return_index", - "p2a_addr_index", - "p2ms_output_index", - "p2pk33_addr_index", - "p2pk65_addr_index", - "p2pkh_addr_index", - "p2sh_addr_index", - "p2tr_addr_index", - "p2wpkh_addr_index", - "p2wsh_addr_index", - "unknown_output_index", - "funded_addr_index", - "empty_addr_index", - "extended_empty_addr_index" -]New value: +[ + "minute10", + "minute30", + "hour1", + "hour4", + "hour12", + "day1", + "day3", + "week1", + "month1", + "month3", + "month6", + "year1", + "year10", + "halving_epoch", + "difficulty_epoch", + "height", + "tx_index", + "txin_index", + "txout_index", + "empty_script_output_index", + "op_return_output_index", + "p2a_address_index", + "p2ms_output_index", + "p2pk33_address_index", + "p2pk65_address_index", + "p2pkh_address_index", + "p2sh_address_index", + "p2tr_address_index", + "p2wpkh_address_index", + "p2wsh_address_index", + "unknown_script_output_index" +] - removed
Output schema / $defs / SeriesData / properties / end / formatRemoved value: -"uint" - added
Output schema / $defs / SeriesData / properties / index / $refAdded value: +"#/$defs/Index" - removed
Output schema / $defs / SeriesData / properties / index / allOfRemoved value: -[ - { - "$ref": "#/$defs/Index" - } -] - removed
Output schema / $defs / SeriesData / properties / stampRemoved value: -{ - "type": "string" -} - removed
Output schema / $defs / SeriesData / properties / start / formatRemoved value: -"uint" - removed
Output schema / $defs / SeriesData / properties / version / allOfRemoved value: -[ - { - "$ref": "#/$defs/Version" - } -] - added
Output schema / $defs / SeriesData / properties / version / minimumAdded value: +0 - added
Output schema / $defs / SeriesData / properties / version / typeAdded value: +"integer" - changed
Output schema / $defs / SeriesData / requiredPrevious value: -[ - "version", - "index", - "start", - "end", - "stamp", - "data" -]New value: +[ + "version", + "index", + "start", + "end", + "data" +] - removed
Output schema / $defs / VersionRemoved value: -{ - "format": "uint32", - "minimum": 0, - "type": "integer" -}
- Changed
get_series_bulk25 fields changed- removed
Input schema / $defs / Format / descriptionRemoved value: -"Output format for API responses" - changed
Input schema / $defs / Index / descriptionPrevious value: -"Aggregation dimension for querying series. Includes time-based (date, week, month, year),\nblock-based (height, tx_index), and address/output type indexes."New value: +"Aggregation dimension for querying series. Includes time-based (date, week, month, year), block-based (height, tx_index), and address/output type indexes." - changed
Input schema / $defs / Index / enumPrevious value: -[ - "minute10", - "minute30", - "hour1", - "hour4", - "hour12", - "day1", - "day3", - "week1", - "month1", - "month3", - "month6", - "year1", - "year10", - "halving", - "epoch", - "height", - "tx_index", - "txin_index", - "txout_index", - "empty_output_index", - "op_return_index", - "p2a_addr_index", - "p2ms_output_index", - "p2pk33_addr_index", - "p2pk65_addr_index", - "p2pkh_addr_index", - "p2sh_addr_index", - "p2tr_addr_index", - "p2wpkh_addr_index", - "p2wsh_addr_index", - "unknown_output_index", - "funded_addr_index", - "empty_addr_index", - "extended_empty_addr_index" -]New value: +[ + "minute10", + "minute30", + "hour1", + "hour4", + "hour12", + "day1", + "day3", + "week1", + "month1", + "month3", + "month6", + "year1", + "year10", + "halving_epoch", + "difficulty_epoch", + "height", + "tx_index", + "txin_index", + "txout_index", + "empty_script_output_index", + "op_return_output_index", + "p2a_address_index", + "p2ms_output_index", + "p2pk33_address_index", + "p2pk65_address_index", + "p2pkh_address_index", + "p2sh_address_index", + "p2tr_address_index", + "p2wpkh_address_index", + "p2wsh_address_index", + "unknown_script_output_index" +] - changed
Input schema / $defs / Limit / descriptionPrevious value: -"Maximum number of results to return. Defaults to 100 if not specified."New value: +"Maximum number of results to return; each parameter states what omitting it means." - removed
Input schema / $defs / Limit / formatRemoved value: -"uint" - changed
Input schema / $defs / RangeIndex / anyOfPrevious value: -[ - { - "examples": [ - 0, - -366 - ], - "format": "int64", - "type": "integer" - }, - { - "examples": [ - "2025-08-15" - ], - "format": "date", - "pattern": "^\\d{4}-\\d{2}-\\d{2}$", - "type": "string" - }, - { - "examples": [ - "2025-08-15T00:00:00Z" - ], - "format": "date-time", - "type": "string" - } -]New value: +[ + { + "examples": [ + 0, + -366 + ], + "type": "integer" + }, + { + "examples": [ + "2025-08-15" + ], + "format": "date", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "examples": [ + "2025-08-15T00:00:00Z" + ], + "format": "date-time", + "type": "string" + } +] - changed
Input schema / $defs / SeriesList / descriptionPrevious value: -"Comma-separated list of series names"New value: +"Comma-separated list of series names\n\nDeserialization permits at most 32 normalized names and 2,048 decoded input\nstring bytes. For arrays, the byte budget is shared by their string values." - added
Input schema / $defs / SeriesList / maxLengthAdded value: +2048 - changed
Input schema / properties / end / descriptionPrevious value: -"Exclusive end: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `to`, `t`, `e`"New value: +"Exclusive end: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end." - removed
Input schema / properties / format / descriptionRemoved value: -"Format of the output" - removed
Input schema / properties / index / descriptionRemoved value: -"Index to query" - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of values to return (ignored if `end` is set). Aliases: `count`, `c`, `l`"New value: +"Maximum number of values to return; with `end` too, the tighter of the two applies. Omitted, the rest of the range." - removed
Input schema / properties / series / descriptionRemoved value: -"Requested series" - changed
Input schema / properties / start / descriptionPrevious value: -"Inclusive start: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end. Aliases: `from`, `f`, `s`"New value: +"Inclusive start: integer index, date (YYYY-MM-DD), or timestamp (ISO 8601). Negative integers count from end." - changed
Output schema / $defs / Index / enumPrevious value: -[ - "minute10", - "minute30", - "hour1", - "hour4", - "hour12", - "day1", - "day3", - "week1", - "month1", - "month3", - "month6", - "year1", - "year10", - "halving", - "epoch", - "height", - "tx_index", - "txin_index", - "txout_index", - "empty_output_index", - "op_return_index", - "p2a_addr_index", - "p2ms_output_index", - "p2pk33_addr_index", - "p2pk65_addr_index", - "p2pkh_addr_index", - "p2sh_addr_index", - "p2tr_addr_index", - "p2wpkh_addr_index", - "p2wsh_addr_index", - "unknown_output_index", - "funded_addr_index", - "empty_addr_index", - "extended_empty_addr_index" -]New value: +[ + "minute10", + "minute30", + "hour1", + "hour4", + "hour12", + "day1", + "day3", + "week1", + "month1", + "month3", + "month6", + "year1", + "year10", + "halving_epoch", + "difficulty_epoch", + "height", + "tx_index", + "txin_index", + "txout_index", + "empty_script_output_index", + "op_return_output_index", + "p2a_address_index", + "p2ms_output_index", + "p2pk33_address_index", + "p2pk65_address_index", + "p2pkh_address_index", + "p2sh_address_index", + "p2tr_address_index", + "p2wpkh_address_index", + "p2wsh_address_index", + "unknown_script_output_index" +] - removed
Output schema / $defs / SeriesData / properties / end / formatRemoved value: -"uint" - added
Output schema / $defs / SeriesData / properties / index / $refAdded value: +"#/$defs/Index" - removed
Output schema / $defs / SeriesData / properties / index / allOfRemoved value: -[ - { - "$ref": "#/$defs/Index" - } -] - removed
Output schema / $defs / SeriesData / properties / stampRemoved value: -{ - "type": "string" -} - removed
Output schema / $defs / SeriesData / properties / start / formatRemoved value: -"uint" - removed
Output schema / $defs / SeriesData / properties / version / allOfRemoved value: -[ - { - "$ref": "#/$defs/Version" - } -] - added
Output schema / $defs / SeriesData / properties / version / minimumAdded value: +0 - added
Output schema / $defs / SeriesData / properties / version / typeAdded value: +"integer" - changed
Output schema / $defs / SeriesData / requiredPrevious value: -[ - "version", - "index", - "start", - "end", - "stamp", - "data" -]New value: +[ + "version", + "index", + "start", + "end", + "data" +] - removed
Output schema / $defs / VersionRemoved value: -{ - "format": "uint32", - "minimum": 0, - "type": "integer" -}
- Changed
get_series_count8 fields changed- removed
Output schema / $defs / DetailedSeriesCount / properties / distinct / formatRemoved value: -"uint" - removed
Output schema / $defs / DetailedSeriesCount / properties / lazy / formatRemoved value: -"uint" - removed
Output schema / $defs / DetailedSeriesCount / properties / stored / formatRemoved value: -"uint" - removed
Output schema / $defs / DetailedSeriesCount / properties / total / formatRemoved value: -"uint" - removed
Output schema / $defs / SeriesCount / properties / distinct / formatRemoved value: -"uint" - removed
Output schema / $defs / SeriesCount / properties / lazy / formatRemoved value: -"uint" - removed
Output schema / $defs / SeriesCount / properties / stored / formatRemoved value: -"uint" - removed
Output schema / $defs / SeriesCount / properties / total / formatRemoved value: -"uint"
- Changed
get_series_info6 fields changed- removed
Input schema / $defs / SeriesName / descriptionRemoved value: -"Series name" - added
Input schema / $defs / SeriesName / patternAdded value: +"^[a-z0-9_]+$" - changed
Output schema / $defs / Index / enumPrevious value: -[ - "minute10", - "minute30", - "hour1", - "hour4", - "hour12", - "day1", - "day3", - "week1", - "month1", - "month3", - "month6", - "year1", - "year10", - "halving", - "epoch", - "height", - "tx_index", - "txin_index", - "txout_index", - "empty_output_index", - "op_return_index", - "p2a_addr_index", - "p2ms_output_index", - "p2pk33_addr_index", - "p2pk65_addr_index", - "p2pkh_addr_index", - "p2sh_addr_index", - "p2tr_addr_index", - "p2wpkh_addr_index", - "p2wsh_addr_index", - "unknown_output_index", - "funded_addr_index", - "empty_addr_index", - "extended_empty_addr_index" -]New value: +[ + "minute10", + "minute30", + "hour1", + "hour4", + "hour12", + "day1", + "day3", + "week1", + "month1", + "month3", + "month6", + "year1", + "year10", + "halving_epoch", + "difficulty_epoch", + "height", + "tx_index", + "txin_index", + "txout_index", + "empty_script_output_index", + "op_return_output_index", + "p2a_address_index", + "p2ms_output_index", + "p2pk33_address_index", + "p2pk65_address_index", + "p2pkh_address_index", + "p2sh_address_index", + "p2tr_address_index", + "p2wpkh_address_index", + "p2wsh_address_index", + "unknown_script_output_index" +] - added
Output schema / $defs / SeriesInfo / properties / nullableAdded value: +{ + "items": { + "$ref": "#/$defs/Index" + }, + "type": "array" +} - added
Output schema / $defs / SeriesInfo / properties / unitAdded value: +{ + "type": [ + "string", + "null" + ] +} - changed
Output schema / $defs / SeriesInfo / requiredPrevious value: -[ - "indexes", - "type" -]New value: +[ + "indexes", + "nullable", + "type" +]
- Changed
get_series_latest6 fields changed- changed
Input schema / $defs / Index / descriptionPrevious value: -"Aggregation dimension for querying series. Includes time-based (date, week, month, year),\nblock-based (height, tx_index), and address/output type indexes."New value: +"Aggregation dimension for querying series. Includes time-based (date, week, month, year), block-based (height, tx_index), and address/output type indexes." - changed
Input schema / $defs / Index / enumPrevious value: -[ - "minute10", - "minute30", - "hour1", - "hour4", - "hour12", - "day1", - "day3", - "week1", - "month1", - "month3", - "month6", - "year1", - "year10", - "halving", - "epoch", - "height", - "tx_index", - "txin_index", - "txout_index", - "empty_output_index", - "op_return_index", - "p2a_addr_index", - "p2ms_output_index", - "p2pk33_addr_index", - "p2pk65_addr_index", - "p2pkh_addr_index", - "p2sh_addr_index", - "p2tr_addr_index", - "p2wpkh_addr_index", - "p2wsh_addr_index", - "unknown_output_index", - "funded_addr_index", - "empty_addr_index", - "extended_empty_addr_index" -]New value: +[ + "minute10", + "minute30", + "hour1", + "hour4", + "hour12", + "day1", + "day3", + "week1", + "month1", + "month3", + "month6", + "year1", + "year10", + "halving_epoch", + "difficulty_epoch", + "height", + "tx_index", + "txin_index", + "txout_index", + "empty_script_output_index", + "op_return_output_index", + "p2a_address_index", + "p2ms_output_index", + "p2pk33_address_index", + "p2pk65_address_index", + "p2pkh_address_index", + "p2sh_address_index", + "p2tr_address_index", + "p2wpkh_address_index", + "p2wsh_address_index", + "unknown_script_output_index" +] - removed
Input schema / $defs / SeriesName / descriptionRemoved value: -"Series name" - added
Input schema / $defs / SeriesName / patternAdded value: +"^[a-z0-9_]+$" - removed
Input schema / properties / index / descriptionRemoved value: -"Aggregation index" - removed
Input schema / properties / series / descriptionRemoved value: -"Series name"
- Changed
get_series_len7 fields changed- changed
Input schema / $defs / Index / descriptionPrevious value: -"Aggregation dimension for querying series. Includes time-based (date, week, month, year),\nblock-based (height, tx_index), and address/output type indexes."New value: +"Aggregation dimension for querying series. Includes time-based (date, week, month, year), block-based (height, tx_index), and address/output type indexes." - changed
Input schema / $defs / Index / enumPrevious value: -[ - "minute10", - "minute30", - "hour1", - "hour4", - "hour12", - "day1", - "day3", - "week1", - "month1", - "month3", - "month6", - "year1", - "year10", - "halving", - "epoch", - "height", - "tx_index", - "txin_index", - "txout_index", - "empty_output_index", - "op_return_index", - "p2a_addr_index", - "p2ms_output_index", - "p2pk33_addr_index", - "p2pk65_addr_index", - "p2pkh_addr_index", - "p2sh_addr_index", - "p2tr_addr_index", - "p2wpkh_addr_index", - "p2wsh_addr_index", - "unknown_output_index", - "funded_addr_index", - "empty_addr_index", - "extended_empty_addr_index" -]New value: +[ + "minute10", + "minute30", + "hour1", + "hour4", + "hour12", + "day1", + "day3", + "week1", + "month1", + "month3", + "month6", + "year1", + "year10", + "halving_epoch", + "difficulty_epoch", + "height", + "tx_index", + "txin_index", + "txout_index", + "empty_script_output_index", + "op_return_output_index", + "p2a_address_index", + "p2ms_output_index", + "p2pk33_address_index", + "p2pk65_address_index", + "p2pkh_address_index", + "p2sh_address_index", + "p2tr_address_index", + "p2wpkh_address_index", + "p2wsh_address_index", + "unknown_script_output_index" +] - removed
Input schema / $defs / SeriesName / descriptionRemoved value: -"Series name" - added
Input schema / $defs / SeriesName / patternAdded value: +"^[a-z0-9_]+$" - removed
Input schema / properties / index / descriptionRemoved value: -"Aggregation index" - removed
Input schema / properties / series / descriptionRemoved value: -"Series name" - removed
Output schema / formatRemoved value: -"uint"
- Changed
get_series_version7 fields changed- changed
Input schema / $defs / Index / descriptionPrevious value: -"Aggregation dimension for querying series. Includes time-based (date, week, month, year),\nblock-based (height, tx_index), and address/output type indexes."New value: +"Aggregation dimension for querying series. Includes time-based (date, week, month, year), block-based (height, tx_index), and address/output type indexes." - changed
Input schema / $defs / Index / enumPrevious value: -[ - "minute10", - "minute30", - "hour1", - "hour4", - "hour12", - "day1", - "day3", - "week1", - "month1", - "month3", - "month6", - "year1", - "year10", - "halving", - "epoch", - "height", - "tx_index", - "txin_index", - "txout_index", - "empty_output_index", - "op_return_index", - "p2a_addr_index", - "p2ms_output_index", - "p2pk33_addr_index", - "p2pk65_addr_index", - "p2pkh_addr_index", - "p2sh_addr_index", - "p2tr_addr_index", - "p2wpkh_addr_index", - "p2wsh_addr_index", - "unknown_output_index", - "funded_addr_index", - "empty_addr_index", - "extended_empty_addr_index" -]New value: +[ + "minute10", + "minute30", + "hour1", + "hour4", + "hour12", + "day1", + "day3", + "week1", + "month1", + "month3", + "month6", + "year1", + "year10", + "halving_epoch", + "difficulty_epoch", + "height", + "tx_index", + "txin_index", + "txout_index", + "empty_script_output_index", + "op_return_output_index", + "p2a_address_index", + "p2ms_output_index", + "p2pk33_address_index", + "p2pk65_address_index", + "p2pkh_address_index", + "p2sh_address_index", + "p2tr_address_index", + "p2wpkh_address_index", + "p2wsh_address_index", + "unknown_script_output_index" +] - removed
Input schema / $defs / SeriesName / descriptionRemoved value: -"Series name" - added
Input schema / $defs / SeriesName / patternAdded value: +"^[a-z0-9_]+$" - removed
Input schema / properties / index / descriptionRemoved value: -"Aggregation index" - removed
Input schema / properties / series / descriptionRemoved value: -"Series name" - removed
Output schema / $defs / Version / formatRemoved value: -"uint32"
- Changed
get_sync_status3 fields changed- removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / SyncStatus / properties / last_indexed_at / formatAdded value: +"date-time" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Changed
get_transaction_times10 fields changed- changed
Input schema / $defs / Txid / descriptionPrevious value: -"Transaction ID (hash)"New value: +"A transaction ID: its hash." - added
Input schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Input schema / properties / txId[]Removed value: -{ - "description": "Transaction IDs to look up (max 250 per request).", - "items": { - "$ref": "#/$defs/Txid" - }, - "type": "array" -} - added
Input schema / properties / txidsAdded value: +{ + "description": "Transaction IDs to look up (max 100 per request).", + "items": { + "$ref": "#/$defs/Txid" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "txId[]" -]New value: +[ + "txids" +] - added
Output schema / $defsAdded value: +{ + "Timestamp": { + "minimum": 0, + "type": "integer" + } +} - added
Output schema / items / $refAdded value: +"#/$defs/Timestamp" - removed
Output schema / items / formatRemoved value: -"uint64" - removed
Output schema / items / minimumRemoved value: -0 - removed
Output schema / items / typeRemoved value: -"integer"
- Changed
get_tx31 fields changed- changed
Input schema / $defs / Txid / descriptionPrevious value: -"Transaction ID (hash)"New value: +"A transaction ID: its hash." - added
Input schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / AddrRemoved value: -{ - "type": "string" -} - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / HexAdded value: +{ + "pattern": "^([0-9a-f]{2})*$", + "type": "string" +} - removed
Output schema / $defs / RawLockTime / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / SigOps / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - removed
Output schema / $defs / Transaction / properties / size / formatRemoved value: -"uint" - added
Output schema / $defs / Transaction / properties / status / $refAdded value: +"#/$defs/TxStatus" - removed
Output schema / $defs / Transaction / properties / status / allOfRemoved value: -[ - { - "$ref": "#/$defs/TxStatus" - } -] - added
Output schema / $defs / TxIn / properties / scriptsig / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxIn / properties / scriptsig / typeRemoved value: -"string" - removed
Output schema / $defs / TxIn / properties / sequence / formatRemoved value: -"uint32" - removed
Output schema / $defs / TxIn / properties / witness / allOfRemoved value: -[ - { - "$ref": "#/$defs/Witness" - } -] - added
Output schema / $defs / TxIn / properties / witness / itemsAdded value: +{ + "$ref": "#/$defs/Hex" +} - added
Output schema / $defs / TxIn / properties / witness / typeAdded value: +"array" - removed
Output schema / $defs / TxIndex / formatRemoved value: -"uint32" - added
Output schema / $defs / TxOut / properties / scriptpubkey / allOfAdded value: +[ + { + "$ref": "#/$defs/Hex" + } +] - removed
Output schema / $defs / TxOut / properties / scriptpubkey / typeRemoved value: -"string" - changed
Output schema / $defs / TxOut / properties / scriptpubkey_address / allOfPrevious value: -[ - { - "$ref": "#/$defs/Addr" - } -]New value: +[ + { + "$ref": "#/$defs/Address" + } +] - removed
Output schema / $defs / TxVersionRaw / formatRemoved value: -"int32" - added
Output schema / $defs / TxVersionRaw / minimumAdded value: +0 - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Vout / formatRemoved value: -"uint16" - removed
Output schema / $defs / Vout / maximumRemoved value: -65535 - removed
Output schema / $defs / Weight / formatRemoved value: -"uint32" - removed
Output schema / $defs / WitnessRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -}
- Removed
get_tx_by_index - Changed
get_tx_hex3 fields changed- changed
Input schema / $defs / Txid / descriptionPrevious value: -"Transaction ID (hash)"New value: +"A transaction ID: its hash." - added
Input schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "Hex": { + "pattern": "^([0-9a-f]{2})*$", + "type": "string" + } + }, + "$ref": "#/$defs/Hex", + "$schema": "https://json-schema.org/draft/2020-12/schema" +}
- Changed
get_tx_merkle_proof9 fields changed- changed
Input schema / $defs / Txid / descriptionPrevious value: -"Transaction ID (hash)"New value: +"A transaction ID: its hash." - added
Input schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - added
Output schema / $defs / MerkleNodeAdded value: +{ + "pattern": "^[0-9a-f]{64}$", + "type": "string" +} - added
Output schema / $defs / MerkleProof / properties / block_height / $refAdded value: +"#/$defs/Height" - removed
Output schema / $defs / MerkleProof / properties / block_height / allOfRemoved value: -[ - { - "$ref": "#/$defs/Height" - } -] - added
Output schema / $defs / MerkleProof / properties / merkle / items / $refAdded value: +"#/$defs/MerkleNode" - removed
Output schema / $defs / MerkleProof / properties / merkle / items / typeRemoved value: -"string" - removed
Output schema / $defs / MerkleProof / properties / pos / formatRemoved value: -"uint"
- Changed
get_tx_merkleblock_proof3 fields changed- changed
Input schema / $defs / Txid / descriptionPrevious value: -"Transaction ID (hash)"New value: +"A transaction ID: its hash." - added
Input schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "Hex": { + "pattern": "^([0-9a-f]{2})*$", + "type": "string" + } + }, + "$ref": "#/$defs/Hex", + "$schema": "https://json-schema.org/draft/2020-12/schema" +}
- Changed
get_tx_outspend11 fields changed- changed
Input schema / $defs / Txid / descriptionPrevious value: -"Transaction ID (hash)"New value: +"A transaction ID: its hash." - added
Input schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - changed
Input schema / $defs / Vout / descriptionPrevious value: -"Index of the output being spent in the previous transaction"New value: +"Index of the output being spent in the previous transaction (coinbase inputs: 4294967295)" - removed
Input schema / $defs / Vout / formatRemoved value: -"uint16" - removed
Input schema / $defs / Vout / maximumRemoved value: -65535 - removed
Input schema / properties / txid / descriptionRemoved value: -"Transaction ID" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Vin / formatRemoved value: -"uint16"
- Changed
get_tx_outspends7 fields changed- changed
Input schema / $defs / Txid / descriptionPrevious value: -"Transaction ID (hash)"New value: +"A transaction ID: its hash." - added
Input schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Vin / formatRemoved value: -"uint16"
- Changed
get_tx_rbf8 fields changed- changed
Input schema / $defs / Txid / descriptionPrevious value: -"Transaction ID (hash)"New value: +"A transaction ID: its hash." - added
Input schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / FeeRate / formatRemoved value: -"double" - removed
Output schema / $defs / ReplacementNode / properties / interval / formatRemoved value: -"uint32" - removed
Output schema / $defs / Sats / formatRemoved value: -"uint64" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32" - added
Output schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / VSize / formatRemoved value: -"uint64"
- Changed
get_tx_status5 fields changed- changed
Input schema / $defs / Txid / descriptionPrevious value: -"Transaction ID (hash)"New value: +"A transaction ID: its hash." - added
Input schema / $defs / Txid / patternAdded value: +"^[0-9a-f]{64}$" - added
Output schema / $defs / BlockHash / patternAdded value: +"^[0-9a-f]{64}$" - removed
Output schema / $defs / Height / formatRemoved value: -"uint32" - removed
Output schema / $defs / Timestamp / formatRemoved value: -"uint32"
- Added
get_txid_by_index - Changed
get_urpd39 fields changed- removed
Input schema / $defs / CohortRemoved value: -{ - "description": "URPD cohort identifier. Use `GET /api/urpd` to list available cohorts.\n\nValidated at construction: non-empty, ASCII `[a-z0-9_]+`. Matches the\nschemars enum value set; the type therefore proves \"this is a valid\ncohort name\" wherever a `Cohort` is held.", - "enum": [ - "all", - "sth", - "lth", - "utxos_under_1h_old", - "utxos_1h_to_1d_old", - "utxos_1d_to_1w_old", - "utxos_1w_to_1m_old", - "utxos_1m_to_2m_old", - "utxos_2m_to_3m_old", - "utxos_3m_to_4m_old", - "utxos_4m_to_5m_old", - "utxos_5m_to_6m_old", - "utxos_6m_to_9m_old", - "utxos_9m_to_1y_old", - "utxos_1y_to_18m_old", - "utxos_18m_to_2y_old", - "utxos_2y_to_3y_old", - "utxos_3y_to_4y_old", - "utxos_4y_to_5y_old", - "utxos_5y_to_6y_old", - "utxos_6y_to_7y_old", - "utxos_7y_to_8y_old", - "utxos_8y_to_10y_old", - "utxos_10y_to_12y_old", - "utxos_12y_to_15y_old", - "utxos_over_15y_old" - ], - "type": "string" -} - added
Input schema / $defs / DateAdded value: +{ + "description": "Calendar date in YYYY-MM-DD format.", + "examples": [ + "2009-01-03", + "2024-04-20" + ], + "format": "date", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / $defs / HeightAdded value: +{ + "description": "A block height: how many blocks came before it.", + "examples": [ + 0, + 210000, + 420000, + 840000 + ], + "minimum": 0, + "type": "integer" +} - added
Input schema / $defs / HeightOrDateAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/Height" + }, + { + "$ref": "#/$defs/Date" + } + ], + "description": "A confirmed point of the chain: a block height (`840000`) or a UTC calendar day (`YYYY-MM-DD`)." +} - changed
Input schema / $defs / UrpdAggregation / descriptionPrevious value: -"Aggregation strategy for URPD buckets.\nOptions: raw (no aggregation), lin200/lin500/lin1000 (linear $200/$500/$1000),\nlog10/log50/log100/log200/log500/log1000/log2000 (logarithmic with 10/50/100/200/500/1000/2000 buckets per decade)."New value: +"Aggregation strategy for URPD buckets.\nOptions: raw (no aggregation), lin200/lin500/lin1000 (linear $200/$500/$1000),\nlog10/log50/log100/log200/log500/log1000/log2000 (logarithmic, that many buckets per decade)." - added
Input schema / $defs / UrpdCohortAdded value: +{ + "description": "A URPD cohort, by its series' prefix: an age aggregate (`all`, `sth`, `lth`, `age_under_4m`, ...) or an age band (`age_under_1h`, `age_1h_to_1d`, ...).", + "enum": [ + "all", + "sth", + "lth", + "age_under_4m", + "age_under_6m", + "age_over_4m", + "age_over_6m", + "age_under_1h", + "age_1h_to_1d", + "age_1d_to_1w", + "age_1w_to_1m", + "age_1m_to_2m", + "age_2m_to_3m", + "age_3m_to_4m", + "age_4m_to_5m", + "age_5m_to_6m", + "age_6m_to_9m", + "age_9m_to_1y", + "age_1y_to_18m", + "age_18m_to_2y", + "age_2y_to_3y", + "age_3y_to_4y", + "age_4y_to_5y", + "age_5y_to_6y", + "age_6y_to_7y", + "age_7y_to_8y", + "age_8y_to_10y", + "age_10y_to_12y", + "age_12y_to_15y", + "age_over_15y" + ], + "type": "string" +} - changed
Input schema / $defs / UrpdWeight / descriptionPrevious value: -"Weighting applied to a URPD: raw (unweighted), cointime, or coinflow."New value: +"The weight applied to a URPD's age bands: `none` (every satoshi counts once), `wakefulness` (each band\nweighted by the share of its coin days already consumed, Cointime's; the distribution behind the\n`*_awake_*` series) or `mobility` (each band weighted by the estimated probability its coins are ever\nspent, Coinflow's; behind `*_mobile_*`)." - changed
Input schema / $defs / UrpdWeight / enumPrevious value: -[ - "raw", - "cointime", - "coinflow" -]New value: +[ + "none", + "wakefulness", + "mobility" +] - added
Input schema / properties / agg / defaultAdded value: +"raw" - changed
Input schema / properties / agg / descriptionPrevious value: -"Aggregation strategy. Default: raw (no aggregation). Accepts `bucket` as alias."New value: +"Aggregation strategy. Default: raw (no aggregation)." - changed
Input schema / properties / cohort / $refPrevious value: -"#/$defs/Cohort"New value: +"#/$defs/UrpdCohort" - added
Input schema / properties / pointAdded value: +{ + "$ref": "#/$defs/HeightOrDate", + "description": "Confirmed block height (`840000`) or UTC calendar day (`YYYY-MM-DD`)" +} - added
Input schema / properties / weight / defaultAdded value: +"none" - changed
Input schema / properties / weight / descriptionPrevious value: -"Supply weighting. Default: raw (unweighted)."New value: +"Supply weighting. Default: none (unweighted)." - changed
Input schema / requiredPrevious value: -[ - "cohort" -]New value: +[ + "cohort", + "point" +] - removed
Output schema / $defs / Bitcoin / formatRemoved value: -"double" - added
Output schema / $defs / BlockHashAdded value: +{ + "pattern": "^[0-9a-f]{64}$", + "type": "string" +} - removed
Output schema / $defs / CohortRemoved value: -{ - "enum": [ - "all", - "sth", - "lth", - "utxos_under_1h_old", - "utxos_1h_to_1d_old", - "utxos_1d_to_1w_old", - "utxos_1w_to_1m_old", - "utxos_1m_to_2m_old", - "utxos_2m_to_3m_old", - "utxos_3m_to_4m_old", - "utxos_4m_to_5m_old", - "utxos_5m_to_6m_old", - "utxos_6m_to_9m_old", - "utxos_9m_to_1y_old", - "utxos_1y_to_18m_old", - "utxos_18m_to_2y_old", - "utxos_2y_to_3y_old", - "utxos_3y_to_4y_old", - "utxos_4y_to_5y_old", - "utxos_5y_to_6y_old", - "utxos_6y_to_7y_old", - "utxos_7y_to_8y_old", - "utxos_8y_to_10y_old", - "utxos_10y_to_12y_old", - "utxos_12y_to_15y_old", - "utxos_over_15y_old" - ], - "type": "string" -} - removed
Output schema / $defs / Dollars / formatRemoved value: -"double" - added
Output schema / $defs / HeightAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Output schema / $defs / Urpd / properties / aggregation / $refAdded value: +"#/$defs/UrpdAggregation" - removed
Output schema / $defs / Urpd / properties / aggregation / allOfRemoved value: -[ - { - "$ref": "#/$defs/UrpdAggregation" - } -] - added
Output schema / $defs / Urpd / properties / buckets / $refAdded value: +"#/$defs/UrpdBuckets" - removed
Output schema / $defs / Urpd / properties / buckets / itemsRemoved value: -{ - "$ref": "#/$defs/UrpdBucket" -} - removed
Output schema / $defs / Urpd / properties / buckets / typeRemoved value: -"array" - changed
Output schema / $defs / Urpd / properties / cohort / $refPrevious value: -"#/$defs/Cohort"New value: +"#/$defs/UrpdCohort" - removed
Output schema / $defs / Urpd / properties / date / $refRemoved value: -"#/$defs/Date" - added
Output schema / $defs / Urpd / properties / date / allOfAdded value: +[ + { + "$ref": "#/$defs/Date" + } +] - added
Output schema / $defs / Urpd / properties / hashAdded value: +{ + "allOf": [ + { + "$ref": "#/$defs/BlockHash" + } + ] +} - added
Output schema / $defs / Urpd / properties / heightAdded value: +{ + "allOf": [ + { + "$ref": "#/$defs/Height" + } + ] +} - added
Output schema / $defs / Urpd / properties / supplyAdded value: +{ + "allOf": [ + { + "$ref": "#/$defs/Bitcoin" + } + ] +} - removed
Output schema / $defs / Urpd / properties / total_supplyRemoved value: -{ - "allOf": [ - { - "$ref": "#/$defs/Bitcoin" - } - ] -} - added
Output schema / $defs / Urpd / properties / weight / $refAdded value: +"#/$defs/UrpdWeight" - removed
Output schema / $defs / Urpd / properties / weight / allOfRemoved value: -[ - { - "$ref": "#/$defs/UrpdWeight" - } -] - changed
Output schema / $defs / Urpd / requiredPrevious value: -[ - "cohort", - "date", - "weight", - "aggregation", - "close", - "total_supply", - "buckets" -]New value: +[ + "height", + "hash", + "date", + "cohort", + "weight", + "aggregation", + "close", + "supply", + "buckets" +] - removed
Output schema / $defs / UrpdBucketRemoved value: -{ - "properties": { - "price_floor": { - "allOf": [ - { - "$ref": "#/$defs/Dollars" - } - ] - }, - "realized_cap": { - "allOf": [ - { - "$ref": "#/$defs/Dollars" - } - ] - }, - "supply": { - "allOf": [ - { - "$ref": "#/$defs/Bitcoin" - } - ] - }, - "unrealized_pnl": { - "allOf": [ - { - "$ref": "#/$defs/Dollars" - } - ] - } - }, - "required": [ - "price_floor", - "supply", - "realized_cap", - "unrealized_pnl" - ], - "type": "object" -} - added
Output schema / $defs / UrpdBucketsAdded value: +{ + "properties": { + "price": { + "items": { + "$ref": "#/$defs/Dollars" + }, + "type": "array" + }, + "realized_cap": { + "items": { + "$ref": "#/$defs/Dollars" + }, + "type": "array" + }, + "supply": { + "items": { + "$ref": "#/$defs/Bitcoin" + }, + "type": "array" + }, + "unrealized_pnl": { + "items": { + "$ref": "#/$defs/Dollars" + }, + "type": "array" + } + }, + "required": [ + "price", + "supply", + "realized_cap", + "unrealized_pnl" + ], + "type": "object" +} - added
Output schema / $defs / UrpdCohortAdded value: +{ + "enum": [ + "all", + "sth", + "lth", + "age_under_4m", + "age_under_6m", + "age_over_4m", + "age_over_6m", + "age_under_1h", + "age_1h_to_1d", + "age_1d_to_1w", + "age_1w_to_1m", + "age_1m_to_2m", + "age_2m_to_3m", + "age_3m_to_4m", + "age_4m_to_5m", + "age_5m_to_6m", + "age_6m_to_9m", + "age_9m_to_1y", + "age_1y_to_18m", + "age_18m_to_2y", + "age_2y_to_3y", + "age_3y_to_4y", + "age_4y_to_5y", + "age_5y_to_6y", + "age_6y_to_7y", + "age_7y_to_8y", + "age_8y_to_10y", + "age_10y_to_12y", + "age_12y_to_15y", + "age_over_15y" + ], + "type": "string" +} - changed
Output schema / $defs / UrpdWeight / enumPrevious value: -[ - "raw", - "cointime", - "coinflow" -]New value: +[ + "none", + "wakefulness", + "mobility" +]
- Removed
get_urpd_at - Added
get_urpd_latest - Added
get_utxo_set_diff - Added
list_indexes - Changed
list_series15 fields changed- added
Input schema / properties / page / defaultAdded value: +0 - changed
Input schema / properties / page / descriptionPrevious value: -"Pagination index"New value: +"Zero-based page number (default: 0)" - removed
Input schema / properties / page / formatRemoved value: -"uint" - added
Input schema / properties / per_page / defaultAdded value: +1000 - changed
Input schema / properties / per_page / descriptionPrevious value: -"Results per page (default: 1000, max: 1000)"New value: +"Results per page, 1 to 1,000 (default: 1000)" - removed
Input schema / properties / per_page / formatRemoved value: -"uint" - added
Input schema / properties / per_page / maximumAdded value: +1000 - changed
Input schema / properties / per_page / minimumPrevious value: -0New value: +1 - removed
Output schema / $defs / PaginatedSeries / properties / current_page / formatRemoved value: -"uint" - removed
Output schema / $defs / PaginatedSeries / properties / max_page / formatRemoved value: -"uint" - removed
Output schema / $defs / PaginatedSeries / properties / per_page / formatRemoved value: -"uint" - added
Output schema / $defs / PaginatedSeries / properties / series / items / $refAdded value: +"#/$defs/SeriesName" - removed
Output schema / $defs / PaginatedSeries / properties / series / items / typeRemoved value: -"string" - removed
Output schema / $defs / PaginatedSeries / properties / total_count / formatRemoved value: -"uint" - added
Output schema / $defs / SeriesNameAdded value: +{ + "pattern": "^[a-z0-9_]+$", + "type": "string" +}
- Changed
list_urpd_cohorts3 fields changed- removed
Output schema / $defs / CohortRemoved value: -{ - "enum": [ - "all", - "sth", - "lth", - "utxos_under_1h_old", - "utxos_1h_to_1d_old", - "utxos_1d_to_1w_old", - "utxos_1w_to_1m_old", - "utxos_1m_to_2m_old", - "utxos_2m_to_3m_old", - "utxos_3m_to_4m_old", - "utxos_4m_to_5m_old", - "utxos_5m_to_6m_old", - "utxos_6m_to_9m_old", - "utxos_9m_to_1y_old", - "utxos_1y_to_18m_old", - "utxos_18m_to_2y_old", - "utxos_2y_to_3y_old", - "utxos_3y_to_4y_old", - "utxos_4y_to_5y_old", - "utxos_5y_to_6y_old", - "utxos_6y_to_7y_old", - "utxos_7y_to_8y_old", - "utxos_8y_to_10y_old", - "utxos_10y_to_12y_old", - "utxos_12y_to_15y_old", - "utxos_over_15y_old" - ], - "type": "string" -} - added
Output schema / $defs / UrpdCohortAdded value: +{ + "enum": [ + "all", + "sth", + "lth", + "age_under_4m", + "age_under_6m", + "age_over_4m", + "age_over_6m", + "age_under_1h", + "age_1h_to_1d", + "age_1d_to_1w", + "age_1w_to_1m", + "age_1m_to_2m", + "age_2m_to_3m", + "age_3m_to_4m", + "age_4m_to_5m", + "age_5m_to_6m", + "age_6m_to_9m", + "age_9m_to_1y", + "age_1y_to_18m", + "age_18m_to_2y", + "age_2y_to_3y", + "age_3y_to_4y", + "age_4y_to_5y", + "age_5y_to_6y", + "age_6y_to_7y", + "age_7y_to_8y", + "age_8y_to_10y", + "age_10y_to_12y", + "age_12y_to_15y", + "age_over_15y" + ], + "type": "string" +} - changed
Output schema / items / $refPrevious value: -"#/$defs/Cohort"New value: +"#/$defs/UrpdCohort"
- Removed
list_urpd_dates - Changed
search_series15 fields changed- removed
Input schema / $defsRemoved value: -{ - "Limit": { - "description": "Maximum number of results to return. Defaults to 100 if not specified.", - "examples": [ - 1, - 10, - 100 - ], - "format": "uint", - "minimum": 0, - "type": "integer" - }, - "SeriesName": { - "description": "Series name", - "examples": [ - "price_close", - "market_cap", - "realized_price" - ], - "type": "string" - } -} - removed
Input schema / properties / limit / $refRemoved value: -"#/$defs/Limit" - added
Input schema / properties / limit / defaultAdded value: +100 - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of results"New value: +"Maximum number of results, 1 to 1,000 (default: 100)" - added
Input schema / properties / limit / examplesAdded value: +[ + 10, + 100 +] - added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / limit / typeAdded value: +"integer" - removed
Input schema / properties / q / $refRemoved value: -"#/$defs/SeriesName" - changed
Input schema / properties / q / descriptionPrevious value: -"Search query string"New value: +"Words to find in series names and descriptions (`realized price`, `mvrv`), in any order" - added
Input schema / properties / q / examplesAdded value: +[ + "realized price" +] - added
Input schema / properties / q / typeAdded value: +"string" - added
Output schema / $defsAdded value: +{ + "SeriesName": { + "pattern": "^[a-z0-9_]+$", + "type": "string" + } +} - added
Output schema / items / $refAdded value: +"#/$defs/SeriesName" - removed
Output schema / items / typeRemoved value: -"string"
- Changed
validate_address7 fields changed- changed
Input schema / properties / address / descriptionPrevious value: -"Bitcoin address to validate (can be any string)"New value: +"Bitcoin address to validate: 2 to 130 letters and digits (a P2PK public key in hex is 130);\nanything else answers 400, as mempool.space does" - changed
Input schema / properties / address / examplesPrevious value: -[ - "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", - "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", - "not-a-valid-addr", - "bc1qinvalid" -]New value: +[ + "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f", + "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", + "notavalidaddr", + "bc1qinvalid" +] - removed
Output schema / $defs / AddrValidationRemoved value: -{ - "properties": { - "address": { - "type": [ - "string", - "null" - ] - }, - "error": { - "type": [ - "string", - "null" - ] - }, - "error_locations": { - "items": { - "format": "uint", - "minimum": 0, - "type": "integer" - }, - "type": [ - "array", - "null" - ] - }, - "isscript": { - "type": [ - "boolean", - "null" - ] - }, - "isvalid": { - "type": "boolean" - }, - "iswitness": { - "type": [ - "boolean", - "null" - ] - }, - "scriptPubKey": { - "type": [ - "string", - "null" - ] - }, - "witness_program": { - "type": [ - "string", - "null" - ] - }, - "witness_version": { - "format": "uint8", - "maximum": 255, - "minimum": 0, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "isvalid" - ], - "type": "object" -} - added
Output schema / $defs / AddressAdded value: +{ + "type": "string" +} - added
Output schema / $defs / AddressValidationAdded value: +{ + "properties": { + "address": { + "anyOf": [ + { + "$ref": "#/$defs/Address" + }, + { + "type": "null" + } + ] + }, + "error": { + "type": [ + "string", + "null" + ] + }, + "error_locations": { + "items": { + "minimum": 0, + "type": "integer" + }, + "type": [ + "array", + "null" + ] + }, + "isscript": { + "type": [ + "boolean", + "null" + ] + }, + "isvalid": { + "type": "boolean" + }, + "iswitness": { + "type": [ + "boolean", + "null" + ] + }, + "scriptPubKey": { + "anyOf": [ + { + "$ref": "#/$defs/Hex" + }, + { + "type": "null" + } + ] + }, + "witness_program": { + "anyOf": [ + { + "$ref": "#/$defs/Hex" + }, + { + "type": "null" + } + ] + }, + "witness_version": { + "maximum": 255, + "minimum": 0, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "isvalid" + ], + "type": "object" +} - added
Output schema / $defs / HexAdded value: +{ + "pattern": "^([0-9a-f]{2})*$", + "type": "string" +} - changed
Output schema / $refPrevious value: -"#/$defs/AddrValidation"New value: +"#/$defs/AddressValidation"
79 tool updates
- First observed
get_address - First observed
get_address_confirmed_txs - First observed
get_address_confirmed_txs_after - First observed
get_address_hash_prefix_matches - First observed
get_address_mempool_txs - First observed
get_address_txs - First observed
get_address_utxos - First observed
get_block - First observed
get_block_by_height - First observed
get_block_by_timestamp - First observed
get_block_fee_rates - First observed
get_block_fees - First observed
get_block_header - First observed
get_block_rewards - First observed
get_block_sizes_weights - First observed
get_block_status - First observed
get_block_tip_hash - First observed
get_block_tip_height - First observed
get_block_txid - First observed
get_block_txs_from_index - First observed
get_block_v1 - First observed
get_blocks - First observed
get_blocks_from_height - First observed
get_blocks_v1 - First observed
get_blocks_v1_from_height - First observed
get_cpfp - First observed
get_difficulty_adjustment - First observed
get_difficulty_adjustments - First observed
get_difficulty_adjustments_by_period - First observed
get_fullrbf_replacements - First observed
get_hashrate - First observed
get_hashrate_by_period - First observed
get_historical_price - First observed
get_indexes - First observed
get_mempool - First observed
get_mempool_blocks - First observed
get_mempool_hash - First observed
get_mempool_recent - First observed
get_oracle_histogram_outputs - First observed
get_oracle_histogram_outputs_live - First observed
get_oracle_histogram_payments - First observed
get_oracle_histogram_payments_live - First observed
get_pool - First observed
get_pool_blocks - First observed
get_pool_blocks_from - First observed
get_pool_hashrate - First observed
get_pool_stats - First observed
get_pools - First observed
get_pools_hashrate - First observed
get_pools_hashrate_by_period - First observed
get_precise_fees - First observed
get_prices - First observed
get_replacements - First observed
get_reward_stats - First observed
get_series - First observed
get_series_bulk - First observed
get_series_count - First observed
get_series_info - First observed
get_series_latest - First observed
get_series_len - First observed
get_series_version - First observed
get_sync_status - First observed
get_transaction_times - First observed
get_tx - First observed
get_tx_by_index - First observed
get_tx_hex - First observed
get_tx_merkle_proof - First observed
get_tx_merkleblock_proof - First observed
get_tx_outspend - First observed
get_tx_outspends - First observed
get_tx_rbf - First observed
get_tx_status - First observed
get_urpd - First observed
get_urpd_at - First observed
list_series - First observed
list_urpd_cohorts - First observed
list_urpd_dates - First observed
search_series - First observed
validate_address
Related MCP Connectors
Read-only market and on-chain data for Bitcoin, Ethereum and more; on-chain from our own nodes.
Bitcoin intelligence API. Pay per call via L402 Lightning (10-200 sats). No accounts needed.
Free read-only crypto whale-tracking & market-data MCP tools across 14 chains. No auth.
Read-only THORChain swap quotes, liquidity pools, and network status.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying public Bitcoin network data including fees, mempool status, hashrate, transactions, address stats, and Lightning network information without requiring API keys.MIT
- AlicenseBqualityDmaintenanceEnables Bitcoin blockchain data retrieval and analysis through free APIs, including transaction, address, market data, and network metrics.123MIT
- AlicenseNot gradedqualityCmaintenanceProvides real Bitcoin full node data via 17 tools, with pay-per-call in USDC on Base mainnet. Free tools include blockchain info, fees, and mempool; paid tools enable transaction tracking, address analysis, and more.MIT
- AlicenseNot gradedqualityDmaintenanceBitcoin data for AI agents. Pay-per-query via x402 micropayments. No API keys. No subscriptions. No tokens.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.