xian-mcp-server
OfficialThe xian-mcp-server provides a unified interface for AI assistants and HTTP clients to interact with the Xian blockchain, offering comprehensive tools across these areas:
Wallet Management: Create wallets (plain, from private key, HD, or mnemonic) and import existing ones.
Balances & Transactions: Check token balances, list all token balances (paginated), send tokens, send raw transactions, simulate transactions, and retrieve transaction details.
Smart Contracts: Read contract state variables and retrieve contract source code.
Token Discovery: Find token contract addresses by symbol and retrieve token metadata by contract name.
DEX Trading: List pairs, get current prices, obtain swap quotes (exact input/output), plan swaps and liquidity operations (add/remove), execute DEX trades, monitor live DEX events, and retrieve historical events with cursor-based pagination.
Indexed Chain Data (BDS): Check BDS sync status, get developer reward totals, paginate blocks, fetch blocks by height/hash, retrieve indexed transactions, list transactions by block/sender/contract, get events for a transaction, query indexed events, view state history, and get state writes for a specific transaction or block.
Shielded Wallet Sync: List shielded output tags and retrieve shielded wallet transaction history.
Cryptographic Operations: Sign messages, verify signatures, and encrypt/decrypt messages.
Server Administration: Discover available tools and check server health.
The server operates locally via MCP (stdio) or HTTP REST. Wallet and signing tools that involve private keys require the XIAN_MCP_ENABLE_UNSAFE_WALLET_TOOLS=1 flag to be enabled.
Click on "Install 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., "@xian-mcp-serverWhat is the current block height on Xian?"
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.
xian-mcp-server
xian-mcp-server is a Model Context Protocol (MCP) server that exposes the
Xian blockchain to AI assistants and HTTP clients. It wraps xian-tech-py
to offer wallet management, transactions, smart-contract reads and writes,
indexed BDS reads, shielded wallet sync, token discovery, DEX trading, and
cryptographic operations through a single tool catalog.
The server speaks two transports:
Mode | Transport | Use case |
MCP (stdio) | JSON-RPC over | Claude Desktop, LM Studio, MCP clients |
HTTP (REST) | JSON over HTTP | Web apps, AI tool-calling loops, scripts |
⚠️ LOCAL USE ONLY. The server handles private keys. Do not expose it to the internet or use it with production wallets.
See CLAUDE.md for the full AI-facing tool reference and chain-specific concepts (chi, state-key format, address vs. public key, DEX workflow, error patterns).
Request Shape
flowchart LR
Assistant["AI assistant or script"] --> Transport["MCP stdio or HTTP REST"]
Transport --> Catalog["Shared tool catalog"]
Catalog --> SDK["xian-tech-py"]
SDK --> Node["Xian node RPC"]
SDK --> Live["CometBFT live events"]
SDK --> BDS["BDS indexed APIs"]
Catalog --> Wallets["Local wallet operations"]
Catalog --> Crypto["Local crypto helpers"]
Catalog --> DEX["DEX helper tools"]Related MCP server: Hyperion MCP Server
Quick Start
Build the Docker image (recommended):
git clone https://github.com/xian-technology/xian-mcp-server.git
cd xian-mcp-server
docker compose buildOr build against a sibling SDK checkout:
docker buildx build --target local --load -t xian-mcp-server \
--build-context xian_py=../xian-py \
--build-context xian_accounts=../xian-contracting/packages/xian-accounts \
--build-context xian_runtime_types=../xian-contracting/packages/xian-runtime-types \
.Smoke-test the MCP handshake:
docker run --rm -i xian-mcp-server < test_requests.jsonl
# or, without Docker:
uv run xian-mcp-server < test_requests.jsonl
uv run python xian_server.py < test_requests.jsonlYou should see two JSON responses: an initialize response (id 1) and a
tools/list response (id 2).
Use with Claude Desktop
Edit your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json
on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows,
~/.config/Claude/claude_desktop_config.json on Linux):
{
"mcpServers": {
"xian": {
"command": "docker",
"args": ["run", "-i", "--rm", "xian-mcp-server"]
}
}
}Quit Claude Desktop fully and restart it; the Xian tools will be available.
Use with LM Studio
In LM Studio's Program sidebar, choose Install → Edit mcp.json and add:
{
"xian": {
"command": "docker",
"args": ["run", "-i", "--rm", "xian-mcp-server"]
}
}LM Studio reloads MCP servers automatically when the file is saved.
Run the HTTP Server
uv run xian-mcp-http # bare-metal
export XIAN_MCP_HTTP_TOKEN="$(openssl rand -hex 32)"
# Optional: publish Docker Compose HTTP on IPv6 loopback instead of IPv4.
# export HTTP_PUBLISH_HOST="::1"
docker compose up xian-mcp-http
docker run -p 127.0.0.1:8100:8100 \
-e HTTP_HOST=0.0.0.0 \
-e XIAN_MCP_HTTP_TOKEN="${XIAN_MCP_HTTP_TOKEN}" \
xian-mcp-server xian-mcp-httpEndpoints:
Method | Path | Description |
|
| List all tools with their JSON-Schema params |
|
| Call a tool by name with a JSON body |
|
| Health check |
curl http://localhost:8100/tools
curl -X POST http://localhost:8100/tools/get_balance \
-H "Content-Type: application/json" \
-d '{"address": "your_address_here"}'HTTP binds to 127.0.0.1 by default in bare-metal mode. Docker examples bind
the host port to 127.0.0.1 by default while the process listens on 0.0.0.0
inside the container. With Compose, set HTTP_PUBLISH_HOST=::1 to publish the
host port on IPv6 loopback, then call http://[::1]:8100/tools.
Unsafe wallet/signing tools are hidden from GET /tools and rejected by
POST /tools/{name} unless XIAN_MCP_ENABLE_UNSAFE_WALLET_TOOLS=1 is set.
When unsafe tools are enabled, or when HTTP binds to a non-loopback address, set
XIAN_MCP_HTTP_TOKEN and send it as a bearer token. IPv4 loopback,
localhost, and IPv6 loopback binds such as ::1 or [::1] do not require a
token unless unsafe tools are enabled or a token is explicitly configured. IPv6
wildcard :: and other non-loopback IPv6 binds require a token.
DEX discovery, quotes, and plans are read-only and remain available with the
unsafe gate disabled. The three dex_submit_* tools are value-moving tools and
use the same unsafe-wallet gate and HTTP bearer-token requirements as sends and
legacy DEX helpers. Each planner stores an immutable canonical plan in a
process-local registry and returns its complete audit JSON with an opaque
plan_id, SHA-256 digest, issue time, and expiry. After confirmation, pass only
that plan_id and the private key to the matching submitter. Submission claims
the stored plan exactly once before wallet validation or network work, simulates
calls by default, then submits its required approvals and exact router call.
Plans expire after five minutes by default, may be evicted at the registry
bound, and do not survive a server restart; create a fresh plan in those cases.
export XIAN_MCP_ENABLE_UNSAFE_WALLET_TOOLS=1
export XIAN_MCP_HTTP_TOKEN="$(openssl rand -hex 32)"
curl http://localhost:8100/tools \
-H "Authorization: Bearer ${XIAN_MCP_HTTP_TOKEN}"
curl -X POST http://localhost:8100/tools/create_wallet \
-H "Authorization: Bearer ${XIAN_MCP_HTTP_TOKEN}"Browser CORS is disabled by default. To allow a local browser client, list exact
origins with XIAN_MCP_HTTP_CORS_ORIGINS; wildcard CORS is rejected:
export XIAN_MCP_HTTP_CORS_ORIGINS="http://localhost:3000,http://127.0.0.1:3000"The HTTP wrapper (http_server.py) is designed to be reusable with any MCP
server that uses the TOOL_SPECS pattern; see the source for the
create_app(tool_specs=...) helper.
Principles
Local-only by default. The server is built around private-key custody. It must not be exposed to the internet or paired with production wallets.
Two transports, one tool catalog. Stdio MCP and HTTP REST expose the exact same tools and schemas. The transport is a thin shell.
AI-friendly safety conventions. Errors return human-readable strings. Private keys are never logged or echoed in responses. Confirmation is expected for any value-moving operation; see CLAUDE.md.
xian-tech-pyis the only SDK. All blockchain interactions go throughxian-tech-py's sync / async clients. Live DEX waits use its CometBFT WebSocket watcher, while indexed reads wrap its BDS surface.Read-mostly indexed surface. BDS-backed reads (blocks, txs, events, state history, shielded sync) are read-only and most useful when pointed at a node with BDS-backed indexed APIs enabled.
Tool Surface
Group | Tools (representative) |
Wallets |
|
Balances / txs |
|
Contracts / state |
|
Token discovery |
|
DEX discovery / planning |
|
DEX events |
|
DEX submission |
|
Indexed / BDS |
|
Shielded sync |
|
Crypto |
|
Use tools/list (see test_requests.jsonl) to discover the full schema.
Configuration
Variable | Purpose | Default |
| Node RPC URL |
|
| Chain ID |
|
| GraphQL endpoint |
|
| Include SDK |
|
| Enable wallet creation/import, signing, encryption/decryption, sends, and DEX trade helpers |
|
| HTTP bind address |
|
| HTTP bind port |
|
| Docker Compose host interface for publishing HTTP mode |
|
| Bearer token for HTTP tools; required for unsafe tools or non-loopback binds | unset |
| Comma-separated browser origins allowed to call HTTP mode | unset |
| Process-local DEX plan lifetime (bounded to 30-900 seconds) |
|
| Maximum stored DEX plans before oldest-first eviction (bounded to 1-1000) |
|
The defaults target a local current-code stack. Drop overrides into a .env
file (template in .env.example) when using docker-compose.
Key Files
xian_server.py— stdio MCP server entrypoint.dex_plan_registry.py— bounded process-local storage for immutable, expiring, single-use DEX plans.http_server.py— reusable HTTP REST wrapper around the same tool specs.serialization.py— JSON-RPC and tool-result serialization helpers.mcp.json,custom_catalog.yaml— example client configurations.test_requests.jsonl— canonical MCP handshake smoke input.tests/—unit/(deterministic) andintegration/(live-network) coverage; shared fixtures intests/shared.py.Dockerfile,docker-compose.yml— container build and runtime topology.CLAUDE.md— AI assistant integration guide and detailed tool reference.
Validation
uv sync --extra dev
uv run pytest -q # deterministic unit tests
docker run --rm -i xian-mcp-server < test_requests.jsonl # MCP handshake smoke testLive-network integration tests are opt-in and submit small transactions against the configured dev node:
export XIAN_NODE_URL=http://127.0.0.1:27657
export XIAN_CHAIN_ID=xian-localnet-1
export XIAN_MCP_LIVE_PRIVATE_KEY=<funded-dev-private-key>
export XIAN_MCP_LIVE_TOKEN_SYMBOL=XDT
export XIAN_MCP_LIVE_TOKEN_CONTRACT=con_dex_demo_token
export XIAN_MCP_LIVE_DEX_TOKEN=con_dex_demo_token
export XIAN_MCP_LIVE_DEX_BASE=currency
# Optional: also add and remove a small liquidity position.
export XIAN_MCP_LIVE_DEX_LIQUIDITY=1
uv run pytest -q tests/integration/test_live_tool_surface.pyCI runs unit tests and the MCP handshake smoke test on every push and PR.
Live integration tests run on a daily schedule and via manual
workflow_dispatch.
Related Docs
CLAUDE.md — AI-assistant integration guide, full tool reference, security guidelines, common workflows
test_requests.jsonl — canonical MCP handshake smoke input
xian-tech-py— the underlying Python SDK
Available Tools
35 toolsdex_get_pairC
Get a canonical DEX pair by id or token contracts
| Name | Required | Description | Default |
|---|---|---|---|
| pair_id | No | ||
| token_a | No | ||
| token_b | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It does not state whether the tool is read-only, what happens if a pair is not found, or any permission requirements. This lack of transparency could lead to incorrect expectations.
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 no wasted words. However, its brevity sacrifices important details that are necessary for an agent to use the tool correctly. It is efficient but incomplete.
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 complexity (3 optional parameters, no output schema, no annotations), the description is inadequate. It does not specify expected output, error behavior, or parameter relationships, leaving significant gaps for the agent.
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 add meaning. It hints that 'id' refers to pair_id and 'token contracts' refers to token_a/token_b, but does not clarify required combinations, data types, or constraints (e.g., whether both token_a and token_b are needed together). This is insufficient for proper parameter usage.
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 'get' and the resource 'canonical DEX pair', and specifies identification methods (by id or token contracts). However, it does not differentiate this tool from siblings like dex_list_pairs or dex_get_price, missing an opportunity to clarify when to use this specific tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as dex_list_pairs (list all pairs) or dex_get_price (get price). The agent is left uncertain about context and selection without explicit usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dex_list_eventsA
List indexed canonical DEX or bound LP-token events with a restart-safe cursor
| Name | Required | Description | Default |
|---|---|---|---|
| event | No | ||
| limit | No | ||
| after_id | No | ||
| contract | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It discloses that the tool lists indexed events with a restart-safe cursor, indicating it is a read operation with pagination. However, it does not explicitly state it is read-only or explain behavior for invalid parameters.
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, front-loaded with the action. It is efficient but lacks structure like bullet points for parameters. The conciseness is good, but the structure could be improved for clarity.
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 no output schema, no annotations, and no parameter descriptions, the description is somewhat minimal. It hints at cursor pagination and event types but does not cover output format or parameter details. It is adequate for a specialized tool but not fully 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 4 parameters with zero schema description coverage. The description does not explain any parameter (e.g., what 'event' lists, how 'after_id' works, or what 'contract' filters). 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 lists indexed canonical DEX or bound LP-token events with a restart-safe cursor. This is specific and distinguishes it from siblings like 'list_events' (generic events) and 'dex_wait_live_event' (live events).
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 for DEX-specific event listing with cursor pagination but does not explicitly state when to use it over alternatives (e.g., 'list_events' for non-DEX events). No when-not-to-use or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dex_list_pairsB
List canonical Xian DEX pairs and reserves
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| token | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'List' implies read-only, but it does not disclose pagination behavior, data freshness, or potential performance considerations. It is moderately transparent but misses key details.
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 concise single sentence with no fluff. It earns its place but could be front-loaded with key details.
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 three parameters and no output schema or annotations, the description is too sparse. It lacks information on return format, pagination, and what constitutes 'pairs and reserves', making it insufficient for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description does not mention any of the three parameters (limit, token, offset) or explain their purpose. It adds no value beyond the raw 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 'List canonical Xian DEX pairs and reserves' uses a specific verb 'List' and identifies a clear resource 'canonical Xian DEX pairs and reserves'. It distinguishes well from sibling tools like 'dex_get_pair' (single pair) and 'dex_list_events' (events).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives, such as when to filter or paginate. The description lacks any context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dex_plan_add_liquidityC
Issue a single-use addLiquidity plan with exact calls, digest, and expiry
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| token_a | Yes | ||
| token_b | Yes | ||
| recipient | Yes | ||
| slippage_bps | No | ||
| amount_a_desired | Yes | ||
| amount_b_desired | Yes | ||
| deadline_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'single-use' and mentions 'exact calls, digest, and expiry' but does not clarify if this creates a plan that must be executed separately, or if it performs the actual addition. It fails to disclose whether it is a read or write operation, and no annotations are provided to compensate.
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 vague sentence. While concise, it sacrifices clarity and fails to convey essential information, making it under-specified rather than efficiently informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, 0% schema coverage, and no annotations, the description is critically incomplete. It does not explain the return value, the plan lifecycle, or how to use the tool effectively for a complex operation.
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 0%, and the description provides no explanations for any of the 8 parameters (e.g., token_a, slippage_bps, deadline_minutes). The meaning of parameters is left entirely to the schema, which lacks 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 it issues a single-use addLiquidity plan with exact calls, digest, and expiry, which clearly indicates the action and resource. However, it does not explain the context (e.g., DEX) or differentiate it from sibling tools beyond the name.
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 alternatives like dex_plan_remove_liquidity or dex_plan_swap. No prerequisites or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dex_plan_remove_liquidityC
Issue a single-use removeLiquidity plan with exact calls, digest, and expiry
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| token_a | Yes | ||
| token_b | Yes | ||
| liquidity | Yes | ||
| recipient | Yes | ||
| slippage_bps | No | ||
| deadline_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions 'single-use' and 'plan', suggesting a one-time operation that creates a plan. However, without annotations, there is no detail on side effects, permissions, or reversibility. It provides some behavioral context but not enough for a complex tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is efficient but under-informative. It sacrifices clarity for brevity, leaving out important context.
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 complexity (7 parameters, no output schema, no annotations), the description fails to cover essential aspects like how to use the plan, what it returns, or constraints. It is incomplete for reliable agent 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 0%, and the description provides no explanation of any of the 7 parameters (account, token_a, token_b, liquidity, recipient, slippage_bps, deadline_minutes). The agent has no semantic help beyond parameter names and 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 'Issue a single-use removeLiquidity plan', indicating the verb and resource. It distinguishes from sibling tools like 'dex_plan_add_liquidity' and 'dex_plan_swap'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool over alternatives, nor are there any prerequisites or exclusions mentioned. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dex_plan_swapC
Issue a single-use DEX swap plan with fresh quote, exact calls, digest, and expiry
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | exact_in | |
| path | No | ||
| amount | Yes | ||
| account | Yes | ||
| max_hops | No | ||
| token_in | Yes | ||
| recipient | Yes | ||
| token_out | Yes | ||
| slippage_bps | No | ||
| fee_on_transfer | No | auto | |
| deadline_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It hints that the plan is single-use and involves a fresh quote, digest, and expiry, but fails to explain side effects, permission requirements, or whether it executes or only plans. The behavioral profile is vague.
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, which is concise but lacks structure. It is front-loaded with the verb but sacrifices informative content for brevity.
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 complexity (11 parameters, no output schema, no annotations), the description is severely incomplete. It does not explain what the plan object is, what the return value contains, or prerequisites like needing a prior quote, making it insufficient 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 has 0% description coverage, yet the description does not explain any of the 11 parameters. The words 'fresh quote, exact calls, digest, and expiry' do not map directly to parameter names, leaving the agent with no guidance on how to fill in fields like mode, path, slippage_bps, etc.
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 issues a single-use DEX swap plan, distinguishing it from quote-only tools (dex_quote_exact_in/out) and liquidity plan tools (dex_plan_add_liquidity, dex_plan_remove_liquidity). The specific mention of 'fresh quote' and 'exact calls' further clarifies its purpose.
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 for creating a swap plan but does not explicitly state when to use this tool versus alternatives like dex_quote_exact_in/out or simulate_transaction. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dex_quote_exact_inB
Quote the best route and output for an exact input amount
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| account | No | Signer account used to resolve its fee tier | |
| max_hops | No | ||
| token_in | Yes | ||
| amount_in | Yes | ||
| token_out | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic function. It does not disclose any behavioral traits such as safety, permissions, rate limits, or side effects. The description fails to compensate for the lack of 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 is concise and front-loaded with the core action. It could be slightly more structured but is appropriately sized for the message it conveys.
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 complexity (6 parameters, no output schema, low schema coverage), the description is insufficient. It does not explain the 'best route' concept, output format, or parameter roles, leaving significant gaps for an AI agent.
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 only 17% schema description coverage, the description adds no additional meaning to the parameters. It does not explain what each parameter does or how they relate to the tool's function, leaving most parameters 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 clearly states the tool's purpose: quoting the best route and output for an exact input amount. It effectively distinguishes from sibling tool dex_quote_exact_out, which handles exact output amounts.
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 use when an exact input amount is specified, but it does not explicitly state when to use this versus alternatives. No exclusions or alternative references are provided, leading to minimal guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dex_quote_exact_outC
Quote the least input required for a desired output amount
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| account | No | Signer account used to resolve its fee tier | |
| max_hops | No | ||
| token_in | Yes | ||
| token_out | Yes | ||
| amount_out | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It only states the tool 'quotes', implying a read-only operation, but does not disclose any side effects, authentication needs, rate limits, or output format.
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, making it very concise. It is front-loaded with the key purpose. However, it might be too minimal to be fully useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no output schema, no annotations), the description is severely incomplete. It fails to explain the function's behavior, parameter roles, or return value.
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 17%, the description is expected to compensate by explaining parameters. However, it provides no additional meaning beyond the schema, leaving the purpose of most parameters unclear.
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 'Quote the least input required for a desired output amount' clearly states the tool's purpose with a specific verb ('Quote') and resource. It implies it computes input for a given output, distinguishing from the sibling 'dex_quote_exact_in' which does the reverse.
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 guidelines on when to use this tool versus alternatives like dex_quote_exact_in. The description does not mention any prerequisites, context, or when it is appropriate to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dex_wait_live_eventA
Wait for low-latency finalized DEX events over CometBFT WebSocket without BDS; non-durable, so use dex_list_events for replay
| Name | Required | Description | Default |
|---|---|---|---|
| event | Yes | ||
| caller | No | ||
| signer | No | ||
| tx_hash | No | ||
| contract | Yes | ||
| max_events | No | ||
| timeout_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions 'non-durable' and 'WebSocket', giving some insight, but does not disclose what happens on timeout, connection failures, or whether events are streamed or returned as a batch.
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 conveys purpose, mechanism, and a key usage distinction without extraneous words.
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 tool involves a real-time event subscription with 7 parameters, but the description lacks details on return format, event handling, or how parameters like max_events and timeout_seconds affect behavior. It is insufficiently complete for the tool's complexity.
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 no parameter descriptions in the input schema, the description should add meaning to the 7 parameters. It does not mention any parameter names or semantics, leaving the agent to infer from parameter names alone.
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 waits for low-latency finalized DEX events over a specific mechanism (CometBFT WebSocket) without BDS, and distinguishes it from the sibling tool dex_list_events for replay purposes.
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 contrasts with dex_list_events for replay, indicating when not to use this tool. However, it does not explain when it is appropriate to wait for live events versus other methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceB
Check the balance of a XIAN address for a specific token
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The XIAN address to check (64 hex characters) | |
| token_contract | No | The token contract name (default: 'currency') | currency |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It implies a read-only operation ('Check'), which is accurate, but does not disclose whether it requires authentication or any other behavioral traits. It is adequate but minimal.
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 with 10 words, containing zero wasted text. It is perfectly concise and front-loaded.
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 low complexity (2 parameters, no output schema), the description is largely complete. It covers the core functionality, though it omits mention of the return value (balance amount), which is implied. No output schema exists, so not 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 coverage is 100% with descriptions for both parameters. The description adds no new meaning beyond what the schema already provides; it simply restates the purpose. Baseline score 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 verb 'Check', the resource 'balance', and specifies the context 'XIAN address' and 'specific token'. It is straightforward but does not explicitly differentiate from sibling tools like get_token_balances, which checks all token 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?
No guidance is provided on when to use this tool versus alternatives such as get_token_balances or other get_state tools. The description lacks usage context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bds_statusA
Get indexed/BDS availability and synchronization status for the connected node
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only states what is retrieved, not behavioral traits like side effects, permission requirements, or what 'connected node' implies. This is insufficient for understanding tool 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?
A single concise sentence that clearly states the tool's purpose without any fluff or redundant 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?
Given no output schema and no annotations, the description is minimally complete for a simple status check, but it does not specify the format or type of the returned data (e.g., boolean, string). This could leave an agent uncertain about the response structure.
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 schema coverage is 100% by default. The description adds meaning by specifying the resource being accessed. Base baseline for 0 params is 4.
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 uses a specific verb 'Get' and resource 'indexed/BDS availability and synchronization status for the connected node', clearly distinguishing it from sibling tools that deal with balances, blocks, transactions, etc.
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 alternatives. Sibling tools cover many read operations, but the description does not provide any context for choosing this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blockB
Get an indexed block by height
| Name | Required | Description | Default |
|---|---|---|---|
| height | Yes | Block height |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for disclosing behavior. It mentions 'indexed' but does not explain what that implies (e.g., availability, performance, or data freshness). No info on return value or side effects.
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 clear sentence with no fluff. It is concise and front-loaded. However, it could be slightly more informative without losing conciseness.
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 simplicity of the tool (one param, no output schema), the description is minimal. It lacks details about what the block contains (e.g., transactions, metadata) and does not prepare the agent for the response format. Sibling count is high, so more disambiguation would be beneficial.
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% (height described as 'Block height'). The description adds 'by height' which is already implied. No additional semantic value beyond 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 action (Get), resource (block), and method (by height). It is specific and differentiates from sibling tool get_block_by_hash which uses a hash parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_block_by_hash or list_blocks. The agent has no cues for selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_by_hashB
Get an indexed block by block hash
| Name | Required | Description | Default |
|---|---|---|---|
| block_hash | Yes | Block hash |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions 'indexed block' but doesn't clarify what indexing means, error behavior, or required permissions. Minimal disclosure.
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?
Single sentence, front-loaded verb and resource. No wasted words. Efficient for the information provided.
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 one-parameter lookup, the description is adequate but lacks details on return format or error handling. Given no output schema, some additional context could help.
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% for the single parameter. Description repeats 'block hash' from schema, adding no new meaning. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'an indexed block', and the method 'by block hash'. It is specific and distinguishes from siblings like 'get_block' which may use other identifiers.
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 alternatives such as 'get_block' or 'list_blocks'. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contract_sourceC
Get the source code of a smart contract
| Name | Required | Description | Default |
|---|---|---|---|
| contract_name | Yes | Name of the contract |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states the action without details on return format, error handling, or requirements (e.g., contract existence, network effects). The agent lacks information about what happens if the source is unavailable or how the data is structured.
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 extremely concise (one sentence, 8 words). It front-loads the action effectively with no wasted words. However, it could benefit from slight expansion for clarity without losing conciseness.
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 absence of an output schema and annotations, the description is insufficiently complete. It does not specify what the source code looks like, if it is verified, or how to handle contracts without verified source code. For a tool with one parameter, more context is 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?
Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema's 'Name of the contract'. Both are minimal, but the schema already documents the parameter, so the description does not detract.
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 retrieves the source code of a smart contract, using a specific verb and resource. It is unambiguous and straightforward, though it does not differentiate from sibling tools like get_balance or get_state, which are distinct in purpose.
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 usage guidelines are provided. The description does not indicate when to use this tool over alternatives, nor does it mention prerequisites (e.g., contract must be verified) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_developer_rewardsA
Get indexed developer reward totals for a recipient key
| Name | Required | Description | Default |
|---|---|---|---|
| recipient_key | Yes | Developer reward recipient key or address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description partially carries the burden. It implies a read operation ('Get') but does not disclose permissions, data freshness, or whether results are cumulative. It is adequate but not detailed.
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 no redundant words. Each 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 simple read tool with one parameter and no output schema, the description is sufficiently complete. It states the action and input, though it could optionally mention the output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a slight qualifier ('Developer reward') but essentially repeats the schema's parameter description. No additional meaning 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 clearly states the tool retrieves 'indexed developer reward totals for a recipient key', specifying the verb ('Get'), resource ('developer reward totals'), and scope ('indexed', 'for a recipient key'). It distinguishes from sibling tools like get_balance and get_token_balances by focusing on developer rewards.
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 alternatives (e.g., get_balance, get_state). Sibling tools include many similar getters, but the description does not provide context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dex_priceA
Get the current price of a token on the DEX
| Name | Required | Description | Default |
|---|---|---|---|
| base_contract | No | Base token to price against (default: 'currency') | currency |
| token_contract | Yes | Token contract to get price for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the purpose, lacking details about side effects (presumably none), authentication needs, rate limits, or whether it's a read-only operation.
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?
Single, clear sentence with no wasted words. Efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity and full schema coverage, the description is functional but lacks information about the return format or any other contextual details that would help an agent understand the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters have descriptions in the schema. The description adds no additional meaning beyond what the schema already provides.
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 action (Get), the resource (current price of a token), and the location (on the DEX). It is specific and distinctive among sibling tools, as no other tool mentions DEX price.
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 for obtaining current DEX token prices but provides no explicit guidance on when to use or avoid this tool versus siblings, nor any context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_events_for_txB
List indexed events emitted by a transaction
| Name | Required | Description | Default |
|---|---|---|---|
| tx_hash | Yes | Transaction hash |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden but only states 'indexed events', implying not all events, yet does not disclose ordering, pagination, or potential limits. No mention of whether events are sorted or if there are any size constraints.
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, clear sentence with no redundant words. It is optimally concise for the tool's simplicity.
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 param, no output schema), the description is adequate but lacks information about the return format (e.g., fields in each event). Sibling tools like get_transaction may offer more detail, but this standalone is minimally 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 100% (tx_hash described as 'Transaction hash'), so the description adds no additional meaning. 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 uses specific verb 'list' and resource 'indexed events emitted by a transaction', clearly distinguishing it from siblings like get_transaction or list_events. However, it could be more explicit about the scope (events for a single tx vs all events).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives like list_events for cross-tx events or get_transaction for transaction details. The description does not mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indexed_txB
Get an indexed transaction by transaction hash
| Name | Required | Description | Default |
|---|---|---|---|
| tx_hash | Yes | Transaction hash |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The verb 'Get' implies a read-only operation, but the description does not disclose error handling (e.g., behavior for missing hash), rate limits, or whether the transaction must be previously indexed. Minimal behavioral insight.
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?
Single sentence, no redundant words. Front-loaded with verb and resource. 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?
Simple tool with one parameter and no output schema. The description is minimally adequate but lacks details on return format, error states, or what 'indexed' implies. Meets baseline for a low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with the single parameter 'tx_hash' described as 'Transaction hash'. The description adds no additional meaning beyond the schema. Baseline of 3 is appropriate since schema already documents the parameter sufficiently.
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 uses a specific verb-resource pair 'Get an indexed transaction', which clearly states the action and object. It distinguishes from the sibling 'get_transaction' by adding 'indexed', though the meaning of 'indexed' is not further explained, leaving slight 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?
No guidance on when to use this tool versus alternatives like 'get_transaction'. No mention of prerequisites, context, or exclusion criteria. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stateC
Read a state variable from a smart contract
| Name | Required | Description | Default |
|---|---|---|---|
| state_key | Yes | State key 'contract.variable:key' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the bare description 'Read a state variable' does not disclose behavior such as return format, error handling, or permission requirements. It is insufficient for an agent to anticipate effects.
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 very concise (7 words), but at the expense of necessary detail. It could be expanded without being verbose.
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 1 parameter and no output schema, the description should explain what constitutes a state variable, expected key format, and return value. It provides none of this, leaving the agent underinformed.
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 already describes the state_key parameter with format 'contract.variable:key'. The description adds no additional meaning, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a state variable from a smart contract, but does not differentiate from siblings like get_state_for_block or get_state_for_tx, which also read state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_state_for_block. The description lacks context on prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_state_for_blockA
List indexed state writes produced by a block height or block hash
| Name | Required | Description | Default |
|---|---|---|---|
| block_ref | Yes | Block height or block hash |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It indicates the tool lists 'indexed state writes,' which is fairly transparent, but does not disclose details like ordering, pagination, limits, or read-only nature. Minimal 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?
Single sentence, no wasted words. The action and scope are front-loaded, making it easy 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?
Given the tool's simplicity (one required parameter, no output schema), the description provides sufficient context to understand its purpose. It could hint at read-only behavior or mention that state writes are indexed, but overall complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter whose description is already clear ('Block height or block hash'). The description merely reiterates this without adding new semantics (e.g., format constraints, default, examples).
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 action (list) and resource (indexed state writes) with explicit scope (by block height or block hash). It effectively distinguishes from sibling tools like get_state, get_state_for_tx, and get_state_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like get_state or get_state_for_tx. The description implies usage by specifying the input type but does not exclude other scenarios or mention prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_state_for_txB
List indexed state writes produced by a transaction
| Name | Required | Description | Default |
|---|---|---|---|
| tx_hash | Yes | Transaction hash |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only states the basic function. It does not disclose whether the operation is read-only, any permissions required, rate limits, or what 'indexed state writes' entails. Behavioral traits are missing.
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, front-loading the purpose. It could be slightly more informative without losing brevity, but it is efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and many sibling tools, the description is incomplete. It fails to explain what 'state writes' are, the output format, or how the result relates to the transaction. More detail is needed for effective use.
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% for the single parameter 'tx_hash', which is described as 'Transaction hash'. The description adds no further meaning beyond what the schema already provides, meeting the baseline but not adding 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 'List indexed state writes produced by a transaction' uses a specific verb and resource, clearly indicating the tool lists state writes for a transaction. It distinguishes from siblings like 'get_state' and 'get_state_for_block' which likely retrieve state differently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives such as 'get_state' or 'get_state_for_block'. The description does not mention when it's appropriate or not to use it, leaving the agent to infer usage from the title and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_state_historyC
List indexed history entries for a state key
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | State key in 'contract.variable:key' form | |
| limit | No | Maximum number of history entries to return | |
| offset | No | Pagination offset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It does not mention that the operation is read-only, nor describe pagination behavior (limit/offset) beyond what is in the schema. The term 'indexed' is unexplained.
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?
Single concise sentence with no wasted words. Could include more info without becoming verbose, but current structure is 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 tool with full schema coverage and no output schema, the description provides minimal context. It does not explain what 'history entries' contain, ordering, or limitations. Adequate but with gaps.
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 all parameters. The description adds no additional meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies verb 'List' and resource 'history entries' targeting a 'state key'. It is clear and distinguishes from siblings like get_state (current state) and get_state_for_block/tx (point-in-time state), but does not explicitly mention these distinctions.
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 alternatives. No explict when/ when-not scenarios or references to sibling tools. The description merely states what it does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_balancesA
List all token balances for a XIAN address with pagination support
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of token balances to return | |
| offset | No | Pagination offset | |
| address | Yes | The XIAN address to inspect (64 hex characters) | |
| include_zero | No | Include tokens whose current balance is zero |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It implies a read-only operation (listing balances), but does not explicitly state that it is non-destructive or require any special permissions. It also does not mention pagination behavior, rate limits, or what happens when parameters are omitted beyond default values.
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 no waste. It is front-loaded with the tool's core purpose and includes key constraints (XIAN address, pagination). Every word is meaningful.
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 4 parameters, no output schema, and no annotations, the description is adequate but could be more complete. It does not describe the return format (e.g., array of objects with token contract address and balance) or any limitations (e.g., maximum page size). The addition of pagination details in the description helps, but users still lack clarity on the response structure.
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%: all four parameters have descriptions. The description adds 'for a XIAN address' and 'pagination support', but these are already implied by the schema. The description does not provide additional semantic meaning beyond what the schema already conveys, so the baseline score 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 'List all token balances for a XIAN address with pagination support'. It uses a specific verb (List) and resource (token balances for an address), effectively distinguishing it from sibling tools like 'get_balance' (single balance) and 'get_token_data_by_contract'.
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 alternatives. For example, it does not indicate that for a single token balance one should use 'get_balance' instead, or that this tool is for all tokens. No exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_contract_by_symbolB
Find the contract address for a token by its symbol
| Name | Required | Description | Default |
|---|---|---|---|
| token_symbol | Yes | Token symbol (e.g., 'XIAN') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states the core function but does not mention whether the operation is read-only, what happens if the symbol is not found (e.g., error or null), or any permission requirements. This lack of detail is a significant gap for a tool with no 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 of 11 words with no superfluous content. It is efficient, though it could benefit from additional context without becoming verbose.
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 explain the return value (e.g., a string address) and edge cases (e.g., symbol not found). It fails to do so, leaving the AI agent uncertain about the tool's response. The description is insufficient for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter token_symbol, which already provides an example ('XIAN'). The tool description reinforces the mapping from symbol to contract address but does not add new semantic information beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to find a contract address given a token symbol. It uses a specific verb-resource combination ('Find the contract address') and is easily distinguishable from siblings like get_token_data_by_contract (which requires a contract address) and get_token_balances (which gets 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 usage context is implied by the parameter and sibling tools: use this when you have a symbol and need the contract address. However, no explicit guidance is given about when not to use it or alternatives (e.g., using get_token_data_by_contract when already have the address). The description is minimal, leaving the agent to infer use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_data_by_contractC
Get metadata for a token by its contract address
| Name | Required | Description | Default |
|---|---|---|---|
| token_contract | Yes | Token contract name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only says 'Get metadata' without specifying what metadata includes (e.g., name, symbol, decimals), or any error handling (e.g., behavior if contract not found). This is insufficient for an agent to understand side effects or limitations.
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 very concise (one sentence), which is good for brevity, but it lacks necessary detail. It front-loads the core action but omits important context, making it minimally adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and no annotations, the description should provide more complete context about what 'metadata' entails and any conditions (e.g., token existence). The current description is insufficient for an agent to confidently use this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'token_contract', described as 'Token contract name'. However, the tool description says 'by its contract address', introducing a contradiction. The description adds no additional meaning beyond the schema's parameter description, and the inconsistency undermines clarity.
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 action ('Get') and the resource ('metadata for a token') with the method 'by its contract address'. This distinguishes it from siblings like 'get_token_contract_by_symbol' and 'get_token_balances'. However, there is inconsistency: the tool description mentions 'contract address' while the parameter description says 'Token contract name', causing slight confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The sibling list is extensive but the description does not offer any context about when this tool is preferred, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactionA
Get details of a transaction by its hash
| Name | Required | Description | Default |
|---|---|---|---|
| tx_hash | Yes | Transaction hash |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only says 'Get details', offering no information about read-only nature, authorization needs, rate limits, or what constitutes 'details'. The agent is left uncertain about side effects and output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core purpose without extraneous words. It is appropriately 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?
Given the tool has one parameter, no output schema, and no annotations, the description is minimal and does not explain what 'details' means or the format of the response. It is adequate for a simple tool but lacks completeness in specifying return values or additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'tx_hash' parameter, and its description in the schema is clear ('Transaction hash'). The tool description adds no additional semantics beyond what the schema provides, so baseline score 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 action (get details), the resource (transaction), and the unique identifier (hash). It distinguishes from sibling tools that list transactions by other criteria.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'list_txs_by_contract' or 'list_txs_by_sender'. Implied usage is for when a specific transaction hash is known, but no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_blocksC
List indexed blocks with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of blocks to return | |
| offset | No | Pagination offset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided and description only mentions listing with pagination, lacking disclosure of ordering, rate limits, or effects.
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?
Single concise sentence with no unnecessary words, though additional details could be added without becoming verbose.
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?
No output schema and description is minimal; lacks details about return format, ordering, or what constitutes an 'indexed' block, leaving gaps for agent 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 provides full descriptions for both parameters; description adds 'pagination' context which reinforces the purpose of limit/offset but doesn't add new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'indexed blocks' with 'pagination', distinguishing it from sibling tools like 'get_block' which retrieves a single block.
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 alternatives; no exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsB
List indexed events for a contract and event name
| Name | Required | Description | Default |
|---|---|---|---|
| event | Yes | Event name | |
| limit | No | Maximum number of events to return | |
| offset | No | Pagination offset when after_id is not set | |
| after_id | No | Cursor-based pagination anchor; overrides offset when set | |
| contract | Yes | Contract name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'list indexed events' which implies read-only, but does not explicitly confirm safety, mention what happens if contract/event is not found, or describe any limitations. The term 'indexed' hints at a filter but is not elaborated.
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 of 10 words, highly concise and front-loaded with the verb and resource. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and no annotations, the description lacks depth. It does not explain return format, pagination behavior, or the meaning of 'indexed'. The tool is part of a larger set of similar tools, but no context is given to help the agent choose 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 100%, so the description adds minimal value. It maps the required parameters 'contract' and 'event' to the resource description, but does not explain semantics beyond the schema. Baseline score 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 verb 'list' and the resource 'indexed events for a contract and event name'. It is specific and distinguishes from sibling tools like get_events_for_tx (which focuses on events for a specific transaction) and list_txs_by_contract (which lists transactions, not events).
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 alternatives, nor does it mention prerequisites or exclusions. An agent would have no context about whether this is the correct tool for a given scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shielded_output_tagsC
List indexed shielded output tags for a wallet sync tag
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Tag kind | sync_hint |
| limit | No | Maximum number of tag entries to return | |
| offset | No | Pagination offset when after_id is not set | |
| after_id | No | Cursor-based pagination anchor; overrides offset when set | |
| tag_value | Yes | Wallet sync tag value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries full responsibility for behavioral disclosure. It only states what the tool does without revealing consequences, return format, pagination behavior, or the meaning of 'indexed'. Critical details are omitted.
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 no extraneous information. However, it lacks structure such as separating purpose from usage notes, which could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters with no output schema or annotations, the description is insufficient. It does not explain what the output contains, how to interpret results, or how the parameters control the listing behavior, leaving significant gaps for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter already has a description. The tool description adds minimal value by mentioning 'wallet sync tag' as context, but it does not clarify how parameters like 'kind' or 'after_id' relate to the overall functionality.
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 action ('list') and the resource ('indexed shielded output tags') with context ('for a wallet sync tag'), effectively differentiating it from sibling tools like 'list_shielded_wallet_history' by specifying the object type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, typical use cases, or scenarios where a different tool might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shielded_wallet_historyC
List indexed shielded wallet history for a wallet sync tag
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | History kind | sync_hint |
| limit | No | Maximum number of history entries to return | |
| tag_value | Yes | Wallet sync tag value | |
| after_note_index | No | Cursor for note history pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It only adds the term 'indexed' and 'wallet sync tag' but does not disclose behavioral traits like read-only nature, pagination behavior, or performance implications.
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 overly concise, consisting of a single sentence that lacks necessary detail. It sacrifices completeness for brevity.
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, including pagination and a filter ('kind'), the description fails to explain the purpose of history, how pagination works, or the meaning of 'kind'. The output format is also 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?
With 100% schema coverage, the description adds no extra meaning beyond what the schema already provides. It simply repeats the resource name without clarifying relationships or usage context for 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 verb 'list' and the resource 'shielded wallet history', with additional context 'for a wallet sync tag'. It distinguishes this tool from siblings like 'list_shielded_output_tags' by the specific resource, though it does not explicitly differentiate.
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 alternatives. No context about appropriate scenarios or exclusions is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_txs_by_contractA
List indexed transactions that called a contract with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of transactions to return | |
| offset | No | Pagination offset | |
| contract | Yes | Contract name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions 'indexed transactions', which is a behavioral trait indicating that only transactions that have been indexed are returned. However, it does not disclose other important aspects like whether the operation is read-only, rate limits, or how pagination behaves (e.g., what happens at the end of the list). Annotations are absent, so the description partially compensates but remains incomplete.
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 is concise and front-loaded. It efficiently communicates the core purpose without extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and many sibling tools, the description lacks detail on return format, error cases, or typical usage scenarios. It is adequate for a simple list operation but could provide more context to assist the agent in understanding the scope and limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to explain parameters. The description adds 'with pagination' which is already implied by the limit and offset parameters. No additional meaning is provided beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the object (indexed transactions), the filter (called a contract), and the feature (pagination). It distinguishes this tool from siblings like list_txs_by_sender or list_txs_for_block by specifying the 'by contract' context.
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 alternatives. With many sibling tools (e.g., list_txs_by_sender, get_transaction, etc.), the agent is left without context on when this tool is appropriate or preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_txs_by_senderB
List indexed transactions submitted by a sender with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of transactions to return | |
| offset | No | Pagination offset | |
| sender | Yes | Sender address or public key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but fails to disclose behavioral traits like ordering, whether only confirmed transactions are returned, or if there are any rate limits. The term 'indexed' is vague and not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the essential information. It could be slightly more detailed without becoming verbose, but 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?
There is no output schema, and the description does not explain what fields are returned (e.g., full transaction objects or just IDs) or the default ordering. For a list tool with no output schema, this is insufficient for full 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 100%, so the parameters are documented in the schema. The description adds no extra meaning beyond mentioning pagination, so it meets the baseline of 3 without adding 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 clearly states the verb 'list', the resource 'indexed transactions', and the filter 'by a sender', with mention of pagination. It distinguishes itself from sibling tools like 'list_txs_by_contract' and 'list_txs_for_block' which filter by different criteria.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'get_indexed_tx' for a single transaction or 'list_txs_by_contract' for transactions by contract. The description lacks contextual usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_txs_for_blockB
List indexed transactions for a block height or block hash
| Name | Required | Description | Default |
|---|---|---|---|
| block_ref | Yes | Block height or block hash |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The tool is clearly non-destructive (listing data). No annotations are provided, so the description should compensate with more details like pagination, order, or limits, which are missing. Acceptable but minimal.
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, clear sentence with no wasted words. 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?
Given the simple tool with one parameter and no output schema, the description is adequate but could explain what 'indexed transactions' means or how results are returned. More context would improve usability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter 'block_ref' is fully described in the schema. The description does not add additional meaning beyond what the schema provides, meeting the baseline.
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 transactions by block reference. The verb 'List' and resource 'transactions' are specific. However, it could be more precise about 'indexed' meaning.
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 alternatives like list_txs_by_contract or list_txs_by_sender. The description does not mention when-not or provide contextual recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_transactionA
Simulate a transaction to estimate chi without executing it
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | No | Function arguments | |
| address | Yes | Sender address for simulation | |
| contract | Yes | Contract name | |
| function | Yes | Function name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates no execution occurs, but omits details on return values, state impact, prerequisites, or limitations. Given no annotations, this provides only basic transparency.
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 sentence conveys the core purpose without extraneous words. It is optimally concise and front-loaded.
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 4-parameter tool with no output schema and no annotations, the description is somewhat incomplete. It doesn't explain 'chi', return value, or parameter usage beyond defaults, but the schema covers basic semantics.
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?
All parameters have schema descriptions, so baseline is 3. The tool description adds no extra context beyond the schema, meeting but not exceeding expectations.
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 simulates a transaction to estimate chi, distinguishing it from sibling tools which are all read-only queries. The action and intent are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like executing a real transaction or using other estimation methods. The description lacks context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_signatureB
Verify a message signature
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Address that allegedly signed the message | |
| message | Yes | Original message | |
| signature | Yes | Signature to verify |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behaviors like read-only nature, return value on success/failure, or required permissions; instead it only states the action.
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 sentence that efficiently conveys the tool's purpose with no superfluous 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?
No output schema or return value description; for a verification tool, the agent needs to know if it returns a boolean, signature object, or error 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 100% with descriptions for each parameter; the tool description adds no extra meaning beyond the schema, yielding a baseline score.
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 'Verify a message signature' uses a specific verb and resource, clearly distinguishing it from sibling tools like get_transaction or list_blocks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as get_transaction for checking transaction signatures, or prerequisites like having the correct message format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clear distinct purposes, but a few like get_transaction and get_indexed_tx overlap in retrieving transaction details by hash, and get_events_for_tx vs list_events could cause confusion. Overall, the descriptions help disambiguate.
All tools follow a consistent verb_noun pattern in snake_case. DEX-specific tools are prefixed with 'dex_', while others start with verbs like get, list, simulate, verify. No mixed conventions.
At 35 tools, the set is quite large but each tool serves a distinct purpose in the blockchain/DEX domain. It is above the typical 3-15 range, but not extremely bloated; some redundancy exists (e.g., get_transaction and get_indexed_tx).
The server covers a broad range of blockchain queries, DEX operations, contract interactions, and shielded wallet history. Missing direct transaction submission, but simulation and plans are provided. Minor gaps in lifecycle coverage.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Trade 16 crypto exchanges + MetaTrader 5 from your AI assistant via one MCP connection.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Provide AI agents and automation tools with contextual access to blockchain data including balance…
Native Solana staking for AI agents. 26 MCP tools, one-shot signing, webhooks.
Related MCP Servers
AlicenseCqualityCmaintenanceAn MCP server providing unified access to blockchain operations, bridging, swapping, and crypto trading strategies for AI agents.37178GPL 3.0- AlicenseNot gradedqualityNot gradedmaintenanceEnables seamless interaction with the Hyperion blockchain, including wallet management, token transactions, ERC20 token deployment, and smart contract operations through standardized MCP endpoints.
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to resolve smart contract ABIs, read, encode, simulate, and prepare transactions across multiple blockchains via a REST API or MCP server, with no signing required.
- AlicenseNot gradedqualityCmaintenanceEnables AI-powered chat and DeFi operations (swap, transfer) via MCP-compliant tools, integrating with LLMs for onchain actions.8MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xian-technology/xian-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server