Skip to main content
Glama

Server Details

Query 130+ SQD Portal datasets across blockchains. Discover Tron and resolve heads and timestamps.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
subsquid-labs/portal-mcp-server
GitHub Stars
1
Server Listing
SQD Portal MCP Server

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.5/5 across 28 of 28 tools scored. Lowest: 3.4/5.

Server CoherenceA
Disambiguation4/5

The server separates concerns well: each VM family has distinct analytics, raw query, and OHLC/wallet tools, so most tools have an obvious unique target. The only real overlaps are the generic recent-activity feed versus per-chain raw queries, and query_logs versus query_token_transfers, but the descriptions clearly route agents to the right one.

Naming Consistency4/5

Names follow a clear portal_{area}_{get|query}_{object} pattern for chain-specific tools, with get_* for analytic/summary outputs and query_* for raw records. The consistency is marred by generic helpers such as portal_get_head, portal_list_networks, and portal_resolve_entity, plus occasional debug namespace inconsistencies like portal_debug_query_blocks versus portal_debug_hyperliquid_query_replica_commands.

Tool Count3/5

At 28 tools, this is a heavy surface for any agent to navigate, though the multi-chain scope (EVM, Solana, Bitcoin, Substrate, Hyperliquid plus generic helpers) justifies much of it. Several tools could be consolidated or more aggressively namespaced, so the set feels borderline-to-heavy rather than well-scoped.

Completeness5/5

The surface covers discovery (list_networks, resolve_entity), network status (get_network_info, get_head), analytics and raw queries for every supported VM family, plus specialized features like token transfers, OHLC, wallet summaries, and debug block/time-to-block helpers. There are no obvious dead ends; even advanced block queries are available under the debug namespace.

Available Tools

28 tools
portal_bitcoin_get_analyticsAnalyze Bitcoin activityA
Read-only
Inspect

Get the big picture for Bitcoin block, fee, and address activity over a recent or explicit window.

COMMON USER ASKS:

  • Bitcoin network snapshot

FIRST CHOICE FOR:

  • the big picture for Bitcoin right now

WHEN TO USE:

  • You want the big picture for Bitcoin right now.

  • You want a network-level Bitcoin snapshot.

  • You care about block cadence, fees, SegWit/Taproot adoption, or activity metrics.

DON'T USE:

  • You need raw transactions rather than network analytics.

EXAMPLES:

  • Bitcoin network snapshot: {"network":"bitcoin-mainnet","timeframe":"1h"}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoExecution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.deep
networkNoNetwork name (default: bitcoin-mainnet)bitcoin-mainnet
to_blockNoEnding block number
timeframeNoTime range: '1h' (~6 blocks), '6h' (~36 blocks), '24h' (~144 blocks). Default: '1h'
from_blockNoStarting block number (use this OR timeframe)
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "6h ago".
response_formatNoResponse format: 'summary' (high-level metrics only), 'compact' (core sections, lighter payload), 'full' (complete analytics).full
include_address_activityNoInclude unique address count and output value (requires extra queries, slower)

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by framing this as network-level aggregation and disclosing the app-rendering caveat that a successful result is 'not proof that the host rendered it.' No contradiction exists.

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

Conciseness4/5

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

The description is well-structured with short headings and scannable bullets, and the core purpose is front-loaded. It loses a point for slight redundancy, as 'the big picture for Bitcoin right now' appears in both FIRST CHOICE FOR and WHEN TO USE.

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

Completeness5/5

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

Given the 9-parameter schema and existing output schema, the description provides an example invocation, explicit usage boundaries, metric categories, and app-integration context. An agent has enough information to select and call the tool correctly without major gaps.

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

Parameters4/5

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

The input schema covers 100% of parameters, so the schema already carries the burden. The description adds value with a concrete example payload and by mapping 'recent or explicit window' to the timeframe versus block/timestamp parameter options, which helps operationalize the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get the big picture for Bitcoin block, fee, and address activity.' It clearly distinguishes itself from raw transaction retrieval through the DON'T USE section, making it easy to separate from sibling tools like portal_bitcoin_query_transactions.

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

Usage Guidelines5/5

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

The WHEN TO USE section enumerates explicit scenarios, and DON'T USE explicitly redirects when raw transactions are needed. This goes beyond implied usage and gives an agent clear criteria for choosing this tool over alternatives.

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

portal_bitcoin_query_transactionsFind Bitcoin transactionsA
Read-only
Inspect

Query raw Bitcoin transactions and optionally attach inputs and outputs inline.

COMMON USER ASKS:

  • Recent Bitcoin transactions

  • Attach inputs and outputs

WHEN TO USE:

  • You need raw Bitcoin transaction records.

  • You want the UTXO envelope without switching to separate input/output tools.

DON'T USE:

  • You only need a quick wallet or network summary.

EXAMPLES:

  • Recent Bitcoin transactions: {"network":"bitcoin-mainnet","timeframe":"1h","limit":20}

  • Attach inputs and outputs: {"network":"bitcoin-mainnet","timeframe":"1h","include_inputs":true,"include_outputs":true,"limit":10}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax transactions to return (default: 20, max: 25)
cursorNoContinuation cursor from a previous response
networkNoNetwork name (default: bitcoin-mainnet). Optional when continuing with cursor.
to_blockNoEnding block number
timeframeNoTime range (e.g., '1h', '24h'). Alternative to from_block/to_block.
from_blockNoStarting block number
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
finalized_onlyNoOnly query finalized blocks
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
include_inputsNoAttach transaction inputs inline
include_outputsNoAttach transaction outputs inline
response_formatNoResponse format: defaults to 'compact' for chat-friendly output. Compact mode keeps inline inputs and outputs in a smaller shape when requested.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the description does not need to repeat safety behavior. It adds useful behavioral context by noting that inputs and outputs can be attached inline, that results are raw transaction records, and that results can open in the SQD Blockchain Activity Explorer. It does not detail pagination or finalization behavior, but those are partly covered by the schema and 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.

Conciseness4/5

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

The description is well-structured with clear sections and front-loaded context. There is some redundancy between 'COMMON USER ASKS' and the 'EXAMPLES' section, but overall every section contributes to selection and invocation guidance.

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

Completeness5/5

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

For a 12-parameter tool with a full input schema, an output schema, and annotations already covering safety, the description is complete enough. It gives selection criteria, exclusions, concrete examples, and post-result context about the SQD app, so an agent has sufficient guidance to call it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by showing concrete parameter combinations in the examples, such as using timeframe with limit and include_inputs/include_outputs together. This helps an agent assemble valid calls even though it does not explain every individual parameter in prose.

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

Purpose5/5

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

The description starts with a specific action ('Query raw Bitcoin transactions') and a clear resource, and differentiates from sibling transaction tools by emphasizing Bitcoin, raw records, and inline inputs/outputs. This makes it easy for an agent to distinguish from EVM/Solana/Substrate transaction tools.

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

Usage Guidelines5/5

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

The 'WHEN TO USE' and 'DON'T USE' sections explicitly state when to choose this tool: for raw Bitcoin transaction records and UTXO envelopes, and when not to: for quick wallet or network summaries. The examples further reinforce valid invocation patterns.

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

portal_debug_hyperliquid_query_replica_commandsInspect Hyperliquid command recordsA
Read-only
Inspect

ADVANCED: Query Hyperliquid replica-command actions such as orders, cancels, and leverage updates.

COMMON USER ASKS:

  • Recent order action

WHEN TO USE:

  • You are debugging Hyperliquid replica-command records.

  • You need raw order-action events instead of fills or analytics.

DON'T USE:

  • You only need public trading activity; fills and analytics are usually the better fit.

EXAMPLES:

  • Recent order action: {"network":"hyperliquid-replica-cmds","timeframe":"5m","limit":1}

ParametersJSON Schema
NameRequiredDescriptionDefault
userNoUser wallet addresses (0x-prefixed, lowercase)
limitNoMax actions to return (1). Replica command payloads can contain large batches, so this exact one-record cursor page is the verified safe response budget.
cursorNoContinuation cursor from a previous response
statusNoFilter by action status
networkNoNetwork name (default: 'hyperliquid-replica-cmds'). Optional when continuing with cursor.hyperliquid-replica-cmds
to_blockNoEnding block number
timeframeNoTime range (e.g., '1h', '24h'). Alternative to from_block/to_block.
from_blockNoStarting block number (use this OR timeframe)
action_typeNoAction types to filter
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
vault_addressNoVault addresses (0x-prefixed, lowercase)
finalized_onlyNoOnly query finalized blocks
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint and non-destructive behavior. The description adds useful context that this exposes raw order-action events for debugging, and the schema notes the one-record limit as a verified safe response budget. This is enough 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.

Conciseness4/5

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

The description uses clear labeled sections and front-loads the core purpose. It is slightly redundant because the COMMON USER ASKS item and the EXAMPLES section both show the same 'recent order action' scenario, but overall it is well-structured and scannable.

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

Completeness4/5

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

Given the 13 parameters, rich schema descriptions, output schema, and annotation coverage, the description is adequate for an agent to understand when and how to call the tool. The example and sibling differentiation compensate for the large optional parameter surface.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The main description does not add parameter-level meaning beyond the schema, though the example illustrates a valid combination of network, timeframe, and limit for a common ask.

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

Purpose5/5

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

The description clearly states it queries Hyperliquid replica-command actions such as orders, cancels, and leverage updates, and explicitly distinguishes this from fills and analytics. This makes it easy to differentiate from sibling tools like portal_hyperliquid_query_fills.

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

Usage Guidelines5/5

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

There is an explicit WHEN TO USE section for debugging replica-command records and needing raw order-action events, plus a DON'T USE section for public trading activity that better fits fills and analytics. This gives an agent concrete decision rules.

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

portal_debug_query_blocksInspect raw blocksA
Read-only
Inspect

ADVANCED: Query raw block records directly for EVM, Solana, or Bitcoin.

COMMON USER ASKS:

  • Recent Base blocks

WHEN TO USE:

  • You are debugging Portal coverage or block-level fields.

  • You need raw block records instead of transactions, logs, or summaries.

DON'T USE:

  • You are answering a normal end-user question; prefer recent activity, time series, or raw transaction tools first.

EXAMPLES:

  • Recent Base blocks: {"network":"base-mainnet","timeframe":"1h","limit":5}

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax blocks to return (default: 20). Note: Lower default for MCP to reduce context usage.
cursorNoContinuation cursor from a previous response
networkNoNetwork name or alias. Optional when continuing with cursor.
to_blockNoEnding block number
timeframeNoTime range (e.g., '1h', '24h'). Alternative to from_block/to_block.
from_blockNoStarting block number (use this OR timeframe)
field_presetNoField preset for EVM datasets: 'minimal' (number+timestamp+gas), 'standard' (+hash+miner+size), 'full' (all block fields). Ignored for Solana/Bitcoin.standard
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
finalized_onlyNoOnly query finalized blocks
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
include_l2_fieldsNoInclude L2-specific fields (auto-detected for L2 chains)

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral framing: 'ADVANCED', direct raw-record access, and debugging-only intent, which clarifies that this is not a typical user-facing query tool. No contradiction with annotations.

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

Conciseness5/5

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

