avalanche-mcp-server
Avalanche MCP is a read-only Model Context Protocol server that gives AI agents the full Avalanche stack — documentation search, protocol knowledge, L1/ICM workflows, and live on-chain data.
Documentation & knowledge: full-text search over Avalanche docs, Academy, integrations, blog, ACPs, AvalancheGo/Subnet-EVM, ICM, and CLI sources; read/list doc pages; curated guides for architecture, L1 launches, precompiles, ICM, troubleshooting, and gas/fees.
Protocol & upgrades: list and look up all 36 ACPs with status/track/authors, check live ACP signaling from nodes, and view the Banff → Helicon upgrade timeline with versions and developer impact.
L1 & ICM workflows: generate valid Subnet-EVM genesis.json files, get step-by-step L1 launch plans, Teleporter/ICM sender-receiver recipes, error troubleshooting, and Builder Console deep links.
Live EVM chain access: query balances, blocks, transactions, receipts, contract code, read-only
eth_call, and gas estimates on C-Chain, Fuji, known L1s, or any RPC URL.P-Chain / X-Chain / node data: list validators and subnets, get staking economics and supply, check transaction status, P/X-Chain balances, and node/network info.
Avalanche Data API: discover indexed chains, list ERC-20 balances, transaction history, token/contract metadata, and sovereign L1 validators.
Hosted federation: proxy tools from Ava Labs' official hosted Avalanche MCP for current docs search, CLI/RPC lookup, and build plan runbooks.
Safety: every tool is read-only — nothing signs or broadcasts transactions, with SSRF protection and input validation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@avalanche-mcp-serverhow do I launch an L1 on Avalanche?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Install
Hosted — nothing to install. Same shape as Ava Labs' build.avax.network/api/mcp: a public Streamable HTTP endpoint, no API key.
claude mcp add avalanche --transport http https://avalanche-mcp.dev/mcpClient | Configuration |
Claude Code | Command above, or commit |
Cursor / Windsurf |
|
Claude Desktop |
|
Local / offline |
|
Any HTTP client |
|
Run /mcp in Claude Code to verify — you should see avalanche · 41 tools.
Related MCP server: Somnia MCP Server
What it does
Ask in plain language; the agent picks the tools and cites its sources.
› What changes in the Helicon upgrade for my C-Chain indexer?
⏺ avax_upgrade_lookup(query: "Helicon")
⏺ avax_acp_lookup(query: "ACP-194")
⏺ avax_get_doc(content/docs/primary-network/helicon-upgrade.mdx)
Helicon (AvalancheGo v1.15.0-fuji) is live on Fuji since 2026-07-28; mainnet is not
scheduled yet. ACP-194 Continuous Execution decouples consensus from execution, so a
block's state root settles after a τ delay (~5 s) — don't treat "latest" as executed
state. ACP-283 makes the minimum gas price dynamic, so never hardcode a fee floor.
Sources: build.avax.network/docs/primary-network/helicon-upgrade
build.avax.network/docs/acps/194-continuous-executionOther things to ask on day one:
"Plan a permissioned enterprise L1 on Fuji with five validators, then generate the genesis."
"Explain the NativeMinter precompile and how to enable it after launch with upgrade.json."
"Send a message from Fuji C-Chain to Dispatch with Teleporter, with relayer setup."
"Which ACPs are activated, and what does ACP-176 change about gas?"
"My CLI says
subnet not trackedwhen I hit the RPC. What's wrong?""Chart C-Chain active addresses for the last 90 days, and which L1s have the most bot traffic?"
Capabilities
45 tools, every one read-only. Nothing signs or broadcasts transactions.
Area | Tools | What you get |
Knowledge | 7 | Full-text search over a bundled index of build.avax.network (docs, Academy, 234 integrations, blog), Subnet-EVM precompile docs, ICM contracts, Avalanche CLI reference — 9.9k chunks, every hit with its source URL. Curated guides for architecture, L1 launch, precompiles, ICM, gas and troubleshooting. |
Protocol & upgrades | 4 | All 36 ACPs with structured status / track / authors; the Banff → Helicon upgrade timeline with dates, versions and developer impact; live ACP signaling from nodes. |
Workflows | 6 | Tailored L1 launch plans, valid |
Live EVM | 8 | C-Chain, Fuji, known L1s or any RPC URL: balances, blocks, receipts, |
P-Chain · X-Chain · node | 8 | Validators, subnets and L1s, staking economics, tx status, UTXO balances, node and network info. |
Avalanche Data API | 5 | Indexed chains, ERC-20 balances, transaction history, token metadata, L1 validators. |
Network stats | 4 | C-Chain metric time series (transactions, active addresses/senders, fees, gas, TPS, cumulative addresses/contracts/deployers), Primary Network staking history since 2020, a 30-day ranking of every Avalanche L1 with market share, concentration and estimated bot-traffic share, and an SVG chart + table renderer so stats show up as UI. Backed by SOCI4L's public API (a daily snapshot of the Ava Labs Metrics API, P-Chain cross-checked). |
Hosted federation | 3 | Proxy to Ava Labs' official MCP for |
Plus MCP resources (avax://docs/{path}, avax://guides/{name}, avax://networks) and prompts (avalanche_launch_l1, avalanche_deploy_contract, avalanche_icm_bridge, avalanche_learn). The full tool list is at avalanche-mcp.dev/#tools or via tools/list.
Verified, not guessed
Facts that models commonly get wrong are pinned in code and checked against the docs: the C-Chain minimum base fee is 1 wei since Fortuna (ACP-176), not 25 nAVAX; subnet-evm and icm-contracts now live in avalanchego/graft and icm-services; Helicon is Fuji-only as of August 2026. Every answer carries the build.avax.network or GitHub URL it came from.
Knowledge sources
The index is built by npm run build-index from official repositories and ships inside the package, so the first search works offline:
Source | Content |
| docs, Academy (L1 and blockchain tracks), integrations, blog |
| every ACP README, parsed into structured metadata |
| README, |
| Teleporter / ICTT contracts, relayer, signature aggregator |
| command reference, templates |
soci4l.net/api/avalanche (live) | C-Chain metrics, L1 rankings, staking series — |
avax_list_topics reports the index build date so the agent knows how fresh it is; avax_fetch_live_doc fetches the current version of any page when that matters. Credential-shaped strings in documentation examples are redacted at build time.
Configuration
No configuration is required. Optional environment variables (local mode):
Variable | Purpose |
| Higher rate limits for the Avalanche Data API tools. Free key at build.avax.network. ( |
| Override the Data API base URL |
| Override the hosted Avalanche MCP endpoint used by |
|
|
| Comma-separated extra RPC hostnames to allow when custom RPCs are disabled |
| Max |
Self-hosting
Run the HTTP transport anywhere Node runs:
npx -y avalanche-mcp-server --http # POST http://localhost:3333/mcp (PORT to change)Or mount it in any web-standard runtime — Next.js route handlers, Cloudflare Workers, Hono:
import { handleMcpRequest } from "avalanche-mcp-server";
export const POST = (req: Request) => handleMcpRequest(req);This is exactly how avalanche-mcp.dev serves it (source). Responses are stateless JSON with CORS open, so browser-based clients work too.
Works with the official Avalanche MCPs
Ava Labs' hosted MCP is always current for Builder Hub search, CLI / RPC lookup and runbooks; this server adds offline knowledge, structured ACPs and upgrades, live EVM tools and end-to-end workflows. They compose:
claude mcp add avalanche --transport http https://avalanche-mcp.dev/mcp
claude mcp add avalanche-hosted --transport http https://build.avax.network/api/mcp
claude mcp add avalanche-chainkit -- npx -y @avalanche-sdk/chainkit mcp-server
claude mcp add avalanche-avacloud -- npx -y @avalabs/avacloud-sdk mcp-server --apikey $AVACLOUD_API_KEYavax_hosted_call already proxies the hosted server from inside this one, so a single registration covers most setups.
Development
git clone https://github.com/Eelvanpsd/Avalanche-mcp.git && cd Avalanche-mcp
npm install && npm run build # the index ships in the repo
npm run dev # stdio server via tsx
npm run inspect # MCP Inspector UI
npx tsx scripts/smoke.ts # end-to-end tool check over stdio
REFRESH=1 npm run build-index # re-download sources and rebuild the indexExtending it is one file each: curated guides in src/knowledge/guides.ts, the network registry in src/config/networks.ts, upgrade timeline in src/knowledge/upgrades.ts, new sources in scripts/build-index.ts.
Security
Every tool is read-only — the server never holds a private key, signs, or broadcasts. Additional hardening for public deployments:
SSRF protection — the
networkargument may be a raw RPC URL, which the server fetches. Loopback, private, link-local and cloud-metadata targets are always refused; setAVAX_ALLOW_CUSTOM_RPC=falseto allow only built-in chains (recommended when exposing the HTTP endpoint publicly).Rate limiting — the server throttles its own calls to Ava Labs' hosted MCP to stay under the shared 60/min budget. The HTTP endpoint itself is unauthenticated, so put a per-IP rate limiter in front (the reference deployment ships one; Upstash Ratelimit is a good managed option).
Input validation — addresses and identifiers are validated with zod/viem before any upstream request.
Report vulnerabilities via a private GitHub security advisory on the repo.
License
MIT. Avalanche MCP is an independent, community-built project and is not affiliated with or endorsed by Ava Labs or the Avalanche Foundation. Avalanche and the Avalanche mark are trademarks of their respective owners.
Available Tools
41 toolsavax_acp_listList Avalanche Community ProposalsARead-onlyIdempotent
List all ACPs (Avalanche Community Proposals) with structured fields: number, title, status (Activated | Implementable | Proposed | Stale), track (Standards | Best Practices | Meta | Subnet), authors, replaces/dependencies. Offline — parsed from avalanche-foundation/ACPs. Use to answer 'which upgrades are live?', 'what changed in Etna/Fortuna?'.
| Name | Required | Description | Default |
|---|---|---|---|
| track | No | Substring filter, e.g. 'Standards', 'Best Practices' | |
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive. The description adds valuable context: it is offline (no network dependency) and sourced from a specific repository. This goes beyond the annotations and informs the agent of the data source and availability, though it does not discuss pagination or limits, which are minor for a list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, packs the core purpose, output fields, and usage examples with zero fluff. It is front-loaded with the main verb and resource, making it scannable for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description compensates by listing the fields returned (number, title, status, track, authors, replaces/dependencies). It also explains the offline nature and example queries. Minor omissions like pagination or ordering are not significant for a list tool, so the description is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has only 50% coverage (track described, status not). The description compensates by explicitly listing the allowed values for both status and track, enriching the meaning of both parameters beyond the schema. This bridges the gap left by the missing status description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'ACPs', enumerates the structured fields returned, and mentions the offline parsing from avalanche-foundation/ACPs. It distinguishes from sibling avax_acp_lookup by focusing on listing all proposals, though it does not explicitly name that sibling. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete example queries ('which upgrades are live?', 'what changed in Etna/Fortuna?') that frame when to use the tool. It does not explicitly state when not to use it or name alternatives, but the examples give clear contextual guidance for listing ACPs versus more targeted lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_acp_lookupLook up an ACPARead-onlyIdempotent
Get one ACP by number or title keyword: preamble fields (status, track, authors, replaces, dependencies, discussion link), abstract, and the full text (truncated). Offline.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | e.g. '77', 'ACP-176', 'reinventing subnets' | |
| full_text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, non-destructive), so the burden is lighter. The description adds genuinely useful behavioral context: the full text is returned truncated, and the tool works offline. No contradiction with annotations, and no misleading mutation claims.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the action and query method, then packs the return fields and the offline behavior. Zero filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-required-parameter lookup tool whose safety profile is already carried by annotations, the description is largely sufficient: it specifies the query key, enumerates the returned fields, and notes truncation. Minor gaps remain (no-results behavior, truncation length, full_text semantics), but they don't block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% — the query param is described with examples ('77', 'ACP-176', 'reinventing subnets'), which covers query semantics well. The description reinforces this ('by number or title keyword'). However, the full_text boolean has no schema description and is only implied in the description via 'full text (truncated)'; its default and effect on the response are not explained, so the 50% coverage gap is only partially compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get one ACP') and resource, and clarifies the lookup key ('by number or title keyword'). It also enumerates the returned fields (preamble, abstract, full text). It doesn't name siblings, but 'Get one' implicitly contrasts with the avax_acp_list sibling, which is enough to orient an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it — when you have a specific ACP number or title keyword — since it returns one record. However, it never explicitly states when not to use it or which sibling to prefer (e.g., avax_acp_list for listing all, avax_search_docs for broader doc search). The 'Offline' note hints at a distinguishing use case but doesn't connect it to a live alternative like avax_fetch_live_doc.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_acp_votesLive ACP signaling (info.acps)ARead-onlyIdempotent
Query a public node's info.acps for ACPs currently being signaled (supported/objected weight) on mainnet or fuji. Empty when no ACP vote is in progress.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | mainnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the read-only nature is covered. The description adds useful behavioral context beyond this: it notes that the query hits a public node and that the result is empty when no ACP vote is in progress. This helps the agent understand the real-time nature and the edge case, adding value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no wasted words. It front-loads the core action and resource, then immediately covers the network option and the empty-result caveat. Every sentence earns its place, and the structure is easily skimmable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, read-only, no output schema), the description is complete. It covers the purpose, the network choices, the empty behavior, and implicitly the data being returned. Annotations handle safety, and there are no unresolved ambiguities for an agent to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It explicitly mentions 'mainnet or fuji', which aligns with the network enum, thereby clarifying the sole parameter. It also implies the parameter is optional by focusing on the query action. This is sufficient for the single, simple parameter, and the description adds meaning beyond the raw enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Query') and resource ('public node's info.acps') and clearly describes what it returns (ACPs currently being signaled with supported/objected weight). It also specifies the networks. However, it does not explicitly differentiate from sibling tools like avax_acp_list or avax_acp_lookup, so while the purpose is clear, it relies on the agent to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context: it mentions the network selection and clarifies the empty result when no vote is in progress. It does not, however, state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. The intended use case is implied but not contrasted with sibling ACP tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_call_contractRead contract (eth_call)BRead-onlyIdempotent
Call a read-only (view/pure) contract function. Provide the function as a human-readable ABI signature, e.g. 'function balanceOf(address) view returns (uint256)', plus args.
Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Arguments in order; big numbers as decimal strings | |
| address | Yes | 0x-prefixed 20-byte EVM address | |
| network | No | Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL. | fuji |
| signature | Yes | Human-readable function ABI, e.g. 'function totalSupply() view returns (uint256)' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clearly disclosed. The description adds useful context about accepted network identifiers and an example signature. However, it does not mention the return value shape (e.g., decoded result) or what happens on revert, which would add value beyond annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first front-loads the purpose and includes an example, the second lists network options. It is efficient and well-structured, though the network enumeration is slightly verbose and could be streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should hint at the return format (e.g., decoded return value of the function) and failure behavior (e.g., reverts). It only covers input specification, leaving the agent unaware of the response shape or error handling. For a tool with 4 parameters and non-trivial call semantics, this is a noticeable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for address, signature, args, and network. The description adds an example of the signature format and notes 'big numbers as decimal strings' for args (also present in schema). It does not introduce new meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: 'Call a read-only (view/pure) contract function' and provides an example signature format. It distinguishes from sibling tools like avax_get_balance (which reads a known balance) or avax_get_code (which reads code) by focusing on arbitrary contract function calls. However, it does not explicitly name a sibling to avoid confusion, so it's not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to provide the signature, args, and network, but does not explicitly compare this tool with alternatives or state when not to use it. It implies usage for read-only contract calls for any EVM contract, leaving the agent to infer that other tools like get_balance are for specific predefined reads. No exclusions or conditional guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_console_flowsBuilder Console flows & deep linksARead-onlyIdempotent
List Builder Console (build.avax.network/console) no-code flows with deep links: create-l1, convert-to-l1, validator-manager, ictt, faucet, multisig, unit-converter, icm-relayer. Also returns platform-cli equivalents for scriptable automation. Pass flow for one entry.
| Name | Required | Description | Default |
|---|---|---|---|
| flow | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description's addition of return content (deep links, platform-cli equivalents) and filtering behavior adds practical context. The description aligns with annotations and goes beyond them by specifying what data is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, starting with the core action and list of flows, then adding the parameter tip. It's front-loaded and every sentence adds value. A slightly more structured format could separate the flow list from the parameter note, but overall it's efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with one optional parameter, the description covers the main usage: listing flows and filtering. It also mentions platform-cli equivalents, which helps in scriptable contexts. It doesn't describe the return structure explicitly, but given no output schema and simplicity, it's reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage on the `flow` parameter, but the description explicitly explains 'Pass `flow` for one entry,' giving the parameter purpose. It doesn't enumerate valid values but the flow names are listed earlier, providing indirect meaning. This compensates adequately for a single optional parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Builder Console flows with deep links, enumerating specific flow names. It's specific about the resource (Builder Console) and the action (list), and differentiates from sibling tools by focusing on console flows and platform-cli equivalents, which none of the other tools do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions passing `flow` to get a single entry, providing some usage guidance. However, it does not contrast with alternatives like avax_plan_l1_launch or avax_icm_recipe, nor does it state when to prefer this tool over others. The usage context is implied (for listing console flows) but lacks explicit exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_data_get_token_metadataGet contract / token metadataARead-onlyIdempotent
Get metadata for a contract address (ERC-20/721/1155 type, name, symbol, decimals, deployment tx) via Avalanche Data API.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| chain_id | No | EVM chain ID as string (43114 mainnet C-Chain, 43113 Fuji) or a network key like 'fuji' | 43113 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by listing the specific metadata fields returned (type, name, symbol, decimals, deployment tx), which is useful context the annotations do not cover. However, it does not disclose any additional behavioral nuances such as timeout, rate limits, or error scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the core purpose, and includes the most relevant output fields. No wasted words or repetitive information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only metadata fetch with two parameters and no output schema, the description is adequate. It names the API and lists the returned fields. The annotations cover safety, and the schema handles parameter details. It lacks explicit guidance on the return format or edge cases, but for this simple tool the information is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: chain_id has a description, address does not. The description adds only the term 'contract' to clarify address's role, but does not explain address format requirements or elaborate on chain_id's accepted values (already in schema). It does not compensate for the missing address description, so the agent gets little extra semantic guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get metadata'), a resource ('contract address'), and enumerates the exact fields returned (ERC-20/721/1155 type, name, symbol, decimals, deployment tx). This clearly distinguishes it from sibling tools like get_balance or get_block, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by specifying it retrieves metadata for a contract address via the Avalanche Data API. While it does not explicitly name alternative tools or when not to use it, the context is sufficient for a reasonable agent to infer this is the go-to tool for token metadata. No exclusionary guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_data_list_chainsList chains indexed by Avalanche Data APIARead-onlyIdempotent
List every chain (C-Chain + L1s) indexed by the Avalanche Data API (Glacier), with chain ID, name, RPC, explorer, native token and whether it's testnet. Best way to discover L1s beyond the built-in registry.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Filter by environment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds useful context about the data source (Glacier API) and return fields, but does not disclose behavioral details like pagination, result limits, or what happens when the network filter is omitted. With annotations carrying the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with zero filler. The main action and resource lead, followed by data fields and the usage note. Slightly more relational than strictly necessary, but each part earns its place and it is easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple discovery tool: one optional parameter fully documented in schema, strong annotations covering safety, and a description that states scope, return fields, and the primary use case. Minor gaps remain — no mention of result ordering, pagination, or default behavior when network is absent — but for a list tool these are low-impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the single optional 'network' parameter is already documented ('Filter by environment' with mainnet/testnet enums). The description does not add parameter-specific guidance, so the schema does the heavy lifting, warranting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List every chain (C-Chain + L1s) indexed by the Avalanche Data API') and enumerates the exact data returned (chain ID, name, RPC, explorer, native token, testnet flag). It also distinguishes itself from the built-in registry, helping an agent tell it apart from siblings like avax_list_networks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Best way to discover L1s beyond the built-in registry' frames when to prefer this tool and implies the built-in registry is covered elsewhere (i.e., avax_list_networks). It gives clear context for the L1-discovery use case, though it does not explicitly name the sibling to use when the built-in registry is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_data_list_erc20_balancesList ERC-20 balancesARead-onlyIdempotent
List all ERC-20 token balances held by an address on a chain (Avalanche Data API). Returns token address, symbol, decimals, and balance.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| chain_id | No | EVM chain ID as string (43114 mainnet C-Chain, 43113 Fuji) or a network key like 'fuji' | 43113 |
| page_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Read-only and idempotent behavior is already covered by annotations, so the description does not need to restate it. It adds a useful behavioral contract by specifying exactly what is returned: token address, symbol, decimals, and balance. It does not discuss pagination limits, but that is a minor gap for this kind of listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences: one for the operation and one for the return shape. Nothing is redundant or marketing-heavy, so an agent can parse it quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate 3-parameter tool with strong annotations and no output schema, the description gives the core information needed to call it: purpose, owner-address parameter, chain context, and return fields. It could mention the default chain_id or pagination behavior, but the input schema already exposes those details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, and the description partly compensates by clarifying that address is the holder and 'on a chain' scopes chain_id. However, page_size semantics and address format expectations are not elaborated, leaving some parameter meaning to reliance on property names and schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is specific: 'List all ERC-20 token balances held by an address on a chain.' It names the exact resource type, the required scope/owner, and the return fields, making it immediately distinguishable from generic balance and transaction tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when this tool fits: when an agent needs ERC-20 balances for a specific address on a supported chain. It does not explicitly call out native-balance alternatives or say 'use avax_get_balance instead,' so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_data_list_l1_validatorsList L1 validators (Data API)ARead-onlyIdempotent
List sovereign L1 validators (post-Etna ACP-77) from the Data API, optionally filtered by subnet ID or node ID. Shows weight, balance, and remaining balance owner.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | fuji | |
| node_id | No | ||
| page_size | No | ||
| subnet_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnly, openWorld, idempotent, and non-destructive behavior. The description adds useful context: scope ('post-Etna ACP-77') and the returned fields (weight, balance, remaining balance owner). It does not mention pagination or rate limits, but those are secondary given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence with no filler. Purpose, scope, filters, and output fields are all front-loaded, making it trivially quick for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must explain the return shape; it lists three output fields but omits pagination behavior, ordering, and other likely list fields. The page_size parameter is present in the schema but never explained, leaving gaps for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It mentions subnet_id and node_id as filters but says nothing about network or page_size semantics. The network enum and page_size bounds exist in the schema, but their meaning and behavior are not clarified, leaving half the parameters under-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List sovereign L1 validators (post-Etna ACP-77) from the Data API'. It also mentions optional filters by subnet or node ID and the output fields, making it clearly distinct from sibling tools like avax_pchain_get_validators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from the Data API' and 'post-Etna ACP-77' imply when this tool is appropriate, but no explicit when-to-use or when-not-to-use guidance is provided. It does not name alternatives or exclusions, leaving the agent to infer from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_data_list_transactionsList address transactionsARead-onlyIdempotent
List recent transactions of an address on a chain (native + contract interactions) via Avalanche Data API. Paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| chain_id | No | EVM chain ID as string (43114 mainnet C-Chain, 43113 Fuji) or a network key like 'fuji' | 43113 |
| page_size | No | ||
| page_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to restate safety. It adds behavioral context by specifying that it lists both native and contract interactions and is paginated, which is not in the annotations. The description aligns with the read-only nature and does not contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tight sentence that front-loads the purpose and scope. It includes necessary context (API source, pagination) without unnecessary words, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description is thin. It mentions pagination but not how to use page_token, what the response contains, or any prerequisites (e.g., chain_id defaults). While the schema covers requiredness and defaults, the description leaves gaps on return structure and pagination mechanics, making it only marginally complete for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only chain_id has a description). The description does not elaborate on the address format, page_size constraints, or page_token usage. Since schema coverage is low, the description must compensate, but it does not provide additional parameter-level meaning beyond the general context, leaving agents to guess on critical parameters like page_token.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('List') and resource ('recent transactions of an address on a chain'), includes the scope ('native + contract interactions'), and identifies the underlying API. This distinguishes it from sibling tools like avax_get_transaction (single transaction) and avax_data_list_erc20_balances (balances) without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the core function and the pagination aspect, but it does not explicitly state when to use this tool versus alternatives such as avax_get_transaction for a single transaction or avax_data_list_chains for chain listings. Usage guidance is implied by the tool name and context, not explicitly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_estimate_gasEstimate gasARead-onlyIdempotent
Estimate gas for a transaction (to, data, value, from). Also returns current base fee so the agent can compute a fee budget.
Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | 0x-prefixed 20-byte EVM address | |
| data | No | 0x calldata | |
| from | No | 0x-prefixed 20-byte EVM address | |
| network | No | Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL. | fuji |
| value_wei | No | Value in wei as decimal string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context by mentioning that the tool returns the current base fee, which helps the agent understand output beyond the name. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two clear sentences, with the primary function and key output stated first, followed by network details. No fluff or redundant phrasing; it is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema, the description explains the main return (gas estimate and base fee) and covers network selection details. It does not specify the exact output format, but given the annotations cover safety and the function is simple, it is sufficiently complete for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented. The description lists the parameters (to, data, value, from) but uses 'value' instead of the schema's 'value_wei', which is a minor inconsistency. It adds little beyond what the schema already provides, so it meets the baseline without significant added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool estimates gas for a transaction, explicitly listing the relevant parameters (to, data, value, from), and notes it also returns the current base fee. This is specific and differentiates it from sibling tools like avax_call_contract or avax_get_transaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an agent needs a gas estimate and a base fee for budgeting, but it does not explicitly compare with alternatives or state when not to use this tool. There is no mention of 'use X instead' or exclusions, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_explain_precompileExplain a Subnet-EVM precompileARead-onlyIdempotent
Reference card for one Subnet-EVM precompile: address, genesis config key, purpose, example genesis snippet, Solidity interface notes, plus the most relevant doc hits.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotent=true, so the description doesn't need to restate safety. It adds a list of returned content (address, genesis key, etc.) and mentions 'most relevant doc hits', which implies the output may include references. It doesn't describe error behavior, but for a read-only tool this is minor and the description is consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the purpose ('Reference card') and then uses a colon to enumerate the content. There is no fluff or repetition; every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one enum parameter and read-only annotations, the description sufficiently outlines the output content (address, genesis config key, purpose, example snippet, Solidity notes, doc hits). It doesn't specify output format or error cases, but given the simple nature and existing annotations, it is largely complete. It would benefit from explicitly mentioning the 'name' argument.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'name' with an enum of precompile names, but the description never mentions this parameter or explains that it selects which precompile. With schema description coverage at 0%, the description should clarify the argument's role, but it only says 'one Subnet-EVM precompile' without tying it to the input. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a reference card for a Subnet-EVM precompile, listing specific content (address, genesis config key, purpose, genesis snippet, Solidity notes, doc hits). It distinguishes from siblings like avax_get_doc or avax_search_docs by focusing on a single precompile's reference information, not general documentation retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit when-to-use guidance, no mention of alternative tools, and no conditions for when this tool is preferable over related siblings like avax_get_doc or avax_list_topics. The phrase 'Reference card' implies a quick lookup, but there is no concrete usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_fetch_live_docFetch a live build.avax.network page as markdownARead-onlyIdempotent
Fetch the CURRENT version of any build.avax.network page (docs, academy, integrations, blog, acps) as clean markdown via the official .md endpoint. Use when the local index may be stale (check builtAt in avax_list_topics) or for pages not indexed. Accepts a full URL or a site path like /docs/primary-network/overview.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | https://build.avax.network/docs/... or /docs/... | |
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, which cover the safety profile. The description adds value by noting the tool fetches the 'CURRENT' version (implying possible divergence from local cache) and that output is 'clean markdown' via the .md endpoint, providing behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the primary purpose front-loaded and usage guidance following immediately. Every phrase contributes either to scope, freshness, or fallback conditions, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch tool, the description covers what it does, when to use it, and the input format. The missing offset explanation is the only notable gap, but given the tool's low complexity and the annotations covering side effects, it is otherwise complete enough for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (url described, offset not mentioned). The description restates the url format ('full URL or site path') but adds no detail beyond the schema's own description. The offset parameter is completely undocumented in both schema and description, leaving an agent without any clue as to its purpose or effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches the CURRENT version of any build.avax.network page as markdown, enumerating the page types (docs, academy, integrations, blog, acps) and the mechanism (official .md endpoint). This distinguishes it from local-index tools like avax_get_doc or avax_list_docs by emphasizing freshness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly specifies when to use this tool: when the local index may be stale (check builtAt in avax_list_topics) or for pages not indexed. This gives clear contextual triggers, though it does not name the exact alternative tool to switch from, relying on the reader to infer that avax_get_doc is the local-index counterpart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_generate_genesisGenerate Subnet-EVM genesis.jsonARead-onlyIdempotent
Generate a valid Subnet-EVM genesis.json for a new Avalanche L1. Choose a fee preset (low|medium|high|gasless) or override feeConfig, allocate initial balances, and enable precompiles (deployer allow-list, tx allow-list, native minter, fee manager, reward manager, warp). Warp is enabled by default because ICM/Teleporter needs it. Returns the JSON plus next-step CLI commands.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | Yes | Unique EVM chain ID (check chainlist.org; avoid 43113/43114) | |
| fee_preset | No | medium | |
| allocations | No | ||
| enable_warp | No | ||
| reward_mode | No | burn | |
| admin_address | No | Admin for every enabled precompile | |
| reward_address | No | ||
| enable_fee_manager | No | ||
| enable_tx_allowlist | No | ||
| enable_native_minter | No | ||
| fee_config_overrides | No | Partial feeConfig keys to override | |
| enable_reward_manager | No | ||
| fund_teleporter_deployer | No | Pre-fund the TeleporterMessenger deployer (needed so the CLI/you can deploy ICM) | |
| enable_deployer_allowlist | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds genuine value on top: it discloses the warp-on-by-default behavior with a rationale ('ICM/Teleporter needs it') and states the return shape ('Returns the JSON plus next-step CLI commands'). No contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with the core purpose front-loaded. The middle sentence is a dense but informative enumeration of options, and the final sentence captures the return contract in six words. No filler or redundant restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool this complex (14 parameters, nested allocations object, no output schema), the description covers the main config categories and the return format, but it does not clarify the required chain_id constraint or explain what each precompile actually does. It is adequate but leaves the agent to open the schema for the full picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at only 29%, the description must carry more weight, and it does partially: it enumerates the fee_preset enum values (low|medium|high|gasless), the precompile toggles (deployer allow-list, tx allow-list, native minter, fee manager, reward manager, warp), and allocations. However, it omits chain_id — the only required parameter — plus admin_address and reward_address, leaving a meaningful gap for the agent on what is mandatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource+context: 'Generate a valid Subnet-EVM genesis.json for a new Avalanche L1.' This clearly differentiates it from the sibling list, which is dominated by query tools (get_balance, get_block, data_list_*) and doc tools — none of them generate genesis config. The purpose is unambiguous and immediately understood.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied ('for a new Avalanche L1', 'next-step CLI commands') and the config options suggest scenarios, but there is no explicit when-to-use vs when-not-to-use guidance, and no alternative is named. Notably, the sibling avax_plan_l1_launch sits adjacent to this workflow but the description never routes the agent between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_get_balanceGet native balanceARead-onlyIdempotent
Get the native token balance (AVAX on C-Chain/Fuji, or the L1's native token) of an address on an Avalanche EVM chain.
Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL. Returns wei and a formatted value.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x-prefixed 20-byte EVM address | |
| network | No | Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL. | fuji |
Output Schema
| Name | Required | Description |
|---|---|---|
| wei | Yes | |
| symbol | Yes | |
| address | Yes | |
| chainId | Yes | |
| network | Yes | |
| formatted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds value beyond annotations by detailing that the tool works across specific networks and L1 keys, and that it returns both wei and formatted values. This complements the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and scope. It efficiently covers network options and return information without fluff. Every sentence earns its place, and there is no unnecessary repetition or verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, an output schema exists to define the return structure, and the description complements it with concrete network details and return format. It covers all required information for an agent to select and invoke the tool correctly: what it does, which networks it operates on, and what it returns. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%—both parameters have descriptive text in the schema. The description repeats the network list and return format but adds no new meaning beyond what the schema provides. Since the schema already documents the parameters thoroughly, a baseline 3 is appropriate; the description does not elevate understanding further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: "Get the native token balance" of an address on an Avalanche EVM chain. It distinguishes from sibling balance tools (e.g., avax_pchain_get_balance, avax_xchain_get_balance) by scoping to EVM chain native tokens. The network options are explicitly enumerated, leaving no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: for querying native AVAX balance on C-Chain or Fuji, or native token on a listed L1. It does not explicitly name alternative tools for P/X-chain balances, but the scope is implied to be EVM-only, which sufficiently guides selection. A minor gap is the lack of an explicit 'for other chain balances use X' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_get_blockGet blockARead-onlyIdempotent
Fetch a block by number, hash, or tag ('latest'). Returns header fields and transaction hashes (set include_transactions=true for full tx objects).
Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL.
| Name | Required | Description | Default |
|---|---|---|---|
| block | No | Block number (decimal), 0x-hash, or 'latest' | latest |
| network | No | Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL. | fuji |
| include_transactions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond that: it discloses the return shape (header fields plus transaction hashes) and the include_transactions toggle behavior, and it enumerates the network targeting options including an arbitrary full RPC URL, which is meaningful behavioral context consistent with openWorldHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler. Core information (what is fetched, by what keys, what is returned) is front-loaded, followed by the network options. The second sentence runs long due to the enumerated network names, but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only fetch tool with no output schema, the description covers the essential ground: block identifiers, return contents, the boolean toggle, and the complex network parameter. It does not enumerate the exact header fields returned or the full RPC URL requirements, but given the annotations and moderately simple parameter set, nothing critical an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% — block and network carry schema descriptions, but include_transactions has none. The description partially compensates by explaining that include_transactions=true yields full tx objects instead of hashes, adding meaning beyond the schema. Yet the network parameter semantics are already fully described in the schema, so the net added value is moderate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Fetch a block') with the identification methods (number, hash, tag) and its scope. It is clearly distinguishable from avax_get_transaction, avax_get_balance, and avax_get_chain_status by the block-specific resource, so an agent can tell it apart without opening those sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use it — when a block is needed — and the include_transactions hint implicitly guides granularity choice. However, the description gives no explicit when-not guidance or alternative routing (e.g., contrast with avax_get_transaction or avax_data_list_transactions), leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_get_chain_statusGet chain statusARead-onlyIdempotent
Get live status of an Avalanche EVM chain: reported chainId, latest block number, base fee, gas price. Useful to verify an RPC works and to pick gas settings.
Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL. | fuji |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context beyond that: it lists what data will be returned (chainId, block number, base fee, gas price) and supports network selection via a flexible set of keys or a full RPC URL. This is useful for an agent to anticipate the tool's behavior without opening the schema. It does not describe error handling or output format, but the annotation coverage plus the listed fields make this a strong 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero fluff. The first sentence states the tool's function and return fields; the second enumerates network options. Every phrase earns its place, and the core purpose is front-loaded before the network details. It is efficiently structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter (defaulted), no required inputs, no output schema, and a read-only/idempotent annotation set, the description fully covers what an agent needs: what it does, what it returns, and how to specify the network. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for the single parameter 'network' is identical to the tool description's network line (100% schema coverage). The tool description repeats that information verbatim rather than adding new parameter semantics. It does provide the use-case context ('verify RPC works'), but that is more tied to the tool purpose than to parameter meaning. With full schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('live status of an Avalanche EVM chain'), and enumerates the exact data returned: reported chainId, latest block number, base fee, gas price. It also names the primary use case (verify RPC works, pick gas settings), which distinguishes it from sibling tools like avax_get_block or avax_get_balance that target specific blocks or balances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool: 'Useful to verify an RPC works and to pick gas settings.' This gives clear context for invocation. It does not name alternatives or exclusion conditions, but since the tool is unique (no other chain-status sibling), the guidance is adequate and no alternative routing is necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_get_codeGet contract code / check if contractARead-onlyIdempotent
Return whether an address is a contract and its bytecode size (and bytecode prefix). Use to verify deployments.
Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x-prefixed 20-byte EVM address | |
| network | No | Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL. | fuji |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, idempotent, and non-destructive, so the description doesn't need to repeat that. It adds value by specifying exactly what the tool returns (a boolean indicator, bytecode size, and bytecode prefix) and by detailing the network options. This goes beyond the bare annotations and clarifies the tool's observable behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, with the primary purpose and output front-loaded in the first sentence and network details in the second. Every word contributes—no filler or redundancy. This is an excellent example of compact, high-signal writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with only two parameters and no output schema, the description covers the essential context: what it does, when to use it, and the valid network selection. It does not describe the exact return format (e.g., JSON structure) but the textual description of returning 'whether an address is a contract, bytecode size, prefix' gives the agent enough to understand the result. No critical detail seems missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage of both parameters, including descriptions for address ('0x-prefixed 20-byte EVM address') and network (listing all valid network keys). The description adds little new information about parameters—it essentially reiterates the network options and adds the 'verify deployments' context, but does not elabare on parameter formats or edge cases. Baseline 3 is appropriate since the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: 'Return whether an address is a contract and its bytecode size (and bytecode prefix).' This is a specific verb ('Return') and resource ('address contract code'), and the title reinforces the purpose. It distinguishes itself from siblings like avax_get_balance or avax_call_contract by focusing on code presence and size.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'Use to verify deployments.' This gives the agent a concrete scenario for when to invoke this tool. It does not explicitly name alternatives or state when *not* to use it, but the narrow scope (contract code vs. balance/transactions) makes the intended usage reasonably unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_get_docRead a full documentation pageARead-onlyIdempotent
Return the full text of a documentation page by its path (from avax_search_docs / avax_list_docs) or its build.avax.network URL. Long pages are truncated at 25k chars; use offset to continue.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | e.g. content/docs/avalanche-l1s/evm-configuration/customize-avalanche-l1.mdx or https://build.avax.network/docs/... | |
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description doesn't need to repeat those. It adds valuable context about truncation at 25k chars and the `offset` mechanism to continue reading, which is beyond what annotations and schema provide. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. The primary purpose is front-loaded, and the truncation detail is stated succinctly as an important behavior. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only doc fetch tool with no output schema, the description covers the key aspects: how to specify the path, the truncation limit, and offset continuation. It doesn't elaborate on error handling, but that's not critical for this simple tool. Overall complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (offset lacks a description). The description compensates by explaining `path` can come from search/list or a URL, and explicitly states `offset` is used to continue after truncation. This adds meaning to both parameters, especially offset, which is otherwise undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the action (return full text), the resource (documentation page), and explicitly identifies how to specify it via `path` from avax_search_docs/avax_list_docs or a URL. This makes the purpose clear and distinguishes it from sibling tools like avax_get_guide or avax_fetch_live_doc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly indicates the path source (from avax_search_docs/avax_list_docs), implying those are prerequisite tools for finding pages. Also explains the truncation and continuation behavior, which guides when to use `offset`. However, it does not explicitly state when not to use this tool versus similar alternatives, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_get_guideGet curated Avalanche guideARead-onlyIdempotent
Return a curated, condensed guide bundled with this server. Available: architecture (Primary Network (P/X/C), L1s, VMs, consensus – the mental model every builder needs.); launch-l1 (From avalanche blockchain create to a sovereign L1 on Fuji/mainnet, with validators and ICM.); precompiles (Addresses, genesis keys and when to use each of the 6 built-in precompiles.); icm (Send a message or tokens between C-Chain and an L1 (or L1↔L1) with Teleporter, with addresses and a Solidity recipe.); troubleshooting (Fast lookup of frequent failures on C-Chain, L1s, CLI, ICM and RPC.); gas-and-fees (How fees work on C-Chain vs L1s and how to pick feeConfig values in genesis.). Prefer this for orientation, then avax_search_docs for details.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context about the content of each guide (e.g., 'addresses, genesis keys and when to use each of the 6 built-in precompiles'), informing the agent what will be returned. It does not mention response format, but for a read-only guide tool this is not a significant omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly long but each part earns its place: the purpose is front-loaded, the six options are compactly listed with explanations, and the final sentence gives routing advice. It could be slightly more concise, but the structure is logical and no information is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one enum parameter and no output schema, this description covers everything needed to call it correctly: what it does, what each option returns, and when to use it versus an alternative. No further details are required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the single 'name' parameter. It does so thoroughly by enumerating all six enum values and giving a one-line explanation of each, which is exactly what an agent needs to select correctly. This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Return a curated, condensed guide bundled with this server.' It also lists all six available guide names with a short summary of each, making the tool's scope immediately obvious. It explicitly contrasts with avax_search_docs, distinguishing it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides direct guidance: 'Prefer this for orientation, then avax_search_docs for details,' which tells the agent when to use this tool versus an alternative. Each guide description also implies a use case (e.g., troubleshooting for failures, gas-and-fees for fee config), so the agent can pick the right option.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_get_transactionGet transactionARead-onlyIdempotent
Fetch a transaction and its receipt by hash (status, gas used, logs, contract address created).
Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x transaction hash | |
| network | No | Network: "mainnet" (C-Chain), "fuji" (testnet C-Chain), a known L1 key (mainnet, c-chain, fuji, dexalot, beam, dfk, dispatch-fuji, echo-fuji), or a full RPC URL. | fuji |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds valuable context beyond these, such as the specific receipt fields and supported network options (mainnet, fuji, L1 keys, full RPC URL). This enriches the behavioral understanding without contradicting any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with the core purpose stated first, followed by the network parameter details. Every sentence adds value; there is no filler. The structure front-loads the most critical information for an agent deciding whether to call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with only two parameters and no output schema, the description is nearly complete. It lists the inferred return fields and network options. It could mention potential edge cases (e.g., pending transactions or unavailable receipts), but these are inferred. Given the low complexity, the description suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains both 'hash' and 'network' in detail. The description repeats the network options but adds no new parameter-level meaning beyond what the schema provides. It does mention return fields, but those are not parameter semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a transaction and its receipt by hash, specifying exactly what information is returned (status, gas used, logs, contract address created). This is a specific verb+resource and distinguishes it from sibling tools like avax_get_block or avax_get_balance, which operate on different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to retrieve transaction details by hash) but provides no explicit comparison to alternatives or conditions for selecting it. For example, it does not mention that avax_get_block is for block data or that avax_get_balance is for account balances. The usage context is clear but not explicitly differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_hosted_callCall a tool on the official hosted Avalanche MCPARead-onlyIdempotent
Proxy a tool call to Ava Labs' hosted Avalanche MCP (https://build.avax.network/api/mcp). Best for things the local index lacks: build_plan (platform-cli runbooks; pass chainId as a STRING), cli_lookup_command, rpc_lookup_method, docs_search (always-current), platform_get_validators_at, platform_get_pending_validators, info_peers, onchain_activity. On 429 fall back to local tools.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Hosted tool name, e.g. github_search_code | |
| arguments | No | Tool arguments as JSON object |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds valuable context beyond that: it is a network call to a specific endpoint (inducing potential rate limits), and it lists specific remote capabilities. It also notes the 'always-current' nature of docs_search, which is extra behavioral info. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written paragraph. The core purpose is front-loaded, followed by a scoped use case list and a fallback rule. Every sentence carries meaning, with no filler. The structure makes it easy to scan and extract the essential decision logic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a proxy tool with only two parameters and no output schema, the description covers the key aspects: URL, when to use, specific tool examples, and rate-limit handling. It does not detail the return format, but given the open-ended nature of proxying (output varies by called tool), this is acceptable. The description could mention that the output is tool-specific, but the absence is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (name and arguments) are already documented. The description adds a critical semantic hint: 'pass chainId as a STRING' for build_plan, which clarifies a type requirement not present in the generic schema. It also gives examples of valid tool names, aiding correct invocation. This goes beyond the schema's generic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a proxy to Ava Labs' hosted Avalanche MCP, with a specific verb ('proxy a tool call') and resource (the hosted MCP URL). It explicitly lists the tool names it is best for, distinguishing it from the many local sibling tools. This is unambiguous and immediately separable from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Guidance is explicit: 'Best for things the local index lacks' and a concrete list of tools, plus a clear fallback instruction ('On 429 fall back to local tools'). This tells the agent exactly when to use this proxy versus local tools, and even provides a contingency for rate limits. It names alternatives implicitly by contrasting with 'local tools'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_hosted_list_toolsList tools of the official hosted Avalanche MCPARead-onlyIdempotent
List the ~48 tools exposed by Ava Labs' hosted MCP (https://build.avax.network/api/mcp): docs_search (incl. blog/integrations), cli_lookup_command (avalanche-cli/platform-cli/tmpnet), rpc_lookup_method, acp_lookup, platform_get_* (incl. get_validators_at, get_utxos, get_pending_validators), info_* (info_peers, info_is_bootstrapped), onchain_*/chain_stats, build_plan (runbooks), console_flow/console_link. (GitHub code-search tools are documented but not currently exposed.) Then call avax_hosted_call. Rate limit 60/min — prefer local tools when equivalent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, and destructiveHint:false, so safety is covered. The description adds behavioral details beyond annotations: the rate limit of 60/min, the fixed set of ~48 tools, and the note that GitHub tools are not exposed. This enriches the agent's understanding without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but structured: it leads with the primary purpose, then enumerates tool families, and ends with rate limit and preference guidance. It packs significant detail into a few sentences without redundant phrasing. While it lists many examples, each adds clarity about the tool's coverage, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless discovery tool with no output schema, the description is remarkably complete. It specifies the endpoint, the content (~48 tools with examples), rate limits, exclusions, and the recommended next step (avax_hosted_call). An agent has everything needed to decide whether to call this tool and interpret its result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is 100% covered (empty schema), so the baseline is 4. The description doesn't need to explain parameters, and it doesn't attempt to. It focuses on the content and usage, which is appropriate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List the ~48 tools exposed by Ava Labs' hosted MCP'. It provides a specific resource (the URL) and enumerates the tool families, distinguishing it from siblings like avax_hosted_call or avax_search_docs. The verb 'List' is specific and the scope is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: it advises 'prefer local tools when equivalent' and directs the agent to 'Then call avax_hosted_call' after listing. It also clarifies scope exclusions ('GitHub code-search tools are documented but not currently exposed'). However, it doesn't explicitly state when to use this tool vs. specialized siblings beyond the general 'prefer local' guidance, so it's slightly incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_hosted_read_indexRead a hosted Avalanche MCP index resourceARead-onlyIdempotent
Read one of the hosted MCP's index resources: docs://index, academy://index, integrations://index, blog://index, rpcs://index, cli://index, acps://index — markdown link lists of every page, always current.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context beyond annotations: it specifies the output format ('markdown link lists') and a freshness guarantee ('always current'). It does not mention auth requirements or rate limits, but for a simple read operation with strong annotations, this is sufficient. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is a single, dense sentence that front-loads the action, enumerates the exact valid inputs, and states the output format and freshness—all with zero filler. Every clause carries useful information, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single enum parameter, strong read-only annotations, and no output schema, the description is complete. It tells the agent exactly what to expect (markdown link lists of every page), the valid inputs, and the freshness guarantee. There are no gaps in the required knowledge to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter with an enum but zero description coverage. The description compensates by listing all allowed URI values and explaining what they represent (index resources that are markdown link lists). While it does not describe each URI individually, the names are self-explanatory (docs, academy, etc.) and the description clarifies the nature of the returned data. This adds meaning beyond the bare enum, even though schema coverage is 0%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Read') and the resource ('one of the hosted MCP's index resources'), enumerates all seven valid URIs, and describes the output as 'markdown link lists of every page, always current.' This distinguishes it from sibling tools like avax_get_doc by specifying it returns a link list rather than a document. The purpose is unambiguous and action-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when a full index of pages is needed) but does not explicitly mention alternatives or exclusions. It does not contrast with sibling tools like avax_get_doc or avax_search_docs, leaving the agent to infer that this is for list navigation rather than specific content retrieval. The 'always current' phrase hints at a freshness benefit, but there is no explicit 'use this when...' or 'instead of...' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_icm_recipeICM/Teleporter integration recipeBRead-onlyIdempotent
Return the addresses, blockchain-ID lookup steps, Solidity sender/receiver skeleton and relayer commands for sending ICM messages between two Avalanche chains.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Source chain: fuji | mainnet | dispatch-fuji | echo-fuji | <your L1 name> | fuji |
| destination | No | dispatch-fuji | |
| payload_kind | No | message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and idempotentHint=true, covering the safety and repeatability profile. The description adds that the tool returns structured recipe content (addresses, steps, skeleton, commands), which is output context beyond the annotations but not a distinct behavioral trait. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently packs the deliverable into a list of concrete items. It is front-loaded with 'Return' and enumerates key outputs without verbose qualifiers, making it concise and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what is returned but omits how parameters alter the recipe and when to use the tool. Given the tool's moderate complexity (3 optional params, no output schema) and weak schema coverage, more contextual guidance would be valuable, but the core output is specified, so it is not entirely deficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (source has a description; destination and payload_kind have none). The description does not explain any parameters, nor does it compensate for the low coverage by clarifying how source/destination or payload_kind affect the recipe. An agent would have to rely on defaults and enums without additional semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns addresses, lookup steps, Solidity skeleton, and relayer commands for ICM messaging between two Avalanche chains. It specifies a concrete verb ('Return') and a precise resource (ICM/Teleporter integration recipe), which differentiates it from many sibling tools focused on queries or docs. However, it does not explicitly contrast with potentially overlapping tools like avax_get_guide or avax_search_docs, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. It does not state conditions such as 'use this when building ICM integrations' or 'for general guides, see avax_get_guide'. The intent is only implied by the tool's name and content, leaving the agent to infer appropriate usage without direct support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_list_docsList documentation pagesARead-onlyIdempotent
List documentation pages under a path prefix (e.g. 'content/docs/avalanche-l1s', 'content/docs/rpcs', 'content/academy/avalanche-l1', 'graft/subnet-evm'). Use to browse a section's table of contents.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| path_prefix | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds behavioral context by indicating the tool lists pages under a path prefix and is intended for browsing a table of contents. It does not describe return format or pagination, but given the annotations, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with the core action front-loaded, followed by useful examples and a usage hint. No redundant phrases or filler. It earns its place completely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter listing tool with no output schema, the description conveys the essential purpose and provides concrete usage examples. It does not mention what the response contains (e.g., list of page paths or titles), but given the low complexity and existing annotations, this is a minor gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must document the parameters. It implies path_prefix through examples ('under a path prefix' with example paths) but never explicitly names the parameter or explains its format. The limit parameter is not mentioned at all. The description partially compensates but leaves the limit parameter semantically undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific action 'List documentation pages under a path prefix' and provides concrete examples. It clearly distinguishes from siblings like avax_get_doc (fetch a single doc) and avax_search_docs (search) by defining the browsing/scoping behavior. The resource and action are specific and non-tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear when-to-use hint: 'Use to browse a section's table of contents.' This contextualizes its role relative to other doc tools. It does not explicitly mention when not to use it or name alternatives like avax_list_topics, but the usage hint plus examples are reasonably sufficient for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_list_networksList Avalanche networksARead-onlyIdempotent
List all networks this server knows: Avalanche Mainnet C-Chain, Fuji testnet, and well-known L1s, with chain IDs, RPC URLs, explorers and faucets. Call this first when unsure which network value to use.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to repeat these. The description adds context about what the output contains (chain IDs, RPC URLs, etc.), but this is more about the result content than behavioral characteristics. It does not add information about rate limits, authentication, or side effects beyond the read-only nature already annotated. With annotations covering the safety profile, a 3 is appropriate because the description provides some value but not rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste. The first sentence front-loads the core action and specific content, while the second sentence provides clear usage direction. Every word earns its place. It is appropriately sized for a simple, parameter-free enumeration tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters, no output schema, and a simple enumerative purpose, the description is fairly complete. It tells the agent what networks are included, what fields are returned, and when to use it. It does not describe the exact output format (e.g., JSON structure), but with no output schema provided, some inference is acceptable. The phrase 'well-known L1s' could be slightly ambiguous, but the overall intent is clear. The description covers the essential information an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema automatically covers them fully (100% coverage). Since there are no parameters to describe, the description does not need to add parameter semantics. The baseline for 0 parameters is 4 per the calibration guidance, and the description does not attempt to invent parameter information. It uses the 'network' value in the usage guidance, but that refers to the output values, not input parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to list all networks known to the server, specifying the exact networks (Mainnet C-Chain, Fuji testnet, well-known L1s) and the information provided (chain IDs, RPC URLs, explorers, faucets). This is a specific verb (list) plus a specific resource (networks), and it distinguishes itself from sibling tools like avax_get_block or avax_get_balance which are data retrieval operations on specific networks rather than enumeration of available networks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit usage condition: 'Call this first when unsure which `network` value to use.' This tells the agent exactly when to invoke the tool. However, it does not explicitly state when not to use it or name alternatives, though the implied guidance is clear—if you already know the network, you don't need this. It could have mentioned that other network-dependent tools rely on the values returned here, but the core guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_list_topicsList knowledge-base topicsARead-onlyIdempotent
Overview of the indexed Avalanche knowledge base: top-level sections with document counts, plus index build date. Use to orient before searching.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint safely, lowering the bar. The description adds useful context beyond this: it discloses that the view reflects the *indexed* knowledge base and surfaces an index build date, signaling the data may lag live sources. This is meaningful behavioral context about freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero redundancy. The resource and purpose are front-loaded in the first sentence, and the usage cue follows immediately in the second. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless overview tool, this is complete: it explains what will be returned (sections, counts, build date) and when to use it. Safety and idempotency are covered by annotations, and there is no output schema to account for, so no return-format detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There is nothing for the description to add in terms of parameter meaning, and the description correctly focuses on output and usage instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Overview of the indexed Avalanche knowledge base') and details the exact output: top-level sections with document counts and the index build date. This is clearly distinct from search and doc-listing siblings, since it presents an orientation-level summary rather than individual documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use to orient before searching' gives an explicit trigger condition and sequencing instruction, telling the agent to call this before running a search. It implies the alternative is the search family of tools, though it doesn't name a specific sibling or state explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_node_infoGet node / network infoARead-onlyIdempotent
Query the public API node's info.* endpoints: node version, network ID/name, blockchain IDs for X/C/P, and tx fees (info.getTxFee). Useful to confirm which network you're on and current P-Chain fees.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Primary network: mainnet or fuji | fuji |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds behavioral detail by naming the specific info.* endpoints contacted and the returned fields, which goes beyond the bare annotation. It does not contradict the annotations and aligns with the openWorldHint by mentioning the public API.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, with the core endpoint and data list front-loaded and the use case immediately after. No fluff or repetition; every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with no output schema, the description covers the purpose, specific endpoints, returned data, and a use case. It does not explicitly state the return JSON format, but the listed fields strongly imply it, making it adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully covers the only parameter (network) with an enum, default, and description. The description only adds a tangential reference to 'which network you're on', offering no substantive new semantics beyond the schema. Baseline 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Query the public API node's info.* endpoints') and enumerates the exact data returned (node version, network ID/name, blockchain IDs, tx fees). This clearly differentiates it from sibling tools like avax_get_balance or avax_pchain_* which target specific data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes it is 'Useful to confirm which network you're on and current P-Chain fees', providing clear contextual guidance for when to invoke it. It does not explicitly exclude alternatives or list when-not-to-use, but for a read-only info tool this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_pchain_get_balanceGet P-Chain balanceARead-onlyIdempotent
Get P-Chain balance of a P-addr (e.g. P-fuji1...): unlocked, locked stakeable, locked not stakeable. Needed before creating subnets/chains or adding validators.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | P-Chain address, e.g. P-fuji1abc... or P-avax1abc... | |
| network | No | Primary network: mainnet or fuji | fuji |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint false. The description adds behavioral context beyond annotations by breaking down the balance into three categories, which informs the agent about the expected output structure. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, resource, and key details without any fluff. Every phrase earns its place, and the example address is a practical addition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema) and annotations covering safety, the description is quite complete. It explains what the tool does, why it's needed, and hints at the return categories. It does not describe error handling or exact return format, but those are not essential for a read-only balance check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented. The description adds an example address format (P-fuji1...) and clarifies the address type, but does not significantly go beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (P-Chain balance), the verb (get), and specifies the three balance components (unlocked, locked stakeable, locked not stakeable). It also gives a concrete address example, making it easy to distinguish from X-Chain or other balance tools among the siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'Needed before creating subnets/chains or adding validators.' This gives context for when to call the tool, but it does not explicitly name alternatives or state when not to use it (e.g., for X-Chain balance). Since the sibling set includes avax_xchain_get_balance, this is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_pchain_get_stake_infoGet staking parameters & supply (P-Chain)ARead-onlyIdempotent
Return P-Chain staking economics: min validator/delegator stake, min/max stake durations, current supply, and total stake. Use when designing validator economics or answering 'how much AVAX do I need to validate?'.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Primary network: mainnet or fuji | fuji |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds the specific data fields returned (current supply, total stake, etc.), which goes beyond what annotations alone convey. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. The purpose and use-case are stated in the first sentence, and the usage guidance is in the second. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with a single well-documented parameter, the description is complete. It lists all the data categories returned, and the annotations cover the safety/profile aspects. No additional behavioral or syntactic details are needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'network', has a description in the schema ('Primary network: mainnet or fuji'), an enum, and a default. Schema description coverage is 100%, so the description adds no additional parameter meaning. This meets the baseline for fully documented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns P-Chain staking economics and enumerates specific data fields (min validator/delegator stake, min/max stake durations, current supply, total stake). It uses the verb 'Return' and the resource 'P-Chain staking economics', which distinguishes it from sibling tools like avax_pchain_get_validators (validator list) and avax_get_balance (balances).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly gives use cases: 'Use when designing validator economics or answering "how much AVAX do I need to validate?"' This provides clear context for when to invoke the tool. It does not explicitly mention when not to use it or name alternatives, but the use-case framing is sufficient for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_pchain_get_subnetGet Subnet / L1 info (P-Chain)ARead-onlyIdempotent
Get Subnet details via platform.getSubnet: control keys, threshold, whether it has been converted to a sovereign L1 (isPermissioned=false), manager chain/address, and blockchains in the subnet.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Primary network: mainnet or fuji | fuji |
| subnet_id | Yes | Subnet ID (CB58) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description does not need to restate read-only behavior. It adds value by detailing what the response includes (control keys, threshold, isPermissioned status, manager chain/address, blockchains), giving the agent a clear expectation of the returned data. It does not disclose error behavior or pagination, but for a simple getter with annotations covering safety, this is above average.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the core action first and then packs the specific data fields delivered. Every clause earns its place—no filler, no redundancy. The structure makes it easy for an agent to quickly parse the tool's purpose and outputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing the key return fields (control keys, threshold, isPermissioned, manager, blockchains), which is sufficient for an agent to know what it will get. It does not cover error scenarios or edge cases (e.g., subnet not found), but for a simple read-only getter with only two well-documented parameters, this is nearly complete. Missing details like response format are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both 'network' and 'subnet_id' have descriptive comments. The description does not add any parameter-specific meaning beyond the schema; it only lists what data is fetched. Since the schema already explains the parameters, the description adds no extra semantic value, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair ('Get Subnet details') and then enumerates the exact data fields returned (control keys, threshold, isPermissioned, manager, blockchains). It also names the underlying platform.getSubnet call, which unambiguously identifies the operation and naturally distinguishes it from sibling tools like get_validators or get_balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings. It does not mention alternatives, exclusions, or prerequisites (e.g., 'use list_blockchains first to get subnet_id'). The purpose implies it is for subnet-specific details, but no explicit when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_pchain_get_tx_statusGet P-Chain tx statusARead-onlyIdempotent
Check a P-Chain transaction (platform.getTxStatus): Committed, Processing, Dropped, or Unknown, with reason when dropped. Use after AddSubnetValidator/ConvertSubnetToL1/CreateChain transactions.
| Name | Required | Description | Default |
|---|---|---|---|
| tx_id | Yes | P-Chain tx ID (CB58) | |
| network | No | Primary network: mainnet or fuji | fuji |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the description is not fully burdened. The description adds the detail about returning a reason when dropped, which is useful, but does not disclose rate limits, error handling, or other behavioral nuances. With annotations present, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly written sentence that first states the action, then the possible results, then the usage context. No wasted words, and the information is front-loaded with the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with well-documented parameters and no output schema, the description covers the core need: what it returns (statuses, including drop reason) and when to use it. It is complete enough for an agent to call correctly, though it could optionally mention that 'Unknown' may mean a recently submitted transaction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both tx_id and network are already documented. The description adds usage context that implies tx_id comes from the mentioned transaction types, but it does not add format or additional parameter meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks a P-Chain transaction status with specific possible values (Committed, Processing, Dropped, Unknown) and includes the underlying API (platform.getTxStatus). It distinguishes itself from siblings like avax_get_transaction or avax_get_chain_status by focusing on P-Chain transaction status with explicit status outcomes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use after AddSubnetValidator/ConvertSubnetToL1/CreateChain transactions', giving clear context on when to invoke this tool. However, it does not mention when not to use it or point to alternative tools for other chain transactions, so it lacks explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_pchain_get_validatorsList current validators (P-Chain)ARead-onlyIdempotent
List current validators of the Primary Network or of a specific Subnet/L1 via platform.getCurrentValidators. Returns nodeID, stake, uptime, end time, delegation fee. Use subnet_id to inspect an L1's validator set; omit for Primary Network.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| network | No | Primary network: mainnet or fuji | fuji |
| node_ids | No | Filter to these NodeID-... values | |
| subnet_id | No | Subnet ID (CB58). Omit for Primary Network. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by listing the returned fields (nodeID, stake, uptime, end time, delegation fee) and naming the exact RPC method. It does not disclose pagination details or response formatting, but given the annotations cover the critical behavioral aspects, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence states the complete purpose including the RPC method and returned fields. The second sentence gives the key usage distinction between subnet and primary network. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent list operation with no output schema, the description covers the main functional aspects: scope selection and return contents. It does not mention pagination or that limit controls the number of results, but limit is already described in the schema. The method name and return fields provide enough context for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% (limit lacks a description, others have one). The description adds meaning for subnet_id by explaining that omitting it means Primary Network and including it inspects an L1 set. It does not elaborate on limit, node_ids, or network beyond what the schema provides. Since coverage is high and the description adds one useful clarification, it meets the baseline 3 without exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (List), the resource (current validators), and two clear scopes (Primary Network or a specific Subnet/L1). It also names the underlying API method, which removes ambiguity. While it doesn't name a sibling tool explicitly, it clearly differentiates the Primary Network case from the subnet case, which is the main usage distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to include subnet_id (to inspect an L1's validator set) and when to omit it (Primary Network). This is a clear usage condition. However, it does not compare against sibling tools like avax_pchain_get_stake_info or avax_data_list_l1_validators, so an agent might not know when to prefer this over those. Still, the subnet guidance is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_pchain_list_blockchainsList blockchains (P-Chain)ARead-onlyIdempotent
List all blockchains registered on the P-Chain (platform.getBlockchains) with their subnet and VM IDs. Supports name filtering and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| network | No | Primary network: mainnet or fuji | fuji |
| name_contains | No | Case-insensitive substring filter on chain name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, open-world, and non-destructive behavior. The description adds useful context about the return content (subnet and VM IDs) and the availability of filtering and pagination, which goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the main action, and every phrase earns its place. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential behavior and return info (subnet and VM IDs) for a list operation. Since there is no output schema, the mention of return fields is helpful. Network default is documented in the schema, so it does not need repetition. Overall it is adequate for correct invocation, though it could hint at pagination constraints or network selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 50%, the description does compensate partially by mentioning 'name filtering' (mapping to name_contains) and 'pagination' (mapping to limit/offset). However, it does not explain the network parameter or elaborate on the specific semantics of parameters beyond what the schema already provides for network and name_contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'List all blockchains registered on the P-Chain' with specific details about the output (subnet and VM IDs). It is specific enough to distinguish from sibling tools like avax_pchain_get_subnet, which focuses on individual subnet data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use case (listing blockchains) and mentions supports for filtering and pagination, but does not explicitly state when to use this tool versus alternatives or provide exclusions. No sibling differentiation is provided, leaving the agent to infer based on names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_plan_l1_launchPlan an L1 launchARead-onlyIdempotent
Produce a tailored, step-by-step launch plan for a new Avalanche L1 given the use case: consensus mode (PoA/PoS), validator count, gas/token choices, precompile recommendations, ICM, cost estimate and exact CLI commands. Use before avax_generate_genesis.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | fuji | |
| use_case | Yes | e.g. 'gaming chain with gasless txs', 'permissioned enterprise ledger', 'DeFi L1 with own token' | |
| needs_icm | No | ||
| validators | No | ||
| permissioned | No | Force PoA (true) or PoS (false); inferred from use case if omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context about the plan's content (consensus, validators, ICM, cost, CLI commands) but does not disclose any additional behavioral traits beyond that. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the primary purpose and lists the plan's deliverables. It wastes no words, efficiently conveying scope and sequencing without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a planning tool that is read-only and idempotent, the description covers the core input (use_case) and output expectations (plan contents). It does not specify the output format or error handling, but those are not critical given the annotations and the lack of an output schema. The explicit sequencing with avax_generate_genesis strengthens completeness for the intended workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description should compensate by explaining each parameter. It does not explicitly map parameters like target, needs_icm, validators, or permissioned to their meaning. It hints at permissioned via 'consensus mode (PoA/PoS)' and mentions validator count, but the description focuses on the output content rather than input semantics, leaving the agent to rely on the sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Produce a tailored, step-by-step launch plan') with a clear resource (a new Avalanche L1) and enumerates the key components (consensus mode, validator count, gas/token choices, precompile recommendations, ICM, cost estimate, CLI commands). It also differentiates itself from the sibling avax_generate_genesis by explicitly positioning itself as a precursor step, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs 'Use before avax_generate_genesis,' providing clear sequential context. However, it does not mention when to avoid using the tool or name alternative planning-related siblings (e.g., avax_icm_recipe, avax_explain_precompile), so the guidance is not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_search_docsSearch Avalanche documentationARead-onlyIdempotent
Full-text search over the official Avalanche knowledge base (build.avax.network docs, Academy, 234 integrations, blog, all ACPs, AvalancheGo/Subnet-EVM READMEs & precompile docs, ICM/Teleporter contracts, Avalanche CLI command reference, starter kit).
Use this FIRST for any "how do I…", "what is…", "which precompile/config/command…" question about Avalanche, L1s/Subnets, Subnet-EVM, ICM/Teleporter/Warp, P-Chain staking, validators, Avalanche CLI, SDKs, RPC methods.
Args:
query: natural language or keywords (e.g. "native minter precompile genesis", "convert subnet to L1", "teleporter send message fuji")
source: optional filter: docs | academy | integrations (234 ecosystem integrations: oracles, bridges, indexers, wallets, RPC providers…) | blog | acps (Avalanche Community Proposals) | avalanchego | icm | cli | starter-kit
path_prefix: optional path filter, e.g. "content/docs/avalanche-l1s", "content/academy/avalanche-l1", "graft/subnet-evm"
limit: max hits (default 8)
Returns ranked snippets with title, heading, url and path. Call avax_get_doc with a hit's path to read the full page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| source | No | ||
| path_prefix | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral detail: it returns 'ranked snippets with title, heading, url and path' and explains that it is a search (not a full-text retrieval) with a follow-up call to avax_get_doc. It also mentions the default limit and source filter behavior, which goes beyond annotations. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but efficiently structured: an opening purpose sentence, a usage guideline, and a bulleted argument list with examples. It avoids redundancy and keeps each sentence informative. It is slightly long, but the density of information justifies the length. The layout makes key points scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema, the description covers all essential aspects: the scope of sources, when to use it, what each parameter does, and the expected return (ranked snippets with metadata). It also closes the loop by directing the agent to avax_get_doc for full content. There is no critical missing information that an agent would need to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of parameter explanation. It thoroughly details each argument: query with natural-language examples, source with an enumerated list and descriptions (e.g., 'integrations (234 ecosystem integrations: oracles, bridges, indexers, wallets, RPC providers…)'), path_prefix with concrete examples, and limit with its default and range. This adds significant meaning beyond the raw schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'Full-text search over the official Avalanche knowledge base' and enumerates the specific sources (docs, Academy, integrations, etc.). It also frames its role as the first-stop for 'how do I…' and 'which precompile/config/command…' questions, distinguishing it from other tools like avax_get_doc or avax_list_docs. The verb ('search') and resource ('Avalanche knowledge base') are explicit, and the scope is narrowed with a clear boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs 'Use this FIRST for any…' and lists example question types, providing clear when-to-use guidance. It also points to avax_get_doc as the follow-up for reading full pages, which gives a workflow. However, it does not explicitly state when NOT to use this tool (e.g., when a more specialized search like avax_search_integrations would be better), so it falls just short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_search_integrationsSearch ecosystem integrationsARead-onlyIdempotent
Find Avalanche ecosystem integrations (234 entries: oracles, bridges, indexers, RPC providers, wallets, account abstraction, x402, analytics…) by keyword or category. Offline. Returns name, category, chains available, website/docs links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only/idempotent behavior, and the description adds valuable context beyond them: the dataset is offline, contains 234 entries, and returns name, category, chains, and links. It does not explain matching behavior, but the key traits are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one dense, front-loaded sentence with no wasted words. The enumerated categories, offline flag, entry count, and return fields all earn their place and improve usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple closed-world search tool with no output schema, the description covers the dataset's source, size, offline nature, search dimensions, and returned fields. It is only slightly incomplete in not steering users toward sibling tools and not listing the full category taxonomy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It tells the agent that queries can be keywords or categories and lists output fields, but it does not clarify that category is expressed through the query string rather than a separate parameter, nor does it explain the limit parameter semantics beyond the schema's defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Find Avalanche ecosystem integrations,' and adds concrete scope with 234 entries and example categories. This clearly differentiates it from sibling search tools like avax_search_docs or on-chain data tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use this when searching ecosystem integrations by keyword or category. However, there are no explicit when-to-use or when-not-to-use statements, nor any named alternatives despite the large sibling tool list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_troubleshootTroubleshoot an Avalanche errorARead-onlyIdempotent
Given an error message or symptom (RPC error, CLI output, revert reason, ICM delivery issue), return likely causes, fixes, and matching documentation.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | What you were doing: e.g. 'deploying L1 to Fuji with avalanche-cli' | |
| error_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) and adds that the tool returns diagnosis and documentation references. It does not disclose any additional behaviors such as rate limits, source dependencies, or depth of analysis, but given the annotations already cover safety, a middle score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the core behavior and specifies input categories. No wasted words; every clause adds relevant value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple tool with one required parameter and no output schema, the description sufficiently covers input types and expected return (causes, fixes, documentation). It does not mention potential limitations (e.g., unsupported error types) but is complete for typical use, especially with the schema filling in parameter constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the 'context' parameter has a descriptive schema but 'error_text' does not. The tool description adds meaning to 'error_text' by clarifying it is an error message or symptom with categories, which helps the agent. However, it does not elaborate on how 'context' affects the analysis beyond the schema's example, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: given an error message or symptom (RPC error, CLI output, revert reason, ICM delivery issue), return likely causes, fixes, and matching documentation. It distinguishes itself from generic doc-search siblings by focusing on troubleshooting an error, though it doesn't explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool—when you have an error message or symptom—and what it will return. However, it does not explicitly state when not to use it or point to alternatives like avax_search_docs for general documentation lookup, leaving that inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_upgrade_lookupNetwork upgrade timeline (Banff → Helicon)ARead-onlyIdempotent
Structured history of Avalanche Primary Network upgrades: name, AvalancheGo version, Fuji/mainnet activation dates, status, chains affected (P/X/C/L1s), included ACPs, developer impact and source docs. Omit query for the full timeline; pass an upgrade name ('Helicon', 'Etna'), version ('v1.14.0') or ACP number ('ACP-194') for one entry. Pair with avax_acp_lookup and avax_get_doc for full detail.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds behavioral context about the query mechanism (omitting vs passing a value) and the structured nature of the return. It does not contradict annotations and provides useful additional operational detail, though it omits edge-case behavior like invalid inputs or result limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the key resource and fields, then provides query instructions and sibling references. Every segment earns its place with concrete examples; there is no redundancy or unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description covers what it returns (structured history with listed fields), how to tailor the query, and where to find complementary details (siblings). Given the low complexity and annotation coverage, nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage and a single undocumented parameter, the description fully compensates by specifying accepted formats and examples (e.g., 'Helicon', 'v1.14.0', 'ACP-194') and the default behavior when omitted. This gives the agent precise, actionable semantics for the `query` parameter, exceeding the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a structured history of Avalanche Primary Network upgrades, listing specific fields (name, version, dates, status, chains, ACPs, impact, docs). It also differentiates from siblings by naming paired tools (avax_acp_lookup, avax_get_doc) and explicitly explains how to query by name, version, or ACP. This leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage instructions: omit `query` for the full timeline, or pass an upgrade name, version, or ACP number for a single entry. It also recommends pairing with related tools for full detail, guiding the agent on when to use this tool versus alternatives. No inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_xchain_get_balanceGet X-Chain balanceBRead-onlyIdempotent
Get X-Chain AVAX (or any asset) balance for an X-addr (avm.getBalance).
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | X-Chain address, e.g. X-fuji1abc... | |
| network | No | Primary network: mainnet or fuji | fuji |
| asset_id | No | Asset ID or 'AVAX' | AVAX |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully carried by structured data. The description adds modest value by naming the underlying API call (avm.getBalance) and the multi-asset capability, but nothing further about behavior (e.g., balance format, zero-balance handling).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero filler. The core purpose is stated up front and the underlying API reference is appended compactly; nothing could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only balance tool with full parameter schema coverage and annotations covering the safety profile, this is nearly adequate. The main missing element is usage routing to sibling balance tools (avax_get_balance, avax_pchain_get_balance), which matters given the sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: all three parameters (address, network, asset_id) are documented with descriptions. The description echoes the asset flexibility (AVAX or any asset) that maps to asset_id but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get X-Chain balance for an X-addr') and clarifies the asset scope ('AVAX or any asset'). The X-Chain qualifier implicitly distinguishes it from avax_get_balance and avax_pchain_get_balance, though it doesn't name siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the generic avax_get_balance or the P-chain variant avax_pchain_get_balance. No exclusions or prerequisites are given; selection context is only implicit via the X-Chain qualifier in the name and title.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
41 tool updates
v0.1.2- First observed
avax_acp_list - First observed
avax_acp_lookup - First observed
avax_acp_votes - First observed
avax_call_contract - First observed
avax_console_flows - First observed
avax_data_get_token_metadata - First observed
avax_data_list_chains - First observed
avax_data_list_erc20_balances - First observed
avax_data_list_l1_validators - First observed
avax_data_list_transactions - First observed
avax_estimate_gas - First observed
avax_explain_precompile - First observed
avax_fetch_live_doc - First observed
avax_generate_genesis - First observed
avax_get_balance - First observed
avax_get_block - First observed
avax_get_chain_status - First observed
avax_get_code - First observed
avax_get_doc - First observed
avax_get_guide - First observed
avax_get_transaction - First observed
avax_hosted_call - First observed
avax_hosted_list_tools - First observed
avax_hosted_read_index - First observed
avax_icm_recipe - First observed
avax_list_docs - First observed
avax_list_networks - First observed
avax_list_topics - First observed
avax_node_info - First observed
avax_pchain_get_balance - First observed
avax_pchain_get_stake_info - First observed
avax_pchain_get_subnet - First observed
avax_pchain_get_tx_status - First observed
avax_pchain_get_validators - First observed
avax_pchain_list_blockchains - First observed
avax_plan_l1_launch - First observed
avax_search_docs - First observed
avax_search_integrations - First observed
avax_troubleshoot - First observed
avax_upgrade_lookup - First observed
avax_xchain_get_balance
TDQS
Scored across 41 tools
Most tools map clearly to distinct resources: docs, ACPs, upgrades, EVM reads, P-Chain, X-Chain, and Data API. A few pairs overlap conceptually, such as `avax_get_doc` vs `avax_fetch_live_doc` or the separate balance tools, but the descriptions and prefixes make the intended boundaries clear.
The server consistently uses an `avax_` prefix and mostly follows a verb-first pattern such as `get_*`, `list_*`, `search_*`, and `generate_*`. A few noun-style names like `avax_icm_recipe`, `avax_console_flows`, `avax_acp_votes`, and `avax_node_info` break the pattern, but the overall style remains readable and predictable.
With 41 tools, the server is too heavy and will create selection burden for agents. The many `data_*`, `pchain_*`, and hosted-proxy tools are individually useful but could be consolidated or exposed as parametrized sub-resources to reduce the surface.
The server covers the Avalanche documentation, ACPs, upgrades, network registry, EVM read operations, P-Chain/X-Chain reads, ecosystem integrations, and live data API access. Minor gaps exist, such as missing direct action for some hosted capabilities, but the available surface is comprehensive for a read-oriented knowledge and data server.
Maintenance
Related MCP Connectors
Search and retrieve Avalanche blockchain documentation for building on AVAX.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
The documentation, as a tool your agent can call: 950+ AI-dev guides. Search + fetch tools.
Pay-per-use weather, environment, finance, and on-chain intelligence tools for AI agents via x402.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA comprehensive toolkit for building AI agents with blockchain capabilities, enabling interactions with multiple blockchain networks for tasks like wallet management, fund transfers, smart contract interactions, and cross-chain asset bridging.4GPL 3.0
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with the Somnia blockchain network, including documentation search, blockchain queries, wallet management, cryptographic signing, and on-chain operations.-

Bink MCP Serverofficial
FlicenseNot gradedqualityDmaintenanceEnables AI agents to perform blockchain operations like wallet management, token info, DeFi swaps, cross-chain bridging, and price checking across Ethereum, BNB Chain, and Solana.-- AlicenseNot gradedqualityBmaintenanceProvides AI agents direct access to the Chainstack platform, enabling blockchain node deployment, documentation search, platform status checks, and more.4MIT