Skip to main content
Glama

Server Details

Query onchain data across EVM, Solana, Bitcoin, Substrate, and Hyperliquid via the SQD Portal API.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

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.4/5 across 28 of 28 tools scored. Lowest: 3.7/5.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct resource and action, with clear differentiation across blockchains and operation types. Descriptions provide 'DON'T USE' guidance to avoid confusion, and overlapping purposes are minimal.

Naming Consistency5/5

All tools follow a consistent 'portal_{domain}_{action}_{object}' pattern using snake_case. Even nested names like portal_debug_hyperliquid_query_replica_commands maintain the convention, making the set predictable.

Tool Count4/5

28 tools is above the typical 3-15 range, but the server covers multiple blockchains (Bitcoin, EVM, Solana, Substrate, Hyperliquid) plus general utilities, so each tool earns its place. However, the count is slightly heavy for a single server.

Completeness3/5

The tool set covers analytics, raw queries, and time-series for each blockchain, but lacks some common operations like direct transaction-by-hash lookup or simple balance queries. Debug tools are hidden, but gaps may force workarounds.

Available Tools

28 tools
portal_bitcoin_get_analyticsAInspect

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"}

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)
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It mentions that include_address_activity requires extra queries (slower), but does not disclose other behaviors like parameter conflict resolution, rate limits, or side effects. A bit more detail is needed.

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 sections and examples, but slightly verbose. It is front-loaded with the main purpose. Every sentence adds value, but some redundancy exists.

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

Completeness2/5

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

The tool has 9 parameters and no output schema. The description does not detail the return structure or explain parameter conflicts (e.g., from_block vs timeframe). More guidance is needed for complete usage.

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 schema already describes parameters. The description adds value by explaining the 'mode' parameter (fast vs deep) and providing block counts for timeframe. This exceeds the baseline of 3.

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 gets a 'big picture' for Bitcoin block, fee, and address activity. It specifies the resource (Bitcoin analytics) and verb (get), and distinguishes from sibling tools by focusing on network-level analytics rather than raw 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 includes dedicated sections like 'COMMON USER ASKS', 'FIRST CHOICE FOR', 'WHEN TO USE', and 'DON'T USE'. It explicitly advises against using when needing raw transactions and provides an example, making usage conditions very clear.

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

portal_bitcoin_query_transactionsAInspect

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax transactions to return (default: 50, max: 200)
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.
Behavior2/5

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

No annotations are provided, so the description should disclose behavioral traits. It does not mention whether the tool is read-only, destructive, requires authentication, or has rate limits. The description focuses on usage rather than side effects or behavior beyond what the input schema states.

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 sections (COMMON USER ASKS, WHEN TO USE, etc.) and front-loads the main purpose. However, it is somewhat verbose, repeating parameter information present in the schema, which could be more concise.

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 complexity of 12 parameters and no output schema, the description covers major use cases and provides examples. It lacks details on return values or error handling, but the examples and usage guidelines make it reasonably complete for an agent.

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 baseline is 3. The description adds minimal semantic value beyond the schema; examples illustrate parameter combinations but do not explain relationships (e.g., timeframe vs. from_block/to_block) or cursor usage in depth.

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 states 'Query raw Bitcoin transactions and optionally attach inputs and outputs inline,' providing a specific verb and resource. It distinguishes from sibling tools (e.g., EVM, Solana, analytics tools) by focusing on raw Bitcoin transactions with optional inline attachments.

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 dedicated 'WHEN TO USE' and 'DON'T USE' sections, clearly specifying scenarios (e.g., needing raw records, UTXO envelope) and exclusions (e.g., quick wallet summary). Examples illustrate common use cases, providing practical guidance.

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_commandsAInspect

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

COMMON USER ASKS:

  • Recent order actions

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 actions: {"network":"hyperliquid-replica-cmds","timeframe":"1h","limit":20}

ParametersJSON Schema
NameRequiredDescriptionDefault
userNoUser wallet addresses (0x-prefixed, lowercase)
limitNoMax actions to return
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".
Behavior3/5

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