The description is well-structured with short labeled sections (ADVANCED, COMMON USER ASKS, WHEN TO USE, DON'T USE, EXAMPLES). Every section earns its place, the key warning is front-loaded, and there is no redundant repetition of schema content.

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

Completeness5/5

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

For an 11-parameter tool with no required parameters and an output schema, the description covers a common use case, gives an example payload, and provides explicit alternative routing. Output expectations are handled by the output schema, so nothing essential is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds a concrete example mapping network/timeframe/limit to 'Recent Base blocks', which helps the agent select parameters for a common ask beyond the schema definitions.

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

Purpose5/5

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

The description states a specific verb ('Query') and resource ('raw block records') across EVM, Solana, or Bitcoin, and distinguishes itself from derived data like transactions, logs, or summaries. The title 'Inspect raw blocks' reinforces, but the description goes beyond it by naming exact scope and format.

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

Usage Guidelines5/5

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

The description has explicit WHEN TO USE ('debugging Portal coverage or block-level fields', needing raw records) and DON'T USE ('normal end-user question; prefer recent activity, time series, or raw transaction tools first'). It names alternative tool categories and gives routing guidance, so an agent can decide correctly.

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

portal_debug_resolve_time_to_blockMatch a time to a blockA
Read-only
Inspect

ADVANCED: Resolve a timestamp to the nearest indexed block or slot.

COMMON USER ASKS:

  • Resolve one hour ago on Base

  • Resolve an older time on Polkadot

WHEN TO USE:

  • You are debugging timestamp windows or building a manual block-range query.

  • You want to inspect exact versus estimated timestamp-to-block resolution.

DON'T USE:

  • You just want to query by time; most public tools already accept natural timestamps directly.

EXAMPLES:

  • Resolve one hour ago on Base: {"network":"base-mainnet","timestamp":"1h ago"}

  • Resolve an older time on Polkadot: {"network":"polkadot","timestamp":"2026-04-08T12:00:00Z"}

ParametersJSON Schema
NameRequiredDescriptionDefault
networkYesNetwork name or alias
timestampYesUnix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago"

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already provide readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds behavior beyond these annotations by noting that resolution is to the nearest indexed block or slot and that exact versus estimated resolution is part of the debugging purpose.

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

Conciseness5/5

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

The description is well-organized with a one-line definition, common asks, when/when-not to use, and concrete examples. Each section adds value with no filler, and the purpose is front-loaded.

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

Completeness5/5

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

For a two-required-parameter tool with an output schema and complete schema coverage, the description provides enough context and examples to call the tool correctly. It also covers common network examples and the main misuse case.

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

Parameters3/5

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

Schema coverage is 100% and already explains the timestamp formats, including natural language like '1h ago'. The description's examples are useful illustrations but do not materially expand on the parameter semantics already present in the schema.

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

Purpose5/5

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

The opening line states a specific action—resolve a timestamp—and the object is clearly the nearest indexed block or slot. This distinguishes it from sibling query tools like portal_debug_query_blocks and from general time-filtered query tools.

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

Usage Guidelines5/5

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

The description includes explicit WHEN TO USE and DON'T USE sections. It tells the agent when this tool is appropriate and advises against it when natural timestamp querying is already supported by public tools, which is clear routing guidance.

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

portal_evm_get_analyticsAnalyze Ethereum and Base activityA
Read-only
Inspect

Get the big picture for network-wide EVM activity with ranked contracts and compact overview metrics.

COMMON USER ASKS:

  • Top contracts on Base

FIRST CHOICE FOR:

  • the big picture for activity on an EVM network like Base or Optimism

WHEN TO USE:

  • You want the big picture for activity on an EVM network.

  • You want the most active contracts on an EVM network.

  • You want an analytics-style network overview instead of a raw record list.

DON'T USE:

  • You need chart buckets over time rather than ranked entities.

EXAMPLES:

  • Top contracts on Base: {"network":"base-mainnet","timeframe":"1h","limit":10}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoExecution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.deep
limitNoNumber of top contracts to return (default: 10, max: 100)
cursorNoContinuation cursor from a previous response
networkNoNetwork name (supports short names: 'ethereum', 'polygon', 'base', etc.). Optional when continuing with cursor.
timeframeNoOptional natural time window like '1h' or '24h'
num_blocksNoNumber of recent blocks to analyze when timeframe is omitted (default: 50, max: 10000)
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
include_detailsNoInclude sample transaction hashes for each contract

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already cover read-only safety with readOnlyHint=true and destructiveHint=false. The description adds useful behavioral context beyond annotations: it explains the output's relationship to the SQD Blockchain Activity Explorer and cautions that a tool result is not proof the host rendered it. No contradictions found.

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

Conciseness4/5

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

The description is well-structured with action-oriented headings and front-loaded purpose. There is minor redundancy between 'FIRST CHOICE FOR' and 'WHEN TO USE', but every section contributes useful routing or usage information, so it remains efficient for the tool's complexity.

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

Completeness5/5

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

For a tool with 9 optional parameters, a rich schema, and output schema, the description covers the essential decision context: what it returns, when to prefer it over alternatives, when not to use it, and a working example. The app-rendering note also sets correct expectations for downstream behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 9 parameters clearly. The description adds only a single example call showing network, timeframe, and limit together, which is helpful but not substantial enough to raise above the baseline for fully documented schemas.

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

Purpose5/5

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

States a specific verb and resource: 'Get the big picture for network-wide EVM activity with ranked contracts and compact overview metrics.' This clearly distinguishes it from sibling query tools like portal_evm_query_transactions and portal_evm_get_contract_activity, which target raw records or single contracts.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance ('You want the big picture for activity on an EVM network') and a clear exclusion ('DON'T USE: You need chart buckets over time rather than ranked entities'). It also supplies a concrete example for a common ask, making the selection criteria actionable.

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

portal_evm_get_contract_activityReview smart contract activityA
Read-only
Inspect

Summarize what one specific contract has been doing lately, including recent interactions, unique callers, and optional event activity.

COMMON USER ASKS:

  • Contract activity snapshot

FIRST CHOICE FOR:

  • what one specific contract has been doing lately on an EVM network

WHEN TO USE:

  • You want to ask "what has this contract been doing?" and get a contract-level answer.

  • You want a contract-centric activity summary instead of raw records.

  • You need top callers and interaction volume for one contract.

DON'T USE:

  • You need the underlying raw logs or transactions.

  • You want general recent network activity without naming one contract.

EXAMPLES:

  • Contract activity snapshot: {"network":"base-mainnet","contract_address":"0xabc...","timeframe":"24h"}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoExecution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.deep
networkYesNetwork name or alias
timeframeNoAnalysis period as timeframe or block count. Examples: '1h', '24h', '7d', '3d', '1000'.1000
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
include_eventsNoInclude event log summary
contract_addressYesContract address to analyze

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description correctly avoids repeating that. It adds behavioral context beyond annotations: the tool returns a summary rather than raw records, supports optional event activity, and explains the MCP App behavior with 'A tool result is ready for the App but is not proof that the host rendered it.' It omits auth/rate-limit details, but for a read-only summary tool this is a minor gap.

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

Conciseness4/5

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

Well-structured with clear headings and a front-loaded core sentence. The COMMON USER ASKS section is slightly redundant with FIRST CHOICE FOR and EXAMPLES, and the MCP APP note adds length, but overall every major section earns its place and the definition remains scannable.

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

Completeness4/5

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

Given 7 parameters and a rich output schema, the description gives complete orientation: core behavior, selection conditions, exclusions, a concrete example, and app-integration context. It does not explicitly map all time-range alternatives like to_timestamp and from_timestamp, but the schema covers those, so no critical decision is left ambiguous.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the schema already documents all 7 parameters including enums, defaults, and accepted timestamp formats. The description only adds a concrete example with network, contract_address, and timeframe and does not introduce new semantic meaning beyond the schema, which is acceptable.

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

Purpose5/5

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

States a specific verb 'Summarize' with a specific resource 'what one specific contract has been doing lately', plus concrete contents (recent interactions, unique callers, optional event activity). The DON'T USE section contrasts it with raw logs/transactions and general network activity, distinguishing it from siblings like portal_evm_query_logs and portal_get_recent_activity.

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

Usage Guidelines5/5

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

Dedicated WHEN TO USE and DON'T USE sections give explicit decision rules: use when asking 'what has this contract been doing?' or needing top callers and interaction volume for one contract; do not use for raw logs/transactions or general network activity. This is explicit routing to alternatives rather than implied usage.

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

portal_evm_get_contract_deploymentFind a contract deploymentA
Read-only
Inspect

Locate the create trace and parent transaction that deployed a specific EVM contract address within a bounded window.

COMMON USER ASKS:

  • Find BAYC deployment

  • Find recent deployment

  • Find deployment from known range

FIRST CHOICE FOR:

  • who deployed this EVM contract

  • when was this contract deployed

  • what deployment transaction created this contract

WHEN TO USE:

  • You need the deployer, deployment block, deployment timestamp, or deployment transaction for an EVM contract.

  • You can provide a starting block/time window, a contract address, or a supported well-known contract alias such as BAYC/Bored Apes.

  • You want a deployment lookup instead of general contract activity.

DON'T USE:

  • You need all activity for a contract after deployment.

  • The contract is old and no block/time hint is available; provide from_block or from_timestamp first.

EXAMPLES:

  • Find BAYC deployment: {"network":"ethereum-mainnet","contract":"bored apes","from_block":12000000,"to_block":13000000,"scan_order":"earliest"}

  • Find recent deployment: {"network":"base-mainnet","contract_address":"0xabc...","search_depth_blocks":100000}

  • Find deployment from known range: {"network":"ethereum-mainnet","contract_address":"0xabc...","from_block":17000000,"to_block":17100000,"scan_order":"earliest"}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkYesEVM network name or alias, e.g. base, ethereum, arbitrum.
contractNoContract address or a supported well-known alias/name, e.g. "bayc" or "bored apes" on Ethereum.
to_blockNoOptional ending block. Defaults to the indexed head.
timeframeNoOptional recent time window to search, e.g. "24h" or "7d".
from_blockNoOptional starting block. Provide this for older contracts when the deployment is not recent.
scan_orderNoScan latest first for recent deployments, or earliest first when you provide a historical from_block.latest
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "7d ago".
max_scan_blocksNoSafety cap for historical deployment scans. Default: scan the requested window up to 1,000,000 blocks.
contract_addressNoContract address whose deployment transaction should be located.
search_depth_blocksNoWhen no explicit range is given, search this many recent blocks backward from the indexed head.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior5/5

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

Beyond the readOnly/openWorld annotations, the description discloses the bounded-window search, create-trace semantics, alias support, and even the MCP App rendering caveat. It sets accurate expectations without contradicting 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.

Conciseness5/5

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

The description is long, but every section earns its place and the main purpose is front-loaded. Headers and short lines make it scannable for an agent, and the examples are directly reusable as invocation sketches.

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

Completeness5/5

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

Given the rich input schema, output schema, and read-only annotations, the description covers selection, parameter use, examples, and the app-rendering caveat. An agent has everything needed to decide and call this tool correctly.

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

Parameters4/5

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

With 100% schema coverage, the schema already documents parameters, so baseline is 3. The description adds meaningful combinations via examples (e.g., from_block + scan_order='earliest' for old deployments, search_depth_blocks for recent ones) and clarifies alias usage like BAYC/Bored Apes.

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

Purpose5/5

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

The opening sentence names a precise verb+resource: locate the create trace and parent transaction that deployed a specific EVM contract address. The FIRST CHOICE and DON'T USE sections distinguish it from general contract-activity tools and from activity-after-deployment lookups.

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

Usage Guidelines5/5

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

WHEN TO USE, DON'T USE, FIRST CHOICE, and EXAMPLES explicitly state when to call this tool versus looking at general contract activity, and they instruct users to provide from_block/from_timestamp for older contracts. This leaves little room for mis-selection.

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

portal_evm_get_ohlcChart token price historyA
Read-only
Inspect

Build chart-ready EVM OHLC candles plus a recent trade tape from supported DEX event sources, including Uniswap v2-style swaps, Uniswap v3/v4, and Aerodrome Slipstream.

COMMON USER ASKS:

  • Base Uniswap v2-style swap candles

  • Base Uniswap candles

  • Base Uniswap v4 candles

WHEN TO USE:

  • You need OHLC candles for supported EVM event-derived price sources.

  • You want a candle chart and recent trades instead of scalar time-series buckets.

  • You want a Dexscreener-style pool chart with hover-ready candle metadata and a trade tape.

DON'T USE:

  • You only need counts or scalar metrics over time.

  • You want a simple activity chart for a network rather than pool candles.

EXAMPLES:

  • Base Uniswap v2-style swap candles: {"network":"base-mainnet","source":"uniswap_v2_swap","pool_address":"0x","duration":"1h","interval":"5m","price_in":"auto","include_recent_trades":true}

  • Base Uniswap candles: {"network":"base-mainnet","source":"uniswap_v3_swap","pool_address":"0x","duration":"1h","interval":"5m","price_in":"auto"}

  • Base Uniswap v4 candles: {"network":"base-mainnet","source":"uniswap_v4_swap","pool_id":"0x","duration":"1h","interval":"5m","price_in":"auto","include_recent_trades":true}

  • Base Aerodrome Slipstream candles: {"network":"base-mainnet","source":"aerodrome_slipstream_swap","pool_address":"0x","duration":"1h","interval":"5m","price_in":"token1"}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
feeNoOptional Uniswap v4 LP fee in hundredths of a bip, e.g. 3000 for 0.30%.
modeNoExecution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.deep
cursorNoContinuation cursor from a previous candle page
sourceNoWhich event source to build candles from. Prefer swap-derived sources for factual trade prices and volumes. Uniswap v4 uses PoolManager Swap events filtered by pool_id, not a per-pool contract address.uniswap_v3_swap
networkNoEVM network name (default: base-mainnet)base-mainnet
pool_idNoUniswap v4 pool id (bytes32). Optional when you provide the full v4 pool key instead.
durationNoHow much recent history to cover. Accepts compact durations like "1h" or natural phrases like "past 30 minutes".1h
intervalNoCandle interval. auto uses chart-friendly defaults like 1h→5m and 24h→1h.auto
price_inNoChoose which token the displayed price should be expressed in. auto picks the more human-readable quote side.auto
base_tokenNoLegacy orientation input. Prefer price_in instead.
pool_addressNoPool/pair contract address for address-keyed sources like Uniswap v3, Slipstream, or Sync-derived CPMM pools.
tick_spacingNoOptional Uniswap v4 tick spacing. Required with the rest of the pool key when deriving pool_id.
hooks_addressNoOptional Uniswap v4 hooks contract address. Defaults to the zero address when omitted.
token0_symbolNoOptional token0 symbol label for summaries
token1_symbolNoOptional token1 symbol label for summaries
token0_addressNoOptional token0 address to infer known decimals
token1_addressNoOptional token1 address to infer known decimals
token0_decimalsNoOptional token0 decimals for human-readable prices
token1_decimalsNoOptional token1 decimals for human-readable prices
currency0_addressNoOptional Uniswap v4 currency0 address. Use with currency1_address, fee, and tick_spacing to derive pool_id factually.
currency1_addressNoOptional Uniswap v4 currency1 address. Use with currency0_address, fee, and tick_spacing to derive pool_id factually.
recent_trades_limitNoMaximum number of recent trades to return in the trade tape.
pool_manager_addressNoUniswap v4 PoolManager address. Optional on networks with a built-in official Uniswap deployment mapping.
include_recent_tradesNoInclude a recent trade tape for swap-derived sources when factual per-trade amounts are available.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds behavioral value by explaining the output is chart-ready candles plus a trade tape, noting source-specific caveats like Uniswap v4 using PoolManager Swap events filtered by pool_id, and clarifying that an App-ready result is not proof the host rendered it. No contradiction with annotations.

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

Conciseness4/5

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

The description is longer than ideal, but it is well-structured with clear headers (COMMON USER ASKS, WHEN TO USE, DON'T USE, EXAMPLES, MCP APP) and front-loads the core purpose. The examples are lengthy but earned their place given the 24-parameter surface area. Minor redundancy with schema descriptions keeps it from a 5.

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

Completeness5/5

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

Given the tool's complexity (24 params, 5 enums, multiple DEX sources, output schema), the description is remarkably complete. It covers source variants, realistic parameter bundles, source-specific addressing differences, exclusions, and even post-result behavior in the MCP App. The output schema handles return-value details, so nothing essential is missing for an agent to select and invoke this tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaning through concrete JSON examples that show which parameter combinations are relevant per source: pool_address for v2/v3/Aerodrome, pool_id for v4, price_in for Aerodrome, and include_recent_trades for trade tape requests. This is useful beyond what the schema independently provides, though it does not detail every optional parameter.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Build chart-ready EVM OHLC candles plus a recent trade tape from supported DEX event sources.' It names concrete sources (Uniswap v2-style swaps, Uniswap v3/v4, Aerodrome Slipstream) and includes explicit common user asks, making it easy to distinguish from analytics, query, and time-series siblings.

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

Usage Guidelines5/5

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

The WHENTOUSE / DON'T USE sections explicitly define when this tool is appropriate (OHLC candles, chart-ready candle data, recent trade tape) and when it is not (scalar metrics, simple activity charts). These exclusions also name the alternative tool categories, such as time-series or analytics, which gives an agent clear routing guidance.

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

portal_evm_query_logsFind smart contract eventsA
Read-only
Inspect

Query raw EVM logs with address/topic filters, common event aliases, earliest/latest scanning, and optional inline decoding.

COMMON USER ASKS:

  • Recent USDC Transfer logs

  • First recent USDC Transfer log

  • Latest ERC721/pass mint ID and tx hash

FIRST CHOICE FOR:

  • NFT or ERC721 mint lookups such as latest pass minted, token ID, and mint transaction hash

  • contract event questions where the user needs exact event evidence rather than wallet or transaction summaries

WHEN TO USE:

  • You need event logs filtered by contract or topic signature.

  • You want decoded log hints while still keeping the raw log shape available.

  • You want the first or last matching event in a bounded block/time window.

  • You want common event names such as transfer, approval, swap, mint, or burn instead of remembering topic0 hashes.

  • You need the latest ERC721/pass mint in a bounded deployment/recent window: filter Transfer events with topic1 as the zero address, use scan_order=latest, limit=1, and decode=true to expose decoded_log.decoded.token_id plus transaction_hash.

DON'T USE:

  • You only want token transfers, which are easier with the token-transfer tool.

EXAMPLES:

  • Recent USDC Transfer logs: {"network":"base-mainnet","timeframe":"1h","token_symbols":["USDC"],"event":"transfer","limit":20}

  • First recent USDC Transfer log: {"network":"base-mainnet","timeframe":"1h","token_symbols":["USDC"],"event":"transfer","scan_order":"earliest","limit":1}

  • Latest ERC721/pass mint ID and tx hash: {"network":"base-mainnet","from_block":46020000,"to_block":46100000,"addresses":["0xE4E70FdF2Fc1147a7f35c4c5de88E6BeA63eeAfA"],"event":"transfer","topic1":["0x0000000000000000000000000000000000000000000000000000000000000000"],"scan_order":"latest","decode":true,"include_transaction":true,"limit":1}

  • Decode logs inline: {"network":"ethereum-mainnet","timeframe":"1h","topic0":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],"decode":true,"limit":10}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventNoCommon event alias or topic0 hash. Examples: "transfer", "approval", "swap", "sync", "deposit", "withdrawal". Merges with topic0.
limitNoMax logs to return (default: 20, max: 25). This verified ceiling keeps pages within MCP client budgets.
cursorNoContinuation cursor from a previous response
decodeNoDecode known log signatures inline when topics/data are available
topic0NoEvent signatures (topic0). E.g., Transfer = 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
topic1NoTopic1 filter (often: from address in Transfer, indexed parameter 1)
topic2NoTopic2 filter (often: to address in Transfer, indexed parameter 2)
topic3NoTopic3 filter (indexed parameter 3, chain-specific)
networkNoNetwork name or alias. Optional when continuing with cursor.
to_blockNoEnding block number. RECOMMENDED: <10k blocks for fast (<1s) responses. Larger ranges may be slow or timeout.
addressesNoContract addresses to filter (e.g., ['0xUSDC...', '0xDAI...']). IMPORTANT: Always include this or topics for fast queries.
timeframeNoNatural time range such as '5m', '1h', '24h', '7d', or 'past 30 minutes'. Alternative to from_block/to_block.
from_blockNoStarting block number (use this OR timeframe)
scan_orderNoWhich side of the block window to scan first. Use earliest for first-event questions.latest
field_presetNoField preset: 'minimal' (address+topic0+block, ~80% smaller), 'standard' (all topics+timestamp), 'full' (includes raw data hex, largest). Use 'minimal' to reduce context usage.standard
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
token_symbolsNoToken symbols to resolve via open token-list data and merge into addresses, e.g. ["USDC"].
finalized_onlyNoOnly query finalized blocks
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
max_scan_blocksNoMaximum blocks to inspect for bounded earliest/latest scans. Sparse latest searches default to 25,000 blocks to stay within MCP request timeouts; raise only when deeper coverage is worth the added latency.
response_formatNoResponse format: defaults to 'compact' for chat-friendly output, or stays 'full' when inline transaction context is requested. Use 'summary' for counting or categorizing.
include_transactionNoInclude parent transaction data
include_transaction_logsNoInclude all logs from parent transactions
max_token_symbol_matchesNoMaximum token-list matches to include per token symbol. Use addresses for deterministic single-contract filters.
include_transaction_tracesNoInclude traces for parent transactions

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already establish read-only, non-destructive, open-world behavior, so the description only needs to add context. It adds meaningful behavioral detail: results are raw logs with optional decoded hints, scanning can begin from earliest or latest, and the MCP APP note discloses that a successful result is not proof the host rendered it.

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

Conciseness5/5

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

The description is long but highly structured with labeled sections: COMMON USER ASKS, FIRST CHOICE FOR, WHEN TO USE, DON'T USE, EXAMPLES, and MCP APP. The opening sentence is an efficient summary, and every bullet or example adds practical information without filler.

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

Completeness5/5

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

For a 25-parameter tool with an output schema and strong annotations, this description covers user intents, selection criteria, exclusions, concrete parameter recipes, and app-integration caveats. An agent has everything needed to call the tool correctly and avoid common mistakes.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real value beyond the schema. It explains common event aliases, provides complete JSON examples, and shows how to combine topic1, scan_order, decode, and limit to get ERC721 mint token_id and transaction_hash.

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

Purpose5/5

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

Description opens with a specific verb and resource ('Query raw EVM logs') and lists distinctive capabilities: address/topic filters, common event aliases, earliest/latest scanning, and inline decoding. It also explicitly names what it is not for ('DON'T USE: You only want token transfers'), helping agents distinguish it from siblings like portal_evm_query_token_transfers and portal_evm_query_transactions.

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

Usage Guidelines5/5

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

WHEN TO USE and DON'T USE sections give explicit selection criteria, including the alternative token-transfer tool. Examples map common user asks to concrete parameter choices, so an agent knows when to call this tool versus a sibling.

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

portal_evm_query_token_transfersFind token transfersA
Read-only
Inspect

Query token-transfer activity on EVM without needing to remember Transfer event signatures. Best for "did token X move?" and asset-tracing questions.

COMMON USER ASKS:

  • Recent USDC transfers

  • First recent USDC transfer

WHEN TO USE:

  • You want ERC-20 style transfer activity filtered by token, sender, or recipient.

  • You want the fastest answer to a token movement question like "did USDC move?".

  • You are tracing suspicious, stolen, bridged, or exploit-related token movement and need sender/recipient/transaction pivots.

  • You want the easiest raw transfer query on an EVM network.

  • You need the first matching transfer in a bounded window without typing the Transfer topic hash.

DON'T USE:

  • You need arbitrary event logs beyond token transfers.

EXAMPLES:

  • Recent USDC transfers: {"network":"base-mainnet","timeframe":"1h","token_symbols":["USDC"],"limit":20}

  • First recent USDC transfer: {"network":"base-mainnet","timeframe":"1h","token_symbols":["USDC"],"scan_order":"earliest","limit":1}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax transfers
cursorNoContinuation cursor from a previous response
networkNoNetwork name or alias. Optional when continuing with cursor.
to_blockNoEnding block number. RECOMMENDED: <10k blocks for fast responses.
timeframeNoTime range (e.g., '1h', '24h'). Alternative to block numbers.
from_blockNoStarting block number
scan_orderNoWhich side of the block window to scan first. Use earliest for first-transfer questions.latest
to_addressesNoRecipient addresses
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
token_symbolsNoToken symbols to resolve via open token-list data, e.g. ["USDC"]. Merges with token_addresses.
from_addressesNoSender addresses
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
token_addressesNoToken contract addresses
include_token_infoNoInclude token metadata (symbol, decimals) inline. Avoids separate token metadata lookups.
max_token_symbol_matchesNoMaximum token-list matches to include per token symbol. Use token_addresses for deterministic single-contract filters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already establish readOnly/openWorld/non-destructive behavior. The description adds useful context beyond that: it explains the convenience of avoiding Transfer topic hashes, supports earliest-scan ordering for 'first transfer' questions, and discloses the MCP App integration behavior including the caveat that a result is not proof the host rendered it.

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

Conciseness4/5

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

The description is longer than average but well-organized with clear headers: purpose, common asks, when to use, don't use, examples, and app behavior. The first sentence is front-loaded and efficient, though the 'COMMON USER ASKS' and 'EXAMPLES' sections partially overlap, making it slightly less concise than it could be.

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

Completeness5/5

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

For a tool with 15 optional parameters and an output schema, the description provides robust selection guidance, exclusions, examples, and post-result app context. The output schema covers return-value expectations, so the description does not need to restate them; nothing essential for correct invocation is missing.

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

Parameters4/5

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

The input schema already documents all 15 parameters thoroughly, so the baseline is 3. The description adds value with concrete examples mapping common user intents to parameter combinations, such as token_symbols + timeframe + limit for 'recent USDC transfers' and scan_order:'earliest' for 'first recent USDC transfer', plus the filter-by-token/sender/recipient guidance.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Query token-transfer activity on EVM' and immediately differentiates itself by noting it removes the need to remember Transfer event signatures. The WHEN TO USE bullets further pin it to ERC-20 transfer filtering and asset-tracing, which clearly separates it from siblings like portal_evm_query_logs and portal_evm_query_transactions.

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

Usage Guidelines5/5

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

The description has an explicit WHEN TO USE section with five concrete conditions and a DON'T USE section that rules out arbitrary event logs. It tells the agent exactly when this is the fastest and easiest option and when to go elsewhere, leaving little to inference.

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

portal_evm_query_transactionsFind Ethereum and Base transactionsA
Read-only
Inspect

Query raw EVM transactions with optional logs, traces, state-diff context, and evidence pivots for transaction-level investigations.

COMMON USER ASKS:

  • Recent Base transactions

  • Filter by sender

  • First EIP-2930 transaction from Berlin fork

WHEN TO USE:

  • You need raw transaction records on an EVM network.

  • You want chain-specific transaction fields or include flags that convenience tools do not expose.

  • You need exact transaction evidence for an investigation, including sender, receiver, transaction hash, logs, traces, or failed calls.

  • You need to find the first transaction matching a raw field condition such as transaction type 0x1 from a known block.

  • You need top-N raw transactions ranked by value, gas used, or effective gas price.

  • You need top senders or receivers from a bounded transaction window.

  • You want common method names such as transfer, approve, deposit, or withdraw instead of remembering sighashes.

  • You want calls to a token contract by symbol, such as transfer calls to USDC, without hardcoding token addresses.

DON'T USE:

  • You only need a quick recent feed or wallet-level summary.

EXAMPLES:

  • Recent Base transactions: {"network":"base-mainnet","timeframe":"1h","limit":20}

  • Filter by sender: {"network":"ethereum-mainnet","timeframe":"6h","from_addresses":["0xabc..."],"limit":20}

  • First EIP-2930 transaction from Berlin fork: {"network":"ethereum-mainnet","from_block":12244000,"transaction_type":"0x1","scan_order":"earliest","limit":1,"field_preset":"minimal"}

  • Largest recent calls to a resolved token contract: {"network":"base-mainnet","timeframe":"1h","to_token_symbols":["USDC"],"method":"transfer","order_by":"gas_used_desc","limit":5}

  • Top senders by transaction count: {"network":"base-mainnet","timeframe":"1h","aggregate_by":"sender","aggregate_metric":"count","limit":10}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax transactions (default: 20, max: 25). This verified ceiling keeps pages within MCP client budgets.
cursorNoContinuation cursor from a previous response
methodNoFILTER: Common EVM method alias or 4-byte sighash. Examples: "transfer", "approve", "transferFrom", "deposit", "withdraw". Merges with sighash.
networkNoNetwork name or alias. Optional when continuing with cursor.
sighashNoFILTER: Function sighash (4-byte hex, e.g., '0xa9059cbb' for transfer). Optional if limit <=100.
order_byNoOptional ranking for top-N questions. Use value_desc, gas_used_desc, or effective_gas_price_desc.chronological
to_blockNoEnding block number. RECOMMENDED: <5k blocks for fast (<500ms) responses. Larger ranges may be slow.
timeframeNoNatural time range such as '5m', '1h', '24h', '7d', or 'past 30 minutes'. Alternative to from_block/to_block. Large ranges are allowed with a low limit (<=100).
from_blockNoStarting block number (use this OR timeframe). Large ranges OK with low limit (<=100).
last_nonceNoMaximum nonce
scan_orderNoWhich side of the block window to scan first. Normal previews default to latest; transaction_type searches default to earliest, so "first tx type 0x1 from block N" scans forward from from_block.
first_nonceNoMinimum nonce
aggregate_byNoOptional bounded aggregation for top sender/receiver questions. Returns ranked address rows instead of raw transactions.
field_presetNoField preset: 'minimal' (from/to/value+block, ~70% smaller), 'standard' (hash+gas+timestamp), 'full' (includes input data hex, largest). Use 'minimal' to reduce context usage.standard
include_logsNoInclude logs emitted by transactions
min_gas_usedNoFILTER/RANKING: Minimum receipt gasUsed. Accepts decimal or hex string.
to_addressesNoFILTER: Recipient addresses (typically contracts being called, or wallets receiving ETH). Optional if limit <=100.
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
min_value_weiNoFILTER/RANKING: Minimum native token value in wei. Accepts decimal or hex string.
finalized_onlyNoOnly query finalized blocks
from_addressesNoFILTER: Sender addresses (wallets or contracts that initiated the transaction). Optional if limit <=100.
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
include_tracesNoInclude traces for transactions
max_scan_blocksNoSafety cap for first/last/ranked client-side scans. Default: min(window, 10000 blocks).
response_formatNoResponse format: defaults to 'compact' for chat-friendly output, or stays 'full' when inline logs, traces, or state diffs are requested. Use 'summary' for counting or profiling.
aggregate_metricNoMetric used with aggregate_by. count ranks by tx count; value by total native value; gas_used by total gas used; effective_gas_price by max effective gas price.count
to_token_symbolsNoResolve token symbols via open token-list data and merge them into to_addresses, e.g. transfer/approve calls to USDC.
transaction_typeNoFILTER: EVM transaction type. Accepts decimal or hex strings such as 0, 1, 2, "0x0", "0x1", "0x2". Applied client-side while streaming Portal results; use with scan_order="earliest" and from_block to find the first typed transaction.
contract_creationNoFILTER: true returns contract-creation transactions; false excludes them. Useful for "first contract creation from this wallet".
include_l2_fieldsNoInclude L2-specific fields
from_token_symbolsNoResolve token symbols via open token-list data and merge them into from_addresses. Rare, but useful for token-contract-originated transactions.
transaction_statusNoFILTER: Transaction receipt status. Use "success"/1 or "failed"/0 for failed/reverted transaction searches.
include_state_diffsNoInclude state diffs caused by transactions
max_token_symbol_matchesNoMaximum token-list matches to include per token symbol. Use from_addresses/to_addresses for deterministic single-contract filters.
min_effective_gas_price_weiNoFILTER/RANKING: Minimum effectiveGasPrice in wei. Accepts decimal or hex string.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already mark this read-only and non-destructive; the description adds useful context about raw evidence retrieval, ranking, aggregation, and the MCP App result-rendering caveat. It does not contradict the annotations and supplies more behavioral color than the schema alone, though it omits details like pagination/cursor behavior that might matter in practice.

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

Conciseness4/5

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

The description is well-structured with clear sections and front-loaded purpose, but it is lengthy and the COMMON USER ASKS list partially overlaps with the EXAMPLES section. The MCP APP paragraph is somewhat tangential to invoking the tool correctly, though not wastefully so.

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

Completeness5/5

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

For a tool with 35 optional parameters, no required fields, and an output schema, the description covers the essential decision space: raw transaction needs, common filters, special first/ranked/aggregate queries, token-symbol resolution, and when not to use it. Combined with 100% schema coverage and an output schema, an agent has enough context to select and call this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds real value by showing parameter combinations through JSON examples (e.g., transaction_type + scan_order + from_block for the first EIP-2930 tx, and to_token_symbols + method + order_by for token calls). It doesn't exhaustively explain all 35 parameters, but it doesn't need to because the schema already does.

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

Purpose4/5

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

The description opens with a specific verb and resource—'Query raw EVM transactions'—and clearly frames transaction-level investigations with optional logs, traces, and state diffs. It differentiates itself from 'convenience tools' but does not explicitly name sibling tools like portal_evm_query_token_transfers or portal_evm_query_logs, so the contrast 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.

Usage Guidelines4/5

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

A dedicated WHEN TO USE section lists concrete scenarios, and DON'T USE states exclusions such as quick recent feeds or wallet-level summaries. The guidance is strong and practical, but the alternative tools are not named, leaving the agent to map 'wallet-level summary' to portal_get_wallet_summary on its own.

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

portal_get_headGet the latest blockA
Read-only
Inspect

Get just the latest indexed head block or slot for a network.

COMMON USER ASKS:

  • Latest head

  • Finalized head

FIRST CHOICE FOR:

  • getting the current indexed head before building a manual block range

WHEN TO USE:

  • You only need the current block or slot number.

  • You need the current head before building a raw block-range query.

DON'T USE:

  • You want to know if the network is caught up, behind, fresh, or what tables are available.

EXAMPLES:

  • Latest head: {"network":"base-mainnet"}

  • Finalized head: {"network":"ethereum-mainnet","type":"finalized"}

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoBlock typelatest
networkYesNetwork name or alias

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive, so the bar is lower. The description adds useful context that the result is the 'indexed' head and that this is not suitable for determining whether a network is caught up, which alerts the agent to limitations beyond the structured hints.

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

Conciseness5/5

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

The description is well-structured with short, scannable sections and a front-loaded core statement. Every section earns its place, and the JSON examples are the only extra weight, which is justified.

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

Completeness5/5

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

The tool is simple, annotations cover safety, the schema covers parameters, and an output schema exists. The description fills the remaining practical gaps: when to use it, what not to expect, and concrete request examples. Nothing needed for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so a baseline of 3 applies. The description adds value with concrete examples showing exactly how to request latest versus finalized heads, and explicitly maps the common user asks to the 'type' parameter, improving clarity beyond the raw enum.

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

Purpose5/5

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

Description opens with a specific verb and resource: 'Get just the latest indexed head block or slot for a network.' The word 'just' and 'head' clearly distinguish this from sibling analytics, network-info, and query tools without needing to name them.

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

Usage Guidelines5/5

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

Provides explicit WHEN TO USE and DON'T USE sections. It tells an agent exactly when this is the first choice (before manual block ranges), and when to avoid it (checking sync status or table availability), leaving no ambiguity.

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

portal_get_network_infoCheck network statusA
Read-only
Inspect

Answer "is this network caught up?" with indexing freshness, lag, heads, and available tables.

COMMON USER ASKS:

  • Is Base caught up?

FIRST CHOICE FOR:

  • checking indexing head, lag, tables, and capabilities for one network

WHEN TO USE:

  • You want to know whether a network is indexed, fresh, caught up, or behind before querying.

  • You need chain family, real-time status, or available tables for a network.

DON'T USE:

  • You only need the latest block or slot number.

EXAMPLES:

  • Is Base caught up?: {"network":"base-mainnet"}

ParametersJSON Schema
NameRequiredDescriptionDefault
networkYesNetwork name or alias

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral details about what the call reports: indexing freshness, lag, heads, available tables, chain family, and real-time status. It does not contradict annotations and provides meaningful operational context beyond them.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the primary purpose. Each labeled section, such as FIRST CHOICE FOR, WHEN TO USE, and DON'T USE, adds distinct value, and the example is concrete without being verbose.

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

Completeness5/5

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

Given the tool has one required parameter, a complete input schema, and an output schema, the description covers the key decision points: when to use, when not to use, and what to expect. The example seals the net as fully usable by an agent for the common user ask.

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

Parameters3/5

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

The schema already fully documents the single parameter with a description and 100% coverage. The description adds a concrete example value "base-mainnet" but does not explain network formats, aliases, or validation rules. This meets the baseline but does not elevate parameter understanding beyond the schema.

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

Purpose5/5

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

The description explicitly defines the tool as answering "is this network caught up?" with indexing freshness, lag, heads, and available tables. It also states it is the first choice for network-level indexing status and explicitly excludes the latest-block use case, making it clearly distinguishable from portal_get_head and analytics siblings.

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

Usage Guidelines4/5

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

The WHEN TO USE section gives concrete scenarios, and DON'T USE identifies when to avoid it for simply needing the latest block or slot number. However, the alternative tool for that case is not named directly, so the guidance is strong but not fully explicit about sibling selection.

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

portal_get_recent_activityView recent blockchain activityA
Read-only
Inspect

Get a simple recent-activity feed across EVM, Solana, Bitcoin, or Hyperliquid with chronological paging and investigation pivots.

COMMON USER ASKS:

  • Recent activity on Base

  • Recent Hyperliquid fills

FIRST CHOICE FOR:

  • recent activity on any supported network without manual block math

  • questions like "what has been happening on Base lately?"

  • first-pass incident triage when the user asks what happened recently on a network

WHEN TO USE:

  • You want a quick recent-activity feed for a network.

  • You want to ask what has been happening lately on a network and see the newest activity first.

  • You want the simplest starting point before reaching for raw VM-specific query tools.

  • You are investigating an incident and need a bounded, recent evidence timeline before narrowing to wallets, transfers, logs, or fills.

DON'T USE:

  • You need raw logs, instructions, or chain-specific fields that only raw query tools return.

  • You want a chart over time rather than a recent feed.

EXAMPLES:

  • Recent activity on Base: {"network":"base-mainnet","timeframe":"1h","limit":10}

  • Recent Hyperliquid fills: {"network":"hyperliquid-fills","timeframe":"1h","limit":10}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax activity rows to return (default: 10, max: 25)
cursorNoContinuation cursor from a previous response
networkNoNetwork name (supports short names: 'polygon', 'base', 'ethereum', 'arbitrum', etc.). Optional when continuing with cursor.
timeframeNoTime period or block count. Examples: '100' (default), '1h', '6h', '24h', '7d', '3d'.100
to_addressesNoFilter by recipient addresses
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
from_addressesNoFilter by sender addresses
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the bar is lower. The description adds valuable behavioral context: newest-first ordering, bounded evidence timelines, chronological paging, and the SQD Blockchain Activity Explorer app integration caveat. It does not contradict annotations and goes beyond the schema by explaining result behavior.

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

Conciseness4/5

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

The description is longer than average but front-loads the core purpose and then uses clearly labeled sections for user asks, first-choice conditions, when-to-use, don't-use, examples, and app behavior. There is some redundancy between FIRST CHOICE FOR and WHEN TO USE, but each section earns its place by giving the agent decision-ready guidance.

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

Completeness5/5

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

Given the tool has 8 optional parameters, a full schema, output schema, and safety annotations, the description covers the remaining gaps thoroughly: supported network categories, example requests, exclusion cases versus raw query tools, paging behavior, and post-result app behavior. Nothing an agent needs to invoke this tool correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds beyond the schema through concrete examples mapping user asks to parameter values, such as {'network':'base-mainnet','timeframe':'1h','limit':10} and {'network':'hyperliquid-fills','timeframe':'1h','limit':10}. This clarifies how the network and timeframe parameters should be used in context.

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

Purpose5/5

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

The opening sentence states a specific verb ('Get') and resource ('simple recent-activity feed across EVM, Solana, Bitcoin, or Hyperliquid') with distinctive characteristics: chronological paging and investigation pivots. It also explicitly differentiates from raw VM-specific query tools and chart/time-series tools, making sibling separation clear.

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

Usage Guidelines5/5

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

The description has explicit WHEN TO USE and DON'T USE sections, names the alternative categories (raw logs/instructions/chart-over-time tools), and provides concrete example invocations. It gives the agent clear decision criteria for selecting this tool over siblings like portal_evm_query_logs or portal_get_time_series.

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

portal_get_time_seriesChart blockchain activityA
Read-only
Inspect

Build simple activity charts and other time-series views across supported VMs, including compare-previous windows and grouped EVM contract trends.

COMMON USER ASKS:

  • Base transactions per 15m bucket

  • Compare two periods

FIRST CHOICE FOR:

  • activity over time, compare-current-vs-previous, grouped trends, and simple activity charts

WHEN TO USE:

  • You want chart-ready metric buckets over time.

  • You want a simple activity chart for a network, defaulting to a 6h interactive window unless a longer window is explicitly requested.

  • You want to compare the current period to the previous period.

DON'T USE:

  • You need raw record lists instead of aggregated buckets.

  • You need DEX pool candles or OHLC output.

EXAMPLES:

  • Base transactions per 15m bucket: {"network":"base-mainnet","metric":"transaction_count","duration":"6h","interval":"15m"}

  • Compare two periods: {"network":"solana-mainnet","metric":"transaction_count","duration":"1h","interval":"5m","compare_previous":true}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoExecution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.deep
metricYesMetric to aggregate over time
addressNoOptional: Filter to specific contract address for contract-specific trends
networkYesNetwork name (supports short names: 'ethereum', 'polygon', 'base', etc.)
durationNoTotal time period to analyze. Defaults to "6h" for interactive use. Explicit longer windows like "24h" or "7d" are supported but can take longer. Accepts compact durations like "30m" or natural phrases like "past 30 minutes".6h
group_byNoOptional grouping mode. contract is currently supported only for EVM transaction_countnone
intervalYesTime bucket interval (5m, 15m, 1h, 6h, 1d)
group_limitNoMaximum number of contract groups when group_by=contract
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "24h ago".
compare_previousNoCompare the selected window against the immediately previous window

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior5/5

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

Beyond the readOnly and non-destructive annotations, the description adds meaningful behavior: default 6h interactive window unless a longer window is requested, the distinction between fast and deep modes, and the MCP App caveat that a successful result is not proof the host rendered it. This materially improves agent expectations.

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

Conciseness5/5

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

The description is long but tightly organized with labeled sections, front-loaded purpose, and no filler. Headers like COMMON USER ASKS, WHEN TO USE, DON'T USE, and EXAMPLES make it scannable and every section earns its place for a tool with this many parameters.

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

Completeness5/5

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

For an 11-parameter tool with an output schema, the description covers selection criteria, defaults, exclusions, examples, mode behavior, and app integration. Nothing necessary for correct invocation appears to be missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value above the schema by showing realistic parameter combinations in examples and clarifying duration defaults and mode semantics. This earns a 4 without duplicating schema detail.

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

Purpose5/5

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

The description states a specific verb and resource: 'Build simple activity charts and other time-series views across supported VMs, including compare-previous windows and grouped EVM contract trends.' This clearly differentiates it from sibling tools like OHLC, raw transaction queries, and contract-activity tools. Examples further cement the intended scope.

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

Usage Guidelines5/5

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

The 'WHEN TO USE' and 'DON'T USE' sections give explicit decision rules, including exclusions for raw record lists and DEX pool candles/OHLC. The 'FIRST CHOICE FOR' list and concrete examples make selection straightforward without needing to open sibling schemas.

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

portal_get_wallet_summaryReview wallet activityA
Read-only
Inspect

Summarize wallet activity and fund flow with shared overview, asset movement, counterparties, evidence pivots, and follow-up filters across supported networks.

COMMON USER ASKS:

  • EVM wallet fund-flow triage

  • Solana wallet activity and fee flow

FIRST CHOICE FOR:

  • one-call wallet analysis across supported VMs

  • suspicious wallet triage, fund-flow direction, counterparties, and next evidence pivots before drilling into raw records

WHEN TO USE:

  • You want a single high-level answer about what one wallet has been doing and where value appears to move.

  • You want inbound/outbound flow, top counterparties, largest movements, and exact next pivots before drilling into raw transactions or fills.

  • The user asks to investigate a suspicious wallet, stolen-funds path, exploit counterparty, or incident address.

DON'T USE:

  • You need every raw record with full chain-specific fields and no summarization.

EXAMPLES:

  • EVM wallet fund-flow triage: {"network":"base-mainnet","address":"0xabc...","timeframe":"24h"}

  • Solana wallet activity and fee flow: {"network":"solana-mainnet","address":"Vote111...","timeframe":"6h"}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoExecution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.deep
cursorNoContinuation cursor from a previous response
addressNoWallet address to analyze. Optional when continuing with cursor.
networkNoNetwork name or alias. Optional when continuing with cursor.
timeframeNoLook-back period as timeframe or block count. Examples: '1h', '24h', '7d', '3d', '1000'.1000
include_nftsNoInclude NFT transfers (ERC721/1155)
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
include_tokensNoInclude ERC20 token transfers
limit_per_typeNoMax items per category (default: 5, max: 5). This verified ceiling keeps every wallet page within MCP client response budgets.
response_formatNoResponse format: defaults to 'compact' for a readable wallet investigation. Use 'summary' for headline flow only or 'full' for all returned activity rows.

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior5/5

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

Annotations already declare the tool read-only and non-destructive, and the description adds useful behavioral context: results can open in the SQD Blockchain Activity Explorer, a tool result being ready is not proof the host rendered it, and the response is a summarized wallet investigation rather than raw records. There is no contradiction with 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.

Conciseness5/5

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

The description is organized with clear headings, short bullets, and concrete examples. Every section earns its place, and the most important information is front-loaded in the opening sentence.

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

Completeness5/5

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

The description covers when to use, when not to use, example invocations, and app-rendering caveats. Since the input schema fully documents all 11 parameters and an output schema exists, nothing an agent needs to invoke this tool correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description goes slightly beyond the schema by giving realistic parameter combinations for EVM and Solana, including network aliases like 'base-mainnet' and 'solana-mainnet' and timeframe examples like '24h' and '6h', which helps an agent form correct calls.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Summarize wallet activity and fund flow' and lists concrete output facets such as counterparties, evidence pivots, and follow-up filters. This clearly distinguishes it from sibling raw-query and analytics tools like portal_evm_query_transactions or portal_evm_get_analytics.

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

Usage Guidelines5/5

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

The description provides explicit WHEN TO USE, DON'T USE, FIRST CHOICE FOR, and COMMON USER ASKS sections. It tells an agent exactly when to pick this tool and warns against using it when raw chain-specific records are required, which prevents confusion with sibling transaction-query tools.

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

portal_hyperliquid_get_analyticsAnalyze Hyperliquid tradingA
Read-only
Inspect

Get the big-picture Hyperliquid fill analytics with top traders, volume by coin, fees, and PnL.

COMMON USER ASKS:

  • Hyperliquid fill snapshot

  • Who traded the most?

WHEN TO USE:

  • You want network-level Hyperliquid fill analytics.

  • You want to know who traded the most, which coins had volume, or how fees and PnL looked.

  • You want grouped aggregate sections without stitching raw fills together yourself.

DON'T USE:

  • You need individual fill records or OHLC candles.

EXAMPLES:

  • Hyperliquid fill snapshot: {"network":"hyperliquid-fills","timeframe":"1h"}

  • Who traded the most?: {"network":"hyperliquid-fills","timeframe":"1h"}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoFilter by asset symbols (e.g., ["BTC", "ETH"])
modeNoExecution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.deep
cursorNoContinuation cursor for ranked analytics sections
networkNoNetwork name (default: 'hyperliquid-fills')hyperliquid-fills
timeframeNoTime range: '1h', '6h', '24h'. Default: '1h'1h
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
section_limitNoPer-section page size for ranked sections. Default: 6
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "6h ago".
response_formatNoResponse format: 'summary' (smallest snapshot), 'compact' (chat-sized ranked sections, default), 'full' (complete analytics).compact

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already communicate read-only, open-world, non-destructive behavior. The description adds useful behavioral context beyond the annotations: it is network-level aggregate analytics, returns grouped sections, and can open in the SQD Explorer with coverage/freshness details. It does not dwell extensively on pagination or rate limits, but the output schema exists to cover return structure.

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

Conciseness4/5

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

The description is well-structured with clear sections, user asks, when/don't-use, and examples. It earns most of its length, though the final MCP APP paragraph is somewhat tangential to tool selection and invocation, and the two examples are nearly identical.

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

Completeness5/5

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

For a nine-parameter tool, the schema fully documents parameters, and the output schema covers return values. The description supplies selection guidance, exclusions, examples, and integration behavior, leaving no critical gap for an agent deciding whether and how to call this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all nine parameters meaningfully. The description adds example payloads and common-ask mappings, but those examples mostly reuse the same network/timeframe arguments and do not meaningfully enrich understanding of cursor, section_limit, mode, or response_format beyond what the schema states.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get the big-picture Hyperliquid fill analytics with top traders, volume by coin, fees, and PnL.' It clearly distinguishes this aggregate tool from raw-fill and OHLC tools via the 'DON'T USE' section, so an agent can immediately tell what it does and what it is not.

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

Usage Guidelines5/5

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

The 'WHEN TO USE' section lists concrete scenarios, including network-level analytics and grouped aggregates without stitching raw fills. The 'DON'T USE' section explicitly excludes individual fill records and OHLC candles, pointing the agent toward the correct sibling tools without ambiguity.

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

portal_hyperliquid_get_ohlcChart Hyperliquid pricesA
Read-only
Inspect

Build chart-ready Hyperliquid trade OHLC candles with fixed buckets and auto intervals.

COMMON USER ASKS:

  • BTC candles

WHEN TO USE:

  • You want candles for one coin on Hyperliquid.

  • You need chart-ready OHLC, volume, and VWAP data from fills.

DON'T USE:

  • You want scalar time-series buckets or raw fills.

EXAMPLES:

  • BTC candles: {"network":"hyperliquid-fills","coin":"BTC","duration":"6h","interval":"auto"}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoAsset symbol to build candles for (for example: "BTC", "ETH", "SOL"). Optional when continuing with cursor.
userNoOptional trader wallet address (0x-prefixed, lowercase)
cursorNoContinuation cursor from a previous candle page
networkNoNetwork name (default: 'hyperliquid-fills')hyperliquid-fills
durationNoHow much recent trading history to cover. Accepts compact durations like "1h" or natural phrases like "past 30 minutes".1h
intervalNoCandle interval. Use auto for chart-friendly defaults: 1h→5m, 6h→15m, 12h→30m, 24h→1h.auto

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: candles are built 'from fills', intervals are auto-chosen with documented bucket mappings, and results are chart-ready and app-compatible. It also honestly notes that a tool result 'is not proof that the host rendered it.'

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

Conciseness3/5

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

The description is well-structured with headings and an example, but it has redundancy: 'COMMON USER ASKS: BTC candles' is essentially repeated by the EXAMPLE block. The 'MCP APP' paragraph adds context about app integration but is tangential to tool invocation and adds length.

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

Completeness5/5

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

For a six-parameter, all-optional tool with an output schema, the description covers purpose, usage boundaries, a concrete example, and non-trivial interval behavior. It doesn't narrate cursor pagination or the user parameter in detail, but those are already described in the input schema, and the output schema handles return values.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful value beyond the schema: it explains 'auto' interval defaults concretely (1h→5m, 6h→15m, 12h→30m, 24h→1h), provides a complete JSON example, and clarifies 'duration' semantics with 'past 30 minutes' style phrases.

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

Purpose5/5

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

The description opens with a specific action and object: 'Build chart-ready Hyperliquid trade OHLC candles with fixed buckets and auto intervals.' It clearly identifies the resource (Hyperliquid trade fills), the output (OHLC/volume/VWAP candles), and the domain-specific scope, distinguishing it from generic OHLC tools and scalar time-series tools.

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

Usage Guidelines4/5

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

Explicit 'WHEN TO USE' and 'DON'T USE' sections state the appropriate conditions: candles for one Hyperliquid coin and chart-ready OHLC/volume/VWAP from fills, while excluding scalar time-series buckets and raw fills. It does not name sibling tools explicitly (e.g., portal_get_time_series or portal_hyperliquid_query_fills), so it stops short of the strongest alternative-routing guidance.

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

portal_hyperliquid_query_fillsFind Hyperliquid tradesA
Read-only
Inspect

Query raw individual Hyperliquid fills with trader, coin, fee, PnL, and builder context.

COMMON USER ASKS:

  • Recent BTC fills

WHEN TO USE:

  • You need raw fill records on Hyperliquid.

  • You want to filter by trader, coin, direction, builder, or fee token.

DON'T USE:

  • You want the big picture, top traders, grouped aggregates, or candles instead of raw fill rows.

EXAMPLES:

  • Recent BTC fills: {"network":"hyperliquid-fills","timeframe":"1h","coin":["BTC"],"limit":20}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
dirNoTrade direction: "Open Long", "Close Long", "Open Short", "Close Short"
coinNoAsset symbols (e.g., "ETH", "BTC", "SOL")
userNoTrader wallet addresses (0x-prefixed, lowercase)
cloidNoClient order IDs (0x-prefixed hex)
limitNoMax fills to return (default: 20, max: 25)
cursorNoContinuation cursor from a previous response
builderNoBuilder addresses (0x-prefixed, lowercase)
networkNoNetwork name (default: 'hyperliquid-fills'). Optional when continuing with cursor.hyperliquid-fills
to_blockNoEnding block number
fee_tokenNoFee token symbols
timeframeNoTime range (e.g., '1h', '24h'). Alternative to from_block/to_block.
from_blockNoStarting block number (use this OR timeframe)
include_pnlNoInclude closedPnl and startPosition fields
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
finalized_onlyNoOnly query finalized blocks
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
response_formatNoResponse format: defaults to 'compact' for chat-friendly output. Use 'summary' for aggregate stats or 'full' when you truly need every fill field.
include_builder_infoNoInclude builder and builderFee fields

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description consistently says 'Query' rather than implying mutation. It adds useful behavioral context beyond annotations by emphasizing raw, individual fill rows and noting that the result is app-ready but not proof of host rendering.

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

Conciseness5/5

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

Despite length, the description is tightly structured with labeled sections and no filler; the core verb/resource sentence is first, and every section earns its place. The example is compact and action-relevant.

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

Completeness5/5

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

For a complex 18-parameter, zero-required tool with a rich input schema and output schema, the description covers invocation contexts, exclusions, a realistic example, and app behavior. The schema handles all parameter semantics, and the output schema removes the need to describe return values in prose.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema carries parameter documentation. The description adds value on top by grouping parameters into semantic categories (trader, coin, fee, PnL, builder) and providing an executable example that shows how timeframe, coin, and limit combine.

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

Purpose5/5

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

The opening sentence names a specific action ('Query raw individual Hyperliquid fills') and resource (fills with trader, coin, fee, PnL, and builder context), and the DON'T USE section explicitly distinguishes it from aggregate/candle tools. This is more precise than the title and separates it from analytics and OHLC siblings.

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

Usage Guidelines5/5

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

Dedicated WHEN TO USE and DON'T USE sections state exactly when raw fill records are needed and rule out aggregate/analytics use cases. The example for common asks shows a concrete filter invocation, and the exclusions ('big picture, top traders, grouped aggregates, or candles') map to sibling analytics/OHLC tools.

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

portal_list_networksFind blockchain networksA
Read-only
Inspect

Find the right network or chain name to use across EVM, Solana, Bitcoin, Substrate, and Hyperliquid.

COMMON USER ASKS:

  • Find Base-like networks

  • Show Solana mainnets

  • Show Substrate mainnets

FIRST CHOICE FOR:

  • finding the correct network before any other query

WHEN TO USE:

  • You are not sure which network name, chain name, or alias to use.

  • You want to filter networks by VM family, network type, or real-time availability.

DON'T USE:

  • You already know the exact network and want live data from that network.

EXAMPLES:

  • Find Base-like networks: {"query":"base","limit":10}

  • Show Solana mainnets: {"vm":"solana","network_type":"mainnet"}

  • Show Substrate mainnets: {"vm":"substrate","network_type":"mainnet"}

ParametersJSON Schema
NameRequiredDescriptionDefault
vmNoFilter by VM family
limitNoMax results to return (default: 25, max: 100)
queryNoSearch by name, alias, or chain ID
cursorNoContinuation cursor from a previous network catalog page
network_typeNoFilter by network type
real_time_onlyNoOnly show networks with a real-time indexed head

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds behavioral context beyond annotations: the tool is a pre-query discovery step ('FIRST CHOICE FOR: finding the correct network before any other query'), supports VM/network-type/real-time filtering, and is non-authoritative for live data. Minor gap: no mention of pagination/ordering behavior, though cursor is in 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.

Conciseness5/5

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

The description is well-structured with labeled sections (COMMON USER ASKS, FIRST CHOICE FOR, WHEN TO USE, DON'T USE, EXAMPLES). Each section earns its place: it covers purpose, selection criteria, exclusions, and usage examples without repetition, and it front-loads the core scope in the first sentence. Length is appropriate for a 6-param discovery tool with many siblings.

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

Completeness5/5

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

Given the 6 optional parameters, the output schema, and the large sibling family, the description is remarkably complete. It explains what the tool does, when to prefer it, when to avoid it, and how to combine parameters via examples. The output schema exists, so return-value documentation is redundant here. Nothing essential for an agent to call this tool correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by mapping user intents to concrete parameter combinations (e.g., {'query':'base','limit':10}, {'vm':'solana','network_type':'mainnet'}) and by explaining high-level filter themes ('VM family, network type, or real-time availability'). This goes beyond the schema's item-level descriptions.

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

Purpose5/5

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

Description opens with a specific verb and resource: 'Find the right network or chain name to use across EVM, Solana, Bitcoin, Substrate, and Hyperliquid.' It also distinguishes itself from sibling data-query tools via the 'DON'T USE' section ('You already know the exact network and want live data from that network'), so an agent can clearly identify this as the discovery/lookup tool.

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

Usage Guidelines5/5

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

Explicit 'WHEN TO USE' and 'DON'T USE' sections give concrete conditions: use when unsure of network name/alias or when filtering by VM/type/availability; avoid when you already know the exact network and need live data. This directly routes the agent away from alternatives like portal_evm_query_transactions and portal_get_network_info.

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

portal_resolve_entityFind a token or contractA
Read-only
Inspect

Resolve user-facing blockchain entities into query-ready identifiers, with ambiguity kept explicit.

COMMON USER ASKS:

  • Resolve USDC on Base

  • Resolve WETH on Ethereum

  • Resolve BAYC contract

FIRST CHOICE FOR:

  • resolving a token symbol like USDC to token contract addresses

  • resolving EVM contract aliases, protocol names, pool identifiers, or Hyperliquid coin names before querying

  • checking which token-list addresses a symbol maps to before querying logs or transfers

  • turning a user-friendly token name into deterministic EVM filters

WHEN TO USE:

  • The user names a token symbol such as USDC, WETH, DAI, or PEPE and you need contract addresses before querying raw data.

  • The user names a well-known EVM contract, protocol, pool identifier, or Hyperliquid ticker and you need a deterministic follow-up filter.

  • You need to disambiguate bridged token variants on an EVM network.

  • You want a source-backed token address rather than relying on memory or hardcoded constants.

DON'T USE:

  • You already have the exact address, pool id, protocol slug, or coin filter and can pass it directly.

EXAMPLES:

  • Resolve USDC on Base: {"network":"base-mainnet","kind":"token","query":"USDC","limit":10}

  • Resolve WETH on Ethereum: {"network":"ethereum-mainnet","kind":"token","query":"WETH","limit":5}

  • Resolve BAYC contract: {"network":"ethereum-mainnet","kind":"contract","query":"bored apes"}

  • Resolve Hyperliquid coin: {"kind":"hyperliquid_coin","query":"bitcoin"}

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoEntity kind to resolve: token, contract alias/address, pool identifier, protocol name, or Hyperliquid coin/ticker.token
limitNoMaximum matches to return.
queryYesEntity string to resolve, e.g. "USDC", "bayc", "uniswap", "BTC", or "0x...".
networkNoNetwork name or alias when the entity is network-scoped, e.g. "base", "ethereum", "arbitrum-one", or "hyperliquid-fills".

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the baseline burden is lower. The description adds valuable behavioral context: ambiguity is kept explicit, results are source-backed rather than guessed, and the tool maps symbols to token-list addresses and disambiguates bridged variants. This meaningfully informs agent expectations 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.

Conciseness4/5

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

The description is longer than average but well-structured with clear section headers and scannable bullets. Every section earns its place, and the critical usage guidance is front-loaded. There is minor redundancy between the 'COMMON USER ASKS' examples and the later 'EXAMPLES' block, but the latter adds JSON payloads, so the repetition is acceptable.

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

Completeness5/5

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

For a multi-kind resolver with network scoping and ambiguity handling, the description is unusually complete. It covers when to use the tool, when not to, concrete request examples across four kinds, and key behavioral nuances like source-backed addresses and explicit ambiguity. The output schema handles return-value documentation, so nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value with concrete JSON examples and semantic clarifications: 'query' can be a symbol, alias, or even 'bored apes'; 'network' can be an alias like 'base' or 'arbitrum-one'; 'kind' ranges from token to hyperliquid_coin. These examples make parameter usage tangible beyond the schema's field descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Resolve user-facing blockchain entities into query-ready identifiers.' It names concrete domains (token symbols, contract aliases, protocol names, pool identifiers, Hyperliquid coins), which clearly distinguishes it from sibling query and analytics tools that consume already-resolved identifiers.

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

Usage Guidelines5/5

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

The description provides explicit 'FIRST CHOICE FOR', 'WHEN TO USE', and 'DON'T USE' sections. It tells an agent exactly when to call this tool (user names a symbol/contract/protocol needing an address) and when not to (when exact address/pool id/protocol slug/coin filter is already available). This is exemplary routing guidance.

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

portal_solana_get_analyticsAnalyze Solana activityA
Read-only
Inspect

Get the big picture for Solana throughput, fees, wallet activity, and optional top-program usage.

COMMON USER ASKS:

  • Solana network snapshot

  • Include top programs

FIRST CHOICE FOR:

  • the big picture for Solana right now

WHEN TO USE:

  • You want the big picture for Solana right now.

  • You want a network health snapshot for Solana.

  • You want throughput, fee, success-rate, or top-program analytics rather than raw records.

DON'T USE:

  • You want chart buckets or raw transaction/instruction records.

EXAMPLES:

  • Solana network snapshot: {"network":"solana-mainnet","timeframe":"1h"}

  • Include top programs: {"network":"solana-mainnet","timeframe":"1h","include_programs":true}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoExecution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.deep
cursorNoContinuation cursor for paginating top_programs
networkNoNetwork name (default: solana-mainnet)solana-mainnet
timeframeNoTime range. Accepts compact durations like '15m' or natural phrases like 'past 30 minutes'. Optional; defaults to a 1h analysis window.
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
program_limitNoMax top-program rows to return per page when include_programs is enabled
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
response_formatNoResponse format: 'summary' (high-level metrics), 'compact' (core sections), 'full' (complete analytics).full
include_programsNoInclude top programs by instruction count (requires an extra instruction scan and is slower)
include_compute_unitsNoInclude average compute-unit stats across the full range (disabled by default for speed)

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds value by explaining that a successful result can open in the SQD Blockchain Activity Explorer and that the result being ready does not prove the host rendered it. It also notes the analytic scope rather than raw records. This is useful but not exhaustive behavioral detail, hence 4 rather than 5.

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

Conciseness4/5

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

The use of labeled sections (COMMON USER ASKS, FIRST CHOICE FOR, WHEN TO USE, DON'T USE, EXAMPLES, MCP APP) makes the description scannable and front-loaded with the core purpose. Some redundancy exists: FIRST CHOICE FOR largely repeats the first WHEN TO USE bullet, and COMMON USER ASKS overlaps with EXAMPLES. Still efficient overall.

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

Completeness5/5

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

Given a 10-parameter tool with a 100%-described schema, read-only annotations, and an output schema, the description covers what an agent needs to decide when to invoke it and how to form a request. It supplies use cases, exclusions, concrete examples, and an app-integration caveat. No crucial selection or invocation context appears to be missing.

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

Parameters3/5

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

Input schema covers 100% of parameters with descriptions, so the baseline is 3. The examples (network, timeframe, include_programs) illustrate valid request shapes, but the main description does not add deeper semantics about modes, cursors, or timestamp formats beyond what the schema already provides.

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

Purpose5/5

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

The description opens with a specific verb and resource: Get the big picture for Solana throughput, fees, wallet activity, and optional top-program usage. It also draws a clear boundary from raw transaction/instruction records, distinguishing this analytics tool from its query siblings.

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

Usage Guidelines5/5

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

The WHEN TO USE and DON'T USE sections explicitly state when to choose the tool (big picture, network health snapshot, throughput/fee/success-rate analytics) and when not to (chart buckets or raw transaction/instruction records). Examples show realistic invocations, so an agent has concrete guidance for correct use.

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

portal_solana_query_instructionsFind Solana program activityA
Read-only
Inspect

Query raw Solana instructions with program and account filters.

COMMON USER ASKS:

  • Token Program instructions

WHEN TO USE:

  • You need program-level or account-level instruction activity.

  • You want to inspect Token Program, Jupiter, System Program, or Anchor discriminator activity.

DON'T USE:

  • You only need transaction-level activity and not individual instructions.

EXAMPLES:

  • Token Program instructions: {"network":"solana-mainnet","timeframe":"1h","program_id":["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"],"limit":20}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
a0NoAccount at index 0. You can pass a single string or an array.
a1NoAccount at index 1. You can pass a single string or an array.
a2NoAccount at index 2. You can pass a single string or an array.
a3NoAccount at index 3. You can pass a single string or an array.
a4NoAccount at index 4. You can pass a single string or an array.
a5NoAccount at index 5. You can pass a single string or an array.
a6NoAccount at index 6. You can pass a single string or an array.
a7NoAccount at index 7. You can pass a single string or an array.
a8NoAccount at index 8. You can pass a single string or an array.
a9NoAccount at index 9. You can pass a single string or an array.
d1No1-byte discriminator filter (0x-prefixed hex). You can pass a single string or an array.
d2No2-byte discriminator filter (0x-prefixed hex). You can pass a single string or an array.
d4No4-byte discriminator filter (0x-prefixed hex). You can pass a single string or an array.
d8No8-byte discriminator filter - Anchor (0x-prefixed hex). You can pass a single string or an array.
a10NoAccount at index 10. You can pass a single string or an array.
a11NoAccount at index 11. You can pass a single string or an array.
a12NoAccount at index 12. You can pass a single string or an array.
a13NoAccount at index 13. You can pass a single string or an array.
a14NoAccount at index 14. You can pass a single string or an array.
a15NoAccount at index 15. You can pass a single string or an array.
limitNoMax instructions (default: 20, max: 25)
cursorNoContinuation cursor from a previous response
networkNoNetwork name or alias. Optional when continuing with cursor.
to_blockNoEnding slot number. Keep ranges reasonable for performance.
timeframeNoTime range (e.g., '1h', '24h'). Alternative to from_block/to_block. Solana slots are ~400ms.
from_blockNoStarting slot number (use this OR timeframe)
program_idNoProgram IDs. You can pass a single string or an array.
include_logsNoInclude program logs
is_committedNoOnly committed transactions
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
finalized_onlyNoOnly query finalized slots
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
mentions_accountNoAccounts mentioned anywhere in the instruction. You can pass a single string or an array.
include_transactionNoInclude transaction data
transaction_fee_payerNoFee payer filter. You can pass a single string or an array.
include_inner_instructionsNoInclude inner (CPI) instructions
include_transaction_balancesNoInclude SOL balance changes
include_transaction_instructionsNoInclude all instructions from the parent transaction (sibling instructions)
include_transaction_token_balancesNoInclude token balance changes

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the 'raw instructions' framing and notes that successful results can open in the SQD Blockchain Activity Explorer, but it doesn't discuss pagination, rate limits, or data freshness 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.

Conciseness4/5

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

The description is organized into short labeled sections and includes a concrete example without excessive prose. The MCP APP section is somewhat generic but still conveys follow-up context, and the overall structure makes key information easy to scan.

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

Completeness4/5

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

Given 39 optional parameters and a rich output schema, the description provides enough orientation: it defines the tool's granularity, states what not to use it for, and gives a workable example. It doesn't enumerate every filter, but the schema already covers those details, so the description is adequate for correct tool selection.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description adds value by showing a realistic example with network, timeframe, program_id as an array, and limit, which helps the agent understand how to combine filters for a common use case.

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

Purpose5/5

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

The description states a specific verb and resource: 'Query raw Solana instructions with program and account filters.' It clearly separates this instruction-level tool from transaction-level tools, and the title 'Find Solana program activity' reinforces the scope.

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

Usage Guidelines5/5

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

The description provides explicit WHEN TO USE and DON'T USE sections, including a concrete condition: don't use it if only transaction-level activity is needed. It also gives a common-user ask and a worked example, making the intended selection path clear.

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

portal_solana_query_transactionsFind Solana transactionsB
Read-only
Inspect

Query raw Solana transactions with optional balances, rewards, logs, and instruction context.

COMMON USER ASKS:

  • Recent Solana transactions

  • Filter by program

WHEN TO USE:

  • You need raw Solana transaction records.

  • You want Solana-specific filters or include flags that convenience tools do not expose.

DON'T USE:

  • You only want recent activity or a compact network summary.

EXAMPLES:

  • Recent Solana transactions: {"network":"solana-mainnet","timeframe":"1h","limit":20}

  • Filter by program: {"network":"solana-mainnet","timeframe":"1h","program_id":["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"],"limit":20}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax transactions to return (default: 20, max: 25)
cursorNoContinuation cursor from a previous response
networkNoNetwork name or alias. Optional when continuing with cursor.
to_blockNoEnding slot number
fee_payerNoFee payer addresses
timeframeNoTime range (e.g., '1h', '24h'). Alternative to from_block/to_block.
from_blockNoStarting slot number (use this OR timeframe)
include_logsNoInclude program logs
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
finalized_onlyNoOnly query finalized slots
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "1h ago".
include_rewardsNoInclude block rewards (validator staking rewards). Filter by pubkey using mentions_account.
response_formatNoResponse format: defaults to 'compact' for chat-friendly output, or stays 'full' when inline instruction, balance, log, or reward context is requested. Use 'summary' for aggregate stats.
include_balancesNoInclude SOL balance changes
mentions_accountNoAccounts mentioned anywhere in the transaction
include_instructionsNoInclude instruction data
include_token_balancesNoInclude SPL token balance changes

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior3/5

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

Annotations already mark this as read-only, open-world, and non-destructive, so the safety profile is well covered. The description adds that results are raw Solana transactions, can open in the SQD Explorer, and that a tool result is not proof the host rendered it. It does not discuss pagination behavior or rate limits, but the annotation coverage makes this a mild gap rather than a severe one.

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

Conciseness4/5

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

The description is front-loaded with the core one-line behavior and uses labeled sections for common asks, usage rules, and examples, making it easy to scan. The MCP APP paragraph adds some bulk, but the overall structure is organized and the length is justified by the tool's complexity. The program_id inconsistency is an accuracy issue, not a conciseness issue.

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

Completeness3/5

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

For a 17-parameter tool with 100% schema coverage and an output schema, the description covers common use cases, provides examples, and explains MCP App behavior. However, the 'filter by program' example is not actually supported by the declared schema, and instruction-level queries are not routed to the portal_solana_query_instructions sibling. These gaps make it only minimally complete for reliable autonomous call construction.

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

Parameters2/5

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

With 100% schema description coverage across all 17 properties, a baseline of 3 would normally apply. However, the description's examples include 'program_id' and the common ask 'Filter by program', while no program_id property exists in the input schema; this actively suggests an invalid invocation. The thematic grouping of include_* flags helps somewhat, but the misleading example is a real defect.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Query raw Solana transactions', and lists optional balances, rewards, logs, and instruction context, making the core operation clear. It contrasts itself with 'convenience tools' and 'recent activity', but it does not explicitly distinguish itself from the sibling portal_solana_query_instructions. The example mentioning program_id, which is absent from the schema, slightly muddies the purpose.

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

Usage Guidelines4/5

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

WHEN TO USE and DON'T USE sections give concrete conditions and a negative case, so an agent can generally decide when to invoke this tool. However, alternatives are referred to only generically as 'convenience tools' rather than naming sibling tools, and there is no explicit guidance pointing instruction-level queries to portal_solana_query_instructions.

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

portal_substrate_get_analyticsAnalyze Polkadot activityA
Read-only
Inspect

Analytics snapshot for Substrate or Polkadot activity in an indexed window, with event, call, and extrinsic counts plus top event and call names.

COMMON USER ASKS:

  • Polkadot activity snapshot

  • Big picture for Polkadot activity

  • How is Polkadot doing?

FIRST CHOICE FOR:

  • Polkadot activity analytics in an indexed window

  • how Polkadot is doing in an indexed window

  • analytics snapshot for Polkadot or another Substrate network in an indexed window

WHEN TO USE:

  • You want Polkadot activity analytics in a selected indexed window.

  • You want to ask "how is Polkadot doing in this indexed window?" and get an analytics answer rather than just network freshness metadata.

  • You want a quick Substrate network snapshot or health check.

  • You want top pallet events and calls rather than raw rows.

  • You want to know how a Substrate network is doing in the selected indexed window.

DON'T USE:

  • You need full raw event or call records.

EXAMPLES:

  • Polkadot activity snapshot: {"network":"polkadot","timeframe":"1h"}

  • Big picture for Polkadot activity: {"network":"polkadot","timeframe":"1h"}

  • How is Polkadot doing?: {"network":"polkadot","timeframe":"6h"}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoExecution depth. Defaults to complete requested-window analysis; the optional fast value is only for explicitly bounded previews.deep
networkNoSubstrate network name (default: polkadot)polkadot
to_blockNoEnding block number
timeframeNoTime range like '1h', '6h', or '24h'. Default: '1h'
from_blockNoStarting block number (use this OR timeframe)
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
section_limitNoMax rows to keep in ranked event and call sections
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "6h ago".
response_formatNoResponse format: 'summary' (headline metrics only), 'compact' (core sections), 'full' (full dashboard payload)full

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already cover readOnlyHint, openWorldHint, and destructiveHint, so the baseline burden is lower. The description adds useful behavioral context: it returns an indexed-window snapshot with top pallet events/calls, can open in the SQD Blockchain Activity Explorer, and includes a caveat that a result is not proof the host rendered it. No annotation contradiction.

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

Conciseness3/5

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

The description is well-sectioned and front-loaded with a clear one-sentence summary, but it is redundant: 'how is Polkadot doing' and similar phrasings repeat across COMMON USER ASKS, FIRST CHOICE FOR, and WHEN TO USE. The structure helps skimming, but not every sentence earns its place.

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

Completeness4/5

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

Given 9 optional parameters, full schema descriptions, and an output schema, the description covers the key selection and invocation context well: output contents, when to use, when not to use, examples, and app integration. It does not detail block-vs-timestamp precedence or mode semantics, but the schema carries that burden. An agent can call this tool correctly with what is provided.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds practical value with examples mapping natural-language asks to parameter values like {'network':'polkadot','timeframe':'1h'} and clarifies the notion of an indexed window. It does not explain mode or response_format trade-offs, but those are fully described in the schema.

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

Purpose5/5

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

The opening sentence states exactly what the tool does: 'Analytics snapshot for Substrate or Polkadot activity in an indexed window, with event, call, and extrinsic counts plus top event and call names.' This is a specific verb-resource-output statement that clearly differentiates it from raw-query siblings like portal_substrate_query_calls and portal_substrate_query_events.

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

Usage Guidelines5/5

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

The description includes extensive WHEN TO USE bullets and an explicit DON'T USE rule: 'You need full raw event or call records.' This guides an agent toward this tool for aggregate snapshots and away from it for raw row retrieval, effectively distinguishing it from sibling query tools without requiring schema inspection.

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

portal_substrate_query_callsFind Polkadot callsA
Read-only
Inspect

Query raw Substrate or Polkadot calls with pallet/call-name filters and optional child-call, emitted-event, or extrinsic context.

COMMON USER ASKS:

  • Recent Balances calls

  • Polkadot calls with emitted events

FIRST CHOICE FOR:

  • raw Substrate or Polkadot call rows, especially when you want the events emitted by those calls

WHEN TO USE:

  • You need raw call records on a Substrate network.

  • You want pallet call activity like Balances.transfer_keep_alive or Ethereum.transact.

  • You want calls plus the events emitted by those calls.

DON'T USE:

  • You want events or aggregate analytics rather than call rows.

EXAMPLES:

  • Recent Balances calls: {"network":"polkadot","timeframe":"1h","call_names":["Balances.transfer_keep_alive"],"limit":20}

  • Polkadot calls with emitted events: {"network":"polkadot","timeframe":"1h","call_names":["ParaInherent.enter"],"include_events":true,"limit":20}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax calls to return (max: 10; use compact mode for context-rich rows)
cursorNoContinuation cursor from a previous response
networkNoSubstrate network name or alias. Optional when continuing with cursor.
to_blockNoEnding block number
timeframeNoTime range (e.g. '1h', '24h'). Alternative to from_block/to_block.
call_namesNoOptional qualified call names like Timestamp.set or Balances.transfer_keep_alive
from_blockNoStarting block number
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
include_stackNoAttach the parent call stack for each matching call
finalized_onlyNoOnly query finalized blocks
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "6h ago".
include_eventsNoAttach events emitted directly by each matching call
response_formatNoResponse format: defaults to 'compact' for chat-friendly output. Compact mode keeps requested subcalls, events, and extrinsic context in a smaller inline shape.
include_subcallsNoAttach direct descendant calls inline for each matching call
include_extrinsicNoAttach the parent extrinsic inline for each matching call

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds valuable behavioral context: the response_format defaults to 'compact' for chat-friendly output, calls can be enriched with events/subcalls/extrinsic, and a successful result opens in the SQD Blockchain Activity Explorer but is not proof the host rendered it. This goes beyond annotation coverage without contradicting it.

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

Conciseness5/5

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

Although long, the description is tightly structured into scannable labeled sections (COMMON USER ASKS, FIRST CHOICE FOR, WHEN TO USE, DON'T USE, EXAMPLES, MCP APP). Every section earns its place for a tool with 15 parameters and 26 siblings; there is no fluff or repetition.

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

Completeness5/5

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

For a complex, zero-required-parameter read-only tool with a rich output schema and 100% schema coverage, the description is complete. It covers typical user intents, when to avoid the tool, concrete examples, and behavior summaries. The output schema already documents return values, so nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value with two JSON examples showing how to combine network, timeframe, call_names, limit, and include_events for realistic user asks ('Recent Balances calls', 'Polkadot calls with emitted events'). This teaches parameter usage patterns beyond the individual schema descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Query raw Substrate or Polkadot calls with pallet/call-name filters and optional child-call, emitted-event, or extrinsic context.' This cleanly distinguishes the tool from the sibling 'portal_substrate_query_events' (events) and EVM/Solana query tools by naming the exact domain (Substrate/Polkadot) and object type (call rows).

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

Usage Guidelines5/5

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

Explicit 'WHEN TO USE' and 'DON'T USE' sections give concrete criteria and exclusions: use for raw call records, don't use for events or aggregate analytics. The 'FIRST CHOICE FOR' section further narrows when this tool is preferred over alternatives, leaving no ambiguity for an agent deciding among siblings.

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

portal_substrate_query_eventsFind Polkadot eventsA
Read-only
Inspect

Query raw Substrate or Polkadot event rows with pallet/event-name filters and optional parent call or extrinsic context.

COMMON USER ASKS:

  • Balances.Transfer events on Polkadot

FIRST CHOICE FOR:

  • raw Substrate or Polkadot event rows with optional parent call or extrinsic context

WHEN TO USE:

  • You need raw event records on a Substrate network.

  • You want pallet-level event activity like Balances.Transfer or Contracts.ContractEmitted.

  • You want event rows first, even if the network is a Polkadot-family chain.

DON'T USE:

  • You want calls or aggregate analytics rather than event rows.

EXAMPLES:

  • Balances.Transfer events on Polkadot: {"network":"polkadot","timeframe":"1h","event_names":["Balances.Transfer"],"limit":20}

MCP APP: A successful result can open in the SQD Blockchain Activity Explorer with exact charts, tables, timelines, coverage, freshness, and safe follow-ups. A tool result is ready for the App but is not proof that the host rendered it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax events to return (max: 10; use compact mode for context-rich rows)
cursorNoContinuation cursor from a previous response
networkNoSubstrate network name or alias. Optional when continuing with cursor.
to_blockNoEnding block number
timeframeNoTime range (e.g. '1h', '24h'). Alternative to from_block/to_block.
from_blockNoStarting block number
event_namesNoOptional qualified event names like Balances.Transfer or System.ExtrinsicSuccess
include_callNoAttach the emitting call inline when the event has call context
to_timestampNoEnding timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "now".
include_stackNoAttach the parent call stack when the event has nested call context
finalized_onlyNoOnly query finalized blocks
from_timestampNoStarting timestamp. Accepts Unix seconds, Unix milliseconds, ISO datetime, or relative input like "6h ago".
response_formatNoResponse format: defaults to 'compact' for chat-friendly output. Compact mode keeps requested extrinsic or call context in a smaller inline shape.
include_extrinsicNoAttach the parent extrinsic inline for each matching event

Output Schema

ParametersJSON Schema
NameRequiredDescription
_uiNoOptional chart, table, and follow-up presentation metadata.
_appNoSQD Blockchain Activity Explorer identity and honest host-render state.
_llmNoHints that help an AI client locate the primary evidence.
_metaNoNetwork, block range, timing, and row-count metadata.
errorNoStructured failure details when the tool cannot complete the request.
itemsNoPrimary result rows when the tool returns a list.
valueNoPrimary result when the tool returns a scalar value.
answerNoConcise answer grounded in the returned blockchain data.
_noticeNoImportant limitation or truncation notice.
displayNoPlain-language labels for presenting the result.
_noticesNoImportant limitations or truncation notices.
_summaryNoHuman-readable summary of the result.
_coverageNoCompleteness of the requested window and result set.
_evidenceNoReplayable arguments, exact-data digest, row count, and completeness receipt.
_orderingNoOrdering guarantees for the returned data.
_executionNoBounded execution and scan details.
_freshnessNoFreshness and finality information for the returned data.
next_stepsNoSafe follow-up actions and continuation guidance.
_paginationNoPagination state and an optional continuation cursor.
investigationNoEvidence paths, useful pivots, and result limitations.
pipes_handoffNoOptional SQD Pipes guidance for custom data needs.
_tool_contractNoTool identity, intent, and supported blockchain families.
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful scoping context (raw event rows, optional call/extrinsic context) and an MCP App caveat, but does not disclose deeper behaviors like rate limits, ambiguity handling, or result freshness beyond what the schema/output schema already provide.

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

Conciseness4/5

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

The description is longer than average but well-structured with clear sections and no filler. It front-loads the core purpose, then continues with user asks, when/don't-use guidance, an example, and an app note. Each section earns its place, though the MCP App paragraph is slightly tangential.

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

Completeness4/5

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

For a 14-parameter tool with zero required parameters and a rich output schema, the description covers the important decision points: raw events, event-name filtering, context inclusion, and when not to use it. The example clarifies typical usage. It does not exhaustively explain every time-filter variant, but the schema already carries that burden.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter. The description's example demonstrates a realistic call shape, which adds practical value, but it does not add new semantic meaning beyond the structured parameter definitions.

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

Purpose5/5

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

The description opens with a specific verb and resource: "Query raw Substrate or Polkadot event rows with pallet/event-name filters." It clearly distinguishes itself from call- and analytics-oriented siblings, especially portal_substrate_query_calls, by emphasizing that this tool returns event rows first.

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

Usage Guidelines4/5

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

The WHEN TO USE and DON'T USE sections give explicit contexts: raw event records, pallet-level activity like Balances.Transfer, and avoiding calls or aggregate analytics. It stops short of naming the exact sibling tools (e.g., portal_substrate_query_calls), so the guidance is clear but not fully explicit about alternatives.

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

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables natural-language-driven on-chain data analysis for TRON blockchain events via MongoDB, allowing AI assistants to query blocks, transactions, contract events, and perform analytics like aggregations, histograms, and address profiling.
  • A
    license
    A
    quality
    A
    maintenance
    Thin MCP wrapper around the SQD Portal API for blockchain data queries across multiple networks including EVM, Solana, Bitcoin, Substrate, and Hyperliquid. Provides 25 public tools for discovery, cross-chain queries, and chain-specific operations.
    10
    28
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Provides 14 read-only tools to query USDD stablecoin protocol data across TRON, Ethereum, and BSC, enabling AI agents to fetch supply, APY, collateral, and vault configurations.
    14
    7
    1
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.