No annotations are provided, so the description carries full burden. It does not explicitly state that the tool is read-only, idempotent, or whether any side effects occur. The 'Query' verb implies read-only but lacks explicit disclosure.

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 (ADVANCED, COMMON USER ASKS, WHEN TO USE, DON'T USE, EXAMPLES). It is concise, front-loaded, and every sentence adds value.

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 and no output schema, the description covers the tool's purpose, usage context, and provides an example. It lacks output format details but is otherwise complete for its domain.

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 baseline is 3. The description adds an example (network, timeframe, limit) but does not elaborate on parameter meaning beyond the schema. Minimal added value.

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 the tool queries Hyperliquid replica-command actions (orders, cancels, leverage updates) and distinguishes it from fills and analytics. The 'COMMON USER ASKS' section reinforces 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 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 provide clear guidance on when to use this tool (debugging replica-command records, needing raw order events) and when not to (public trading, fills, analytics).

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

portal_debug_query_blocksAInspect

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)
Behavior3/5

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

No annotations exist, so description bears full burden. It states it queries raw block records but does not disclose read-only nature, side effects, or response format. While schema explains parameters, behavioral traits like 'read-only' are missing. Adequate but not comprehensive.

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?

Extremely concise yet structured with clear sections (ADVANCED, COMMON USER ASKS, WHEN/DON'T USE, EXAMPLES). Every sentence adds value, no redundancy, and front-loaded with the core purpose.

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 11 parameters and no output schema, the description sufficiently covers purpose and usage scenarios. It provides an example and distinguishes from siblings. Lacks details on return format, but for a query tool with rich schema, this is acceptable. Slightly incomplete for agents that need output structure.

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% with detailed parameter descriptions. The description adds minimal extra value beyond an example usage. Baseline 3 is appropriate as schema handles most semantics; the example provides practical context but no deep parameter clarification.

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 'Query raw block records directly for EVM, Solana, or Bitcoin' and specifies it's for debugging Portal coverage or block-level fields. This distinctively separates it from sibling tools like transactions or analytics queries.

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 provide clear context: use for debugging raw blocks, not for normal end-user questions, and prefer other tools like recent activity or raw transactions first. Example usage reinforces guidelines.

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_blockAInspect

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"
Behavior3/5

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

No annotations provided, so description must disclose behavioral traits. It mentions 'debugging' and 'inspect exact versus estimated resolution', implying a read-only operation, but lacks details on potential costs, rate limits, or other side effects. The 'ADVANCED' label hints at caution, but more explicit disclosure would improve transparency.

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 into clear sections (header, common asks, when/don't use, examples). Each sentence is purposeful, and the entire description is concise without unnecessary words.

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 tool's simplicity (2 parameters, no output schema), the description covers purpose, usage context, and examples. It could be more explicit about the return value format, but the phrase 'nearest indexed block or slot' gives a reasonable expectation. Overall, it is sufficiently complete for most contexts.

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% for both parameters, but description adds value by providing concrete examples (e.g., '1h ago', ISO datetime) and demonstrating usage with network names like 'base-mainnet' and 'polkadot'. This clarifies acceptable input formats beyond the schema's generic 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 clearly states 'Resolve a timestamp to the nearest indexed block or slot', providing a specific verb and resource. It distinguishes from sibling tools like portal_get_time_series and portal_get_head by labeling itself as 'ADVANCED' and focusing on debugging timestamp windows.

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 explicitly states debugging scenarios (timestamp windows, manual block-range queries), and the DON'T USE section warns against using it when other tools ('most public tools') accept natural timestamps directly, offering clear guidance on alternatives.

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

portal_evm_get_analyticsAInspect

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}

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
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral transparency. It does not disclose whether the tool is read-only, destructive, or any side effects. It mentions 'compact overview metrics' but doesn't explain what that entails or if there are rate limits/auth needs. The description lacks essential safety and behavior context.

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 highly concise and well-structured: header, common asks, first choice, when to use, don't use, and an example. Every sentence serves a purpose, and the information is front-loaded. No redundancy.

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?

Given that there is no output schema, the description could better explain what the response contains beyond 'ranked contracts and compact overview metrics'. With 9 parameters and many sibling tools, the description is adequate but not fully complete; it doesn't outline the return structure or how to handle pagination.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds marginal value beyond the schema: it provides an example usage and explains the concept of 'ranked contracts'. However, it doesn't add syntax or format details for parameters like 'from_timestamp' or 'mode' 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 clearly states 'Get the big picture for network-wide EVM activity with ranked contracts and compact overview metrics.' It specifies the verb, resource, and output. It also distinguishes itself from raw record lists and mentions 'FIRST CHOICE FOR: the big picture' which helps differentiate from sibling tools.

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

Usage Guidelines4/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, with specific scenarios like wanting the most active contracts. It gives a clear example. However, it doesn't explicitly name alternative sibling tools (e.g., portal_evm_get_contract_activity) for when to use those instead, leaving some ambiguity.

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_activityAInspect

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"}

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
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It explains the output (interactions, callers, events) and parameter details, but lacks information on data freshness, rate limits, or side effects. It is adequate but not thorough.

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 concise and well-structured with clear sections (FIRST CHOICE, WHEN TO USE, DON'T USE, EXAMPLES). Every sentence adds value without redundancy.

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 7 parameters (all described in schema) and no output schema, the description covers the essential output (interactions, callers, events) and includes an example. It is complete enough for agent use, though a detailed output format would elevate it.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents each parameter fully. The description adds minimal extra context beyond the schema descriptions (e.g., examples for time formats). Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the purpose: 'Summarize what one specific contract has been doing lately...' with a specific verb and resource. It distinguishes from sibling tools that deal with raw logs or other networks, making it easy for an agent to select correctly.

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 explicitly provides 'WHEN TO USE' and 'DON'T USE' sections, including example user asks and clear exclusions. It tells the agent when to choose this tool over alternatives like raw logs.

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_deploymentAInspect

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"}

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.
Behavior4/5

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

With no annotations, the description effectively communicates the tool's behavior: it locates deployment traces within a bounded window, supports scanning order, and requires block/time hints for older contracts. No contradictions.

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 sections and examples, making it easy to parse. It is somewhat verbose but every part adds useful information.

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 has 11 parameters and no output schema, yet the description fully explains the tool's function, usage conditions, and provides multiple examples. It is complete and leaves no ambiguity.

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?

Input schema has 100% coverage, so parameters are documented. The description adds value by providing context, usage hints (e.g., 'from_block: Provide this for older contracts'), and examples that clarify parameter combinations.

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 the tool's purpose: 'Locate the create trace and parent transaction that deployed a specific EVM contract address within a bounded window.' This is specific and distinct from sibling tools like portal_evm_get_contract_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?

The description includes explicit sections for 'WHEN TO USE', 'DON'T USE', and examples. It tells the agent when to use this tool and when to consider alternatives, e.g., not for general contract activity.

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

portal_evm_get_ohlcAInspect

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"}

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.
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that v4 uses PoolManager Swap events not per-pool addresses, explains execution depth modes (fast/deep), and gives example parameters. However, it does not mention data freshness, rate limits, or idempotency, leaving minor gaps for a complex tool.

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 sections (common asks, when/don't use, examples). Front-loaded with core purpose. However, length is high due to many examples and parameter repetition, which could be slightly condensed without losing clarity.

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?

Despite many parameters and no output schema, the description provides extensive examples and parameter details. However, it lacks explanation of the output format (OHLC candle structure, trade tape fields) and details on 'deep' vs 'fast' mode behavior. A more complete description would cover return schema or common response fields.

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%, but the description adds value beyond schema by providing usage context (e.g., 'price_in: auto picks the more human-readable quote side') and multiple examples that map parameters to real-world scenarios.

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 the tool builds 'chart-ready EVM OHLC candles plus a recent trade tape from supported DEX event sources'. It lists common user asks and provides examples, effectively distinguishing it from sibling tools like portal_evm_get_analytics or portal_get_time_series.

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 with clear alternatives (e.g., 'You need OHLC candles for supported EVM event-derived price sources' vs 'You only need counts or scalar metrics over time'). Also provides examples mapping to specific use cases.

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

portal_evm_query_logsAInspect

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}

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: 200). Note: Lower default for MCP to reduce context usage.
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.
timeframeNoTime range (e.g., '24h', '7d'). Alternative to from_block/to_block. Supported: 1h, 6h, 12h, 24h, 3d, 7d, 14d, 30d
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".
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
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses performance implications (recommended block range) and parameter effects (addresses/topics for speed). Does not mention auth or rate limits, but adequate for a read operation.

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?

Well-structured with clear headers (COMMON USER ASKS, WHEN TO USE, DON'T USE, EXAMPLES). Front-loaded summary sentence. No wasted text; every section adds value.

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?

Highly comprehensive given 24 parameters and no output schema. Covers use cases, parameter explanations, examples, performance tips. Examples show expected outputs like decoded_log.token_id.

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%, baseline 3. Description adds meaning beyond schema: explains event aliases, topic roles, scan_order usage, token_symbols resolution, examples. Significant extra 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 description clearly states it queries raw EVM logs with filters, aliases, scanning, and decoding. It specifies the tool's resource and action, and distinguishes from sibling tools like token-transfer 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 list and DON'T USE section with alternative tool mention (token-transfer). Includes specific scenarios like first/last event and NFT mint lookups.

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_transfersAInspect

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}

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.
Behavior4/5

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

No annotations are provided, so description carries full burden. It discloses that the tool is the 'fastest answer' and 'easiest trivial query', implying read-only and efficient behavior. However, it does not explicitly mention side effects, authentication needs, or rate limits, which would be helpful.

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?

Description is well-structured with clear sections and front-loaded purpose. Every sentence adds value; examples are concise and illustrative. No redundant or wasteful text.

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 lack of output schema, description could be more explicit about the response format (e.g., what fields are returned). However, tool name implies standard transfer event data, and the parameter documentation covers inputs well. Missing info on pagination behavior is minor given cursor parameter.

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% (all parameters described). Description adds additional meaning beyond schema with common user asks and examples that illustrate parameter usage (e.g., 'scan_order' for earliest first). It provides context for parameter choices like token_symbols vs token_addresses.

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 tool name and description clearly state it queries token-transfer activity on EVM. It uses specific verbs ('query', 'get') and resource ('token transfers'), and distinguishes from sibling tools like portal_evm_query_logs by noting it avoids needing to remember Transfer event signatures.

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?

Description includes explicit 'WHEN TO USE' and 'DON'T USE' sections, providing clear context for appropriate usage and exclusions. It gives common user asks and examples, guiding the agent in selecting 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_evm_query_transactionsAInspect

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax transactions (default: 20, max: 200). Note: Lower default for MCP to reduce context usage.
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.
timeframeNoTime range (e.g., '24h', '7d'). Alternative to from_block/to_block. Supported: 1h, 6h, 12h, 24h, 3d, 7d, 14d, 30d. Large ranges OK with 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.
Behavior4/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It explains that the tool can include logs, traces, state diffs, and mentions scanning order, safety caps (via param description), and block range recommendations. While it implicitly indicates read-only behavior through the word 'query', it does not explicitly state safety or error handling. Still, the provided details give sufficient behavioral insight for an agent.

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 (COMMON USER ASKS, WHEN TO USE, DON'T USE, EXAMPLES) and front-loaded with the core purpose. However, it is lengthy due to the complexity of the tool. While every sentence adds value, some sections repeat concepts (e.g., COMMON USER ASKS overlaps with WHEN TO USE), preventing a perfect score.

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?

Given the tool's 35 parameters and no output schema, the description provides substantial guidance on when and how to use the tool, with multiple examples. However, it does not describe the structure of the response or the format of returned transaction data, which is a gap for an agent to fully understand the output. The description is adequate but not fully complete.

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 baseline is 3. The description does not add per-parameter semantics beyond what the schema already provides. It includes examples that illustrate usage of parameters, but the schema descriptions themselves are already detailed. Thus, the description meets the baseline without adding significant extra parameter meaning.

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 begins with a clear and specific verb-resource statement: 'Query raw EVM transactions with optional logs, traces, state-diff context, and evidence pivots for transaction-level investigations.' It lists common user asks and explicitly distinguishes from convenience tools, making the tool's purpose unambiguous and differentiating it from siblings like 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?

Contains dedicated 'WHEN TO USE' and 'DON'T USE' sections with explicit scenarios and alternatives. For example, it advises against using this tool for 'only a quick recent feed or wallet-level summary' and provides specific use cases like filtering by sender or finding first EIP-2930 transaction. This gives clear context for when to invoke this tool vs. other methods.

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

portal_get_headAInspect

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
Behavior4/5

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

No annotations provided, so the description bears the burden. It discloses the tool is for getting the current head and gives examples. However, it does not explicitly state if it's read-only, what exactly is returned (e.g., just a number or more), or any potential side effects. Lacks full transparency.

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 sections, bullet points, and examples. It is concise, front-loaded with the core purpose, and every sentence adds value without being verbose.

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 no output schema and no annotations, the description covers purpose, usage, parameters, and examples. It lacks an explanation of the return value format, which would complete the context for an agent. Still, it is quite thorough for a simple tool.

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% (both parameters described). The description adds value by providing examples for 'type' (latest/finalized) and explaining 'network' as a name or alias. It reinforces schema info with 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 description clearly states 'Get just the latest indexed head block or slot for a network.' The verb 'Get' and resource 'latest indexed head block or slot' are specific. The examples and sibling list show differentiation from other 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 sections 'FIRST CHOICE FOR', 'WHEN TO USE', and 'DON'T USE', providing clear context on when to use this tool (e.g., before building a manual block range) and when not to (e.g., wanting to check if network is caught up).

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

portal_get_network_infoAInspect

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
Behavior4/5

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

Discloses the outputs: freshness, lag, heads, available tables. No annotations exist, so description carries full burden. It doesn't specify side effects or permissions, but as a read-only query, it's safe. Slightly lacking explicit mention of no destructive behavior, but still clear.

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?

Well-structured with sections: description, common asks, first choice, when to use, don't use, examples. Front-loaded with main purpose. Every sentence adds value, no redundancy.

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 simple input schema (1 param) and no output schema, the description fully explains return values and usage context. Example input shows how to call the tool. Sufficient for an agent to use correctly.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter 'network'. Description doesn't add extra meaning beyond the schema's 'Network name or alias'. Baseline 3 is appropriate, as no compensation needed.

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 the tool answers whether a network is caught up, providing indexing freshness, lag, heads, and tables. It uses a specific verb ('check') and resource, distinguishing it from siblings like portal_get_head which only returns head.

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?

Explicitly provides when to use (checking indexing status before querying, need chain family) and when not to use (only need latest block/slot). Also includes 'first choice for' and examples. This is comprehensive guidance.

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

portal_get_recent_activityAInspect

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax transactions to return (max: 200)
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".
Behavior4/5

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

No annotations exist, so the description carries the full burden. It discloses that the tool returns a bounded, recent evidence timeline with chronological paging and is non-destructive. However, it does not elaborate on the exact output format or pagination behavior, leaving some ambiguity about the response structure.

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 clear sections (summary, common asks, first choice, when/don't use, examples). Every sentence adds value, and the layout is scannable. It is appropriately sized for the tool's complexity.

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?

While the description thoroughly covers usage and parameter guidance, it lacks details about the response format. With no output schema, the agent is left guessing what fields are returned, which is a notable gap for effective invocation.

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 description adds minimal extra meaning beyond the schema; it provides example parameter values but does not explain cursor usage or timestamp formats beyond what the schema already 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 clearly states it retrieves a simple recent-activity feed across multiple networks with chronological paging and investigation pivots. It distinguishes from sibling raw query tools by positioning itself as the first choice for recent activity, making the purpose unambiguous.

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 explicitly provides 'FIRST CHOICE FOR', 'WHEN TO USE', and 'DON'T USE' sections, clearly indicating appropriate contexts and exclusions. Examples further clarify usage patterns, and sibling tools are implicitly differentiated as raw query alternatives.

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

portal_get_time_seriesAInspect

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}

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
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses aggregation, default window, compare_previous, mode depth. Minor lack: no mention of rate limits or response size, but adequate.

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?

Well-structured with headings and examples. Front-loaded with core purpose. Concise yet informative for a complex tool.

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?

Covers all key aspects: common asks, when to use, examples. No output schema but description not expected to compensate. Complete for a time-series query tool.

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 100% so baseline 3. Description adds value with examples and clarifies mode parameter meaning beyond enum. Defaults explained.

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?

Clearly states it builds simple activity charts and time-series views. Specific verb 'build' and resource. Distinguishes from siblings like OHLC 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?

Explicit WHEN TO USE and DON'T USE sections with concrete alternatives (raw record lists, DEX pool candles). Provides default behavior hints.

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

portal_get_wallet_summaryAInspect

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"}

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 (txs, tokens, nfts)
response_formatNoResponse format: defaults to 'compact' for a readable wallet investigation. Use 'summary' for headline flow only or 'full' for all returned activity rows.
Behavior4/5

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

No annotations, but description adequately discloses that it aggregates and summarizes data. Mention of fast/deep modes in parameters adds transparency. No contradictions.

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?

Well-structured with clear sections, front-loaded purpose, and no wasted sentences. Each section 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 11 parameters and no output schema, the description covers use cases, examples, and trade-offs well. Some missing details on return format, but overall sufficient.

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 baseline 3. Examples in description add practical context for typical parameter combinations, enhancing value beyond 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?

Clearly states it summarizes wallet activity and fund flow, with specific use cases like suspicious wallet triage. Distinguishes from siblings by being a high-level summary, not raw records.

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, plus FIRST CHOICE FOR and COMMON USER ASKS. Clearly guides when to use this tool vs. alternatives.

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

portal_hyperliquid_get_analyticsAInspect

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"}

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
Behavior3/5

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

No annotations are given, so the description must carry the full burden. It does not explicitly state the tool is read-only, non-destructive, or any authentication/rate-limit requirements. However, the description and parameter 'response_format' imply it is a read operation returning aggregated analytics. For a complete picture, explicit behavioral statements would be beneficial.

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 concise and well-structured with clear headings (COMMON USER ASKS, WHEN TO USE, DON'T USE, EXAMPLES). Every sentence adds value without redundancy, and the length is appropriate for the tool's complexity.

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 9 parameters and no output schema, the description covers the main purpose, usage guidance, and examples. It lacks details about the output structure (only mentioned as sections). For a more complete picture, describing the return format or key fields would help, but it is adequate for an analytics tool.

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 value by listing output sections (top traders, volume by coin, fees, PnL) which maps to what parameters like 'response_format' control. The examples show common parameter combinations, aiding understanding beyond the schema alone.

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 fetches aggregate Hyperliquid fill analytics including top traders, volume, fees, and PnL. The verb 'Get' and specific resource 'big-picture Hyperliquid fill analytics' are precise. It distinguishes itself from siblings like portal_hyperliquid_query_fills (individual fills) and portal_hyperliquid_get_ohlc (candles) by emphasizing aggregate, network-level data.

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 are provided, telling the agent exactly when to choose this tool (network-level analytics, want top traders/volume/fees/PnL) and when not to (need individual fills or OHLC candles). Examples further clarify typical use cases.

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

portal_hyperliquid_get_ohlcAInspect

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"}

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
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool uses fills to produce OHLC, volume, and VWAP data. It explains the auto interval mapping and mentions fixed buckets. It does not explicitly state it is read-only or mention auth/rate limits, but covers core behavior well.

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 sections for purpose, common asks, usage guidance, and examples. It is concise, front-loaded with the key function, and every sentence adds value with no redundancy.

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?

Despite lacking an output schema, the description explains the return data (candles with OHLC, volume, VWAP). It covers purpose, parameters, usage guidelines, and provides an example, making it complete for an agent to select and invoke.

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% with each parameter described. The description adds value by explaining the optionality of coin with cursor, detailing interval auto ranges, and providing an example. This exceeds the baseline of 3 for high coverage.

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 the tool builds chart-ready OHLC candles with fixed buckets and auto intervals. It uses specific verbs and resources, and the common user ask example (BTC candles) further clarifies. It distinguishes from siblings like portal_hyperliquid_query_fills and portal_hyperliquid_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 includes explicit 'WHEN TO USE' and 'DON'T USE' sections, providing clear guidance on when to use this tool vs alternatives. It specifies to use for candles for one coin on Hyperliquid, and not for scalar time-series buckets or raw fills.

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

portal_hyperliquid_query_fillsAInspect

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}

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: 50, max: 200)
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
Behavior3/5

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

No annotations are provided, so the description carries the full burden for behavioral disclosure. It implicitly indicates read-only through the name 'query' and mentions returning raw records, but does not explicitly state that it doesn't modify state, nor does it cover rate limits, authorization needs, or side effects. It adds some context about filtering capabilities but lacks comprehensive transparency.

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 clear sections (main description, user asks, when/don't use, examples). It is concise, using bullet points and direct language, and every sentence adds value without redundancy.

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 18 parameters with 100% schema coverage and no output schema, the description is fairly complete. It includes usage guidance, examples, and covers key contextual aspects. However, it does not detail return values or pagination behavior beyond the cursor parameter, leaving minor gaps.

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 parameters well. The description provides a brief common use case and examples, but does not add significant meaning beyond what the parameter descriptions already convey. It does not explain relationships or provide additional syntax details.

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 the tool's purpose: 'Query raw individual Hyperliquid fills with trader, coin, fee, PnL, and builder context.' It uses specific verbs and resources, and distinguishes from siblings like portal_hyperliquid_get_analytics by emphasizing raw versus aggregated data.

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 detailed conditions and alternatives such as using portal_hyperliquid_get_analytics for aggregates or portal_hyperliquid_get_ohlc for candles.

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

portal_list_networksAInspect

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
network_typeNoFilter by network type
real_time_onlyNoOnly show networks with a real-time indexed head
Behavior4/5

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

Although no annotations are provided, the description implies a safe, read-only discovery operation through its examples and use cases. It does not explicitly state non-destructiveness or lack of side effects, but the context (listing/finding networks) strongly suggests it. A 4 is appropriate as it is largely transparent.

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 clear sections (purpose, common asks, usage rules, examples). It is concise yet comprehensive, with no wasted words. Every sentence adds information.

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 is a simple list/discovery operation with no output schema, the description covers purpose, parameters, usage, and examples thoroughly. It is complete enough for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant value with concrete examples (e.g., 'query':'base', 'vm':'solana','network_type':'mainnet') showing how to combine parameters. This practical guidance exceeds what the schema alone 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?

Description clearly states the tool finds the right network or chain name across multiple VM families (EVM, Solana, Bitcoin, Substrate, Hyperliquid). It gives concrete examples of user asks and distinguishes itself from sibling tools that query specific network data.

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?

Explicitly spells out when to use ('FIRST CHOICE', 'WHEN TO USE') and when not to ('DON'T USE'), with clear criteria like being unsure of the network name or wanting to filter by VM/network type. This provides unambiguous guidance.

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

portal_resolve_entityAInspect

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".
Behavior3/5

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

No annotations are provided, so the description carries full burden. While it explains the core function and gives examples, it does not disclose behavioral traits like idempotency, rate limits, or result format. It lacks explicit safety or read-only hints.

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 examples. It is informative but slightly verbose; a few sentences could be trimmed without losing meaning. Overall, it is appropriate for the tool's complexity.

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?

The description covers common use cases, when to use, and examples. It lacks details on return format and error handling, but given the tool's purpose (resolution), it is reasonably complete. No output schema exists, so some ambiguity remains.

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% with good parameter descriptions. The description adds value by providing usage context and examples (e.g., kind values, query formatting) beyond the schema, though the schema already does a solid job.

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 the tool resolves user-facing blockchain entities into query-ready identifiers. It lists specific use cases like token symbols, contract aliases, and protocol names, distinguishing it from sibling tools that perform queries or 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 guidance with 'FIRST CHOICE FOR', 'WHEN TO USE', and 'DON'T USE' sections. It tells the agent exactly when to invoke the tool and when not to, such as when addresses are already known.

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

portal_solana_get_analyticsAInspect

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}

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)
Behavior4/5

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

No annotations provided, so the description carries full burden. It discloses performance implications (include_programs requires extra scan, include_compute_units disabled by default for speed) and explains mode behavior. However, it does not mention authentication, rate limits, or return format behavior.

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?

Well-structured with clear sections (COMMON USER ASKS, FIRST CHOICE FOR, WHEN TO USE, DON'T USE, EXAMPLES). Every sentence adds value; no redundancy. Front-loaded with key purpose.

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 10 parameters and no output schema, the description covers purpose, usage scenarios, and performance trade-offs. It lacks explanation of return values or error handling, but overall provides sufficient context for selection and basic usage.

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 baseline is 3. The description adds usage context (e.g., 'Include top programs' in COMMON USER ASKS) and examples with parameter values, but does not provide details beyond the schema descriptions for individual parameters.

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

Purpose5/5

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

The description clearly states the tool retrieves 'the big picture for Solana throughput, fees, wallet activity, and optional top-program usage.' It uses a specific verb ('Get') and resource ('big picture'), and distinguishes from siblings like raw transaction queries by emphasizing aggregated analytics. The 'FIRST CHOICE FOR' section reinforces 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 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 explicitly guide when to select this tool (e.g., 'big picture for Solana right now') and when not to (e.g., 'chart buckets or raw transaction/instruction records'). Examples further clarify common use cases.

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

portal_solana_query_instructionsAInspect

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}

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
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
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It implies read-only nature ('Query') but does not explicitly state it is non-destructive, nor does it mention authentication, rate limits, or error handling. Cursor-based pagination is mentioned but not explained.

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 headings (COMMON USER ASKS, WHEN TO USE, DON'T USE, EXAMPLES) and is concise. Every sentence adds information, and the example is directly useful. No redundant text.

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 complexity of the tool (39 parameters, no output schema), the description covers the main use cases and provides an example. However, it lacks an explanation of the return format (what fields are returned) and does not detail pagination behavior beyond mentioning a cursor. Slightly incomplete for a tool of this complexity.

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% with each parameter having a description. The tool description adds value beyond the schema by providing an example that demonstrates typical usage (e.g., program_id, network, timeframe, limit), giving semantic context for how parameters interact.

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 raw Solana instructions with program and account filters. It lists a common use case (Token Program instructions) and distinguishes from sibling tool portal_solana_query_transactions by explicitly stating not to use when only transaction-level activity is needed.

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, provides an example with concrete parameter values, and implicitly contrasts with transaction-level queries handled by a sibling tool.

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

portal_solana_query_transactionsAInspect

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax transactions to return (default: 50, max: 200)
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
Behavior4/5

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

No annotations exist, so the description must convey behavior. It mentions optional include flags, response formats, and query capabilities. However, it does not explicitly state read-only nature or side effects, and the misleading example slightly reduces transparency.

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 headers and a front-loaded purpose, but it is lengthy and contains an inaccurate example. It could be more concise without losing clarity.

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

Completeness2/5

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

For a tool with 17 parameters and no output schema, the description omits important details like pagination (cursor usage), relationship between block/timestamp filters, and response format specifics. The erroneous example undermines completeness.

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

Parameters2/5

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

Schema descriptions cover all parameters at 100%, setting a baseline of 3. However, the description's example uses 'program_id' which is not in the schema, likely causing confusion. No additional semantic value is provided beyond what the schema already offers.

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 the verb 'Query' and the resource 'raw Solana transactions' with optional inclusions. It distinguishes itself from sibling query tools by being Solana-specific and targeting raw 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' and 'DON'T USE' sections explicitly guide selection, noting when to prefer this tool over convenience tools or recent activity queries. Alternatives are implied via sibling names.

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

portal_substrate_get_analyticsAInspect

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"}

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
Behavior4/5

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

No annotations provided, so description carries full burden. It effectively communicates it's a read-only analytics snapshot (no destructive actions) and describes output contents (counts, top names). Lacks explicit mention of response structure or error behavior, but covers core behavior well.

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?

Well-structured with headings but somewhat repetitive (e.g., FIRST CHOICE FOR overlaps with WHEN TO USE). Could be tightened without losing clarity.

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 parameters (all optional) and no output schema, description provides sufficient context: explains output contents, response_format parameter, and usage scenarios. Missing explicit response shape but adequate for selection and invocation.

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%, baseline 3. Description adds value by explaining mode defaults, timeframe options, and from_block vs timeframe usage, along with examples showing parameter combinations. Exceeds schema alone.

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 provides an 'Analytics snapshot for Substrate or Polkadot activity' with counts and top event/call names, distinguishing it from sibling tools like portal_substrate_query_events that return raw records.

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?

Includes explicit 'WHEN TO USE' and 'DON'T USE' sections, common user asks, and examples, providing clear guidance on when to invoke this tool vs alternatives like portal_substrate_query_calls or portal_substrate_query_events.

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

portal_substrate_query_callsAInspect

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax calls to return
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
Behavior4/5

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

No annotations provided, so description carries full burden. It mentions return of raw call rows, optional inclusion of events/subcalls/extrinsic, and response format options (compact mode). Could be improved with performance or pagination details, but sufficient.

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 sections and bullet points. Information is front-loaded. Slightly verbose but each sentence adds value; could be trimmed slightly.

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

Completeness4/5

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

With 15 parameters and no output schema, the description covers purpose, usage, examples, and exclusions. Lacks output structure details but provides enough context for an AI agent to use effectively.

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% (baseline 3). The description adds concrete examples for parameters like call_names and timeframe, and explains response_format behavior, going beyond basic 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 explicitly states it queries raw Substrate or Polkadot calls with filters, and the examples reinforce this. It clearly distinguishes from sibling tools like portal_substrate_query_events by emphasizing calls vs 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?

Provides explicit 'WHEN TO USE' and 'DON'T USE' sections, along with 'FIRST CHOICE FOR' and common user asks. Examples illustrate appropriate use cases.

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

portal_substrate_query_eventsAInspect

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax events to return
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
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses filtering, optional context inclusion, and response format, but does not explicitly mention read-only nature or authentication requirements.

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?

Well-structured with sections and bullet points. Every sentence provides useful information. Front-loaded with the main action and contextual sections.

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

Completeness4/5

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

With 14 parameters and no output schema, the description covers usage context, examples, and behavioral details. Lacks explicit mention of return structure but is otherwise complete.

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%, but description adds value through examples (e.g., event_names format) and explanation of response_format. The example usage clarifies parameter combinations.

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 clearly states the tool queries raw Substrate or Polkadot event rows with pallet/event-name filters and optional context. It distinguishes from siblings by specifying 'raw event rows' and providing examples like Balances.Transfer.

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 sections for COMMON USER ASKS, FIRST CHOICE FOR, WHEN TO USE, and DON'T USE provide clear guidance on when to choose this tool over alternatives like calls or aggregate analytics.

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

Discussions

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

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources