VeChain MCP Server
OfficialOptional integration with Discourse forum to automatically fetch discussion content, analyze sentiment, and provide direct URLs to view discussions.
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., "@VeChain MCP ServerSearch VeChain documentation for VTHO"
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.
VeChain MCP Server
A Model Context Protocol (MCP) server that provides AI assistants with access to VeChain ecosystem documentation and blockchain data. This server enables seamless integration of VeChain capabilities into AI workflows through the MCP standard.
What is MCP?
The Model Context Protocol (MCP) is an open standard that enables AI assistants to securely access external data and tools. This server implements MCP to provide VeChain-specific capabilities to any MCP-compatible client.
Related MCP server: VeChain MCP Server
Features
Unified Documentation Search: Search across multiple VeChain ecosystem documentation resources
Blockchain Data Access: Query VeChain Thor blockchain data (blocks, transactions, accounts)
Event Decoding: Decode raw blockchain events into human-readable format
Multi-Network Support: Connect to mainnet, testnet, or solo networks
Supported Documentation Sources
VeChain Documentation - Core VeChain blockchain documentation
VeChain Kit - VeChain development toolkit documentation
VeBetterDao - Decentralized governance platform documentation
VeVote - Voting platform documentation
Stargate - VeChain infrastructure documentation
Prerequisites
Node.js 20.18.1 or higher (required for running the server)
An MCP-compatible client such as:
Claude Desktop (macOS/Windows)
Cursor (code editor with MCP support)
Claude Code (CLI tool)
Available Tools
Documentation Search Tools
searchDocsVechain- Search VeChain documentationsearchDocsVechainKit- Search VeChain Kit documentationsearchDocsVebetterDao- Search VeBetterDao documentationsearchDocsVevote- Search VeVote documentationsearchDocsStargate- Search Stargate documentation
Thor Blockchain Tools
thorGetBlock- Get block informationthorGetTransaction- Get transaction detailsthorGetAccount- Get account informationthorDecodeEvent- Decode raw blockchain events
Token & NFT Tools
getTokenBalances- Get token balances for an accountgetTokenFiatPrice- Get fiat price for tokensgetTokenRegistry- Get token registry informationgetNFTs- Get NFTs owned by an accountgetNFTContracts- Get NFT contract information
B3TR & VeBetterDAO Tools
getB3TRGlobalOverview- Get B3TR global statisticsgetB3TRAppsLeaderboard- Get leaderboard of B3TR appsgetB3TRProposalsResults- Get B3TR proposal voting resultsgetB3TRProposalComments- Get on-chain voting commentsgetCurrentRound- Get current VeBetterDAO round infogetGMNFTStatus- Check GM NFT status for an account
Stargate Staking Tools
getStargateTotalVetStaked- Get total VET stakedgetStargateTokenRewards- Get staking rewardsgetValidators- Get validator information
Transaction & Transfer Tools
getTransactions- Get transactions for an accountgetTransfersOfAccount- Get token transfersgetHistoryOfAccount- Get account history
...and many more! Use the MCP inspector or ask your AI assistant to list all available tools.
Quick Start
1. Install in Your MCP Client
The easiest way to use the VeChain MCP server is to install it directly from npm using npx. This method automatically downloads and runs the latest version without requiring local setup.
For Claude Desktop
Locate your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add the VeChain server configuration:
{
"mcpServers": {
"vechain": {
"command": "npx",
"args": ["-y", "@vechain/mcp-server@latest"],
"env": {
"VECHAIN_NETWORK": "mainnet"
}
}
}
}Restart Claude Desktop
For Cursor
Open Cursor Settings:
Press
Cmd/Ctrl + Shift + PType "Open MCP Settings" and select it
Add the VeChain server configuration (same JSON as above)
Restart Cursor
For Claude Code
Locate your Claude Code configuration file:
Create or edit
~/.claude/mcp.json
Add the VeChain server configuration (same JSON as above)
Restart Claude Code
2. Verify Installation
Once your MCP client restarts, you should see the VeChain MCP tools available. You can test by asking your AI assistant:
"Search VeChain documentation for VTHO"
"Get the latest block on VeChain"
"What is my VeChain account balance for address 0x..."
Configuration
Network Selection
Set the VECHAIN_NETWORK environment variable to connect to different VeChain networks:
mainnet- VeChain MainNet (default, production network)testnet- VeChain TestNet (for testing and development)solo- Local solo network (for local development)
Example configuration for testnet:
{
"mcpServers": {
"vechain": {
"command": "npx",
"args": ["-y", "@vechain/mcp-server"],
"env": {
"VECHAIN_NETWORK": "testnet"
}
}
}
}Run with Docker
Prerequisite: Docker 20+.
Pull the multi‑arch image (amd64/arm64):
docker pull ghcr.io/vechain/vechain-mcp-server:latestRun the HTTP server:
docker run -d --rm \
-p 4000:4000 \
-e VECHAIN_NETWORK=mainnet \ # mainnet | testnet | solo
-e MCP_API_KEY=replace-me \ # bearer token clients must send on /mcp
--name vechain-mcp \
ghcr.io/vechain/vechain-mcp-server:latestFor local experimentation you can set MCP_AUTH_DISABLED=true instead
of MCP_API_KEY; the server then accepts unauthenticated requests on
/mcp. The server refuses to start with this flag when
NODE_ENV=production.
Verify:
curl -fsS http://localhost:4000/healthList MCP tools (optional check):
curl -sS -m 10 -X POST http://localhost:4000/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'Authorization: Bearer replace-me' \
-d '{"jsonrpc":"2.0","id":"1","method":"tools/list"}'Notes:
MCP endpoint:
POST /mcp(Content-Type: application/json, Accept: application/json, text/event-stream).Auth:
POST /mcp,GET /toolsandPOST /tools/callrequireAuthorization: Bearer <MCP_API_KEY>.GET /healthandGET /readyare unauthenticated so a load balancer can probe them.
Local Development Setup
If you want to contribute to the VeChain MCP server or test local changes, follow these instructions.
Prerequisites for Development
Node.js 20.18.1 or higher
npm or yarn package manager
Git
Setup Steps
Clone the repository:
git clone https://github.com/vechain/vechain-mcp-server.git
cd vechain-mcp-serverInstall dependencies:
npm installBuild the project:
npm run buildDevelopment Modes
Option 1: STDIO Mode (Production-like)
Use this mode to test the server as it would run in production (via stdin/stdout).
Build the project (if not already done):
npm run buildConfigure your MCP client to use the local build:
{
"mcpServers": {
"vechain-local": {
"command": "node",
"args": ["/absolute/path/to/vechain-mcp-server/dist/stdio.js"],
"env": {
"VECHAIN_NETWORK": "testnet"
}
}
}
}Replace /absolute/path/to/vechain-mcp-server with the actual path to your cloned repository.
Restart your MCP client
Note: For Claude Code and Cursor, the local configuration is already set up in
.claude/mcp.jsonand.cursor/mcp.jsonrespectively.
Option 2: HTTP Mode with Hot Reload (Active Development)
Use this mode when actively developing - it automatically reloads on file changes.
Start the development server:
npm run devThis starts an HTTP server on http://localhost:4000/mcp with file watching enabled.
Configure your MCP client to connect via HTTP:
{
"mcpServers": {
"vechain-local-dev": {
"url": "http://localhost:4000/mcp"
}
}
}Restart your MCP client
Now any changes you make to the source code will automatically reload the server.
Note: This HTTP mode currently works with Cursor and other clients that support HTTP transport. Claude Desktop may have limited support for HTTP-based MCP servers.
Testing Your Changes
Using MCP Inspector
The MCP Inspector provides a web UI to test your MCP tools interactively:
npm run inspectThis opens a browser interface where you can test individual tools and see their responses.
Discourse Forum Integration (Optional)
Forum tools are OPTIONAL and work without the Discourse MCP server by providing forum URLs for manual viewing. To enable automated forum data fetching:
# Install globally
npm install -g @discourse/mcp@latest
# Run in HTTP transport mode with site pre-configured (recommended)
npx -y @discourse/mcp@latest --transport http --site https://vechain.discourse.group
# Or if installed globally
discourse-mcp --transport http --site https://vechain.discourse.groupImportant: The --transport http flag is required to run Discourse MCP as an HTTP server that the VeBetterDAO MCP can connect to as an upstream server. Without this flag, it will run in STDIO mode (designed for direct AI client integration like Claude Desktop).
The Discourse server runs on http://localhost:3000 by default. The VeChain MCP will automatically connect to it if running.
Without Discourse MCP:
Forum tools will provide direct URLs to view discussions manually
Example:
https://vechain.discourse.group/t/proposal-name/559
With Discourse MCP (HTTP mode):
Forum tools will fetch full discussion content automatically
Analyze sentiment and extract key points programmatically
Quick Start Commands:
# Terminal 1: Start Discourse MCP (with site pre-configured)
npx -y @discourse/mcp@latest --transport http --site https://vechain.discourse.group
# Terminal 2: Start VeBetterDAO MCP
npm run devRunning Automated Tests
Build and start the server:
npm run build
npm run startIn a separate terminal, run the test suite:
npm run testCode Quality
Format and lint your code before committing:
npm run format # Format code with Biome
npm run lint # Lint and fix issues with BiomeReleases
Releases are driven by git tags. Pushing a tag triggers a single
pipeline (.github/workflows/publish-release.yml) that:
Publishes the npm package to npmjs.org and to GitHub Packages.
Builds a multi-arch Docker image and pushes it to the dev and prod container registries.
Rolls the new image out to the dev environment automatically.
Pauses on a manual approval step before rolling out to prod (enforced by GitHub environment protection rules).
Infrastructure for the runtime service lives in infra/ as
a CloudFormation template; see that directory's README for details on
how to deploy or update the stack shape.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Available Tools
76 toolsbuildContractTransactionBuild a multi-clause transaction ready for the wallet to signADestructiveIdempotent
Build (but never sign or broadcast) a multi-clause VeChainThor transaction. Each clause is { name, method, args, valueWei?, comment?, address? }; for erc20 / erc721 an explicit address is mandatory. Returns the array of { to, value, data, comment? } clauses ready to be passed to VeWorld, the dApp Kit or vechain-kit for signing. By default every clause is simulated via Thor multicall first (using a generic signer): reverts are surfaced in simulation.results so the agent can fix the request before asking the user to sign. The server NEVER holds private keys and NEVER broadcasts.
| Name | Required | Description | Default |
|---|---|---|---|
| clauses | Yes | Array of clauses to bundle into a single multi-clause transaction. | |
| simulate | No | When true (default) every clause is simulated via Thor multicall to surface reverts before signing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses simulation behavior via multicall by default, which surfaces reverts before signing. It also clarifies the server's limitations (no private keys, no broadcasting). This adds significant context beyond the annotations, which already indicate non-read-only and idempotent.
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 paragraph that is informative and not overly verbose. It could be slightly more structured with line breaks, but it is concise and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multi-clause transaction building with optional simulation) and the presence of an output schema, the description adequately covers purpose, input format, behavior, and important caveats (no signing/broadcasting). It leaves no major 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?
The input schema has 100% coverage, but the description enhances understanding by explaining the clause structure, mandatory address for erc20/erc721, and the meaning of each field. It also clarifies the args types and default value for valueWei.
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 builds a multi-clause VeChainThor transaction for signing, distinguishing it from read-only tools like callContract. It specifies the input (clauses array) and output (ready-to-sign clauses), and explicitly states it never signs or broadcasts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use (building multi-clause transactions for signing) and what the tool does not do (never holds keys or broadcasts). However, it does not explicitly mention alternatives or when not to use this tool, though the sibling list suggests callContract for single calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
callContractRead state from one or many contracts via a single multicallARead-onlyIdempotent
Execute one or more read-only contract calls (view / pure methods) in a single multicall round-trip. Each clause is { name, method, args, address? } where name is a registry contract from listKnownContracts. Pass address only to override the registry default or when calling erc20 / erc721 on an arbitrary token. Returns one result per clause with success, the decoded primary value and the full decoded array. bigint values are stringified. Use this instead of one call per round-trip whenever you need multiple values.
| Name | Required | Description | Default |
|---|---|---|---|
| clauses | Yes | Array of read-only calls to execute in a single multicall. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context, such as the clause format, address override behavior for erc20/erc721, return format (success, primary value, decoded array), and bigint stringification. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, then providing detailed breakdown. It is appropriately sized and each sentence adds value. Slight room for improvement in structuring the details, but overall concise and effective.
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 (one parameter with nested objects, many sibling tools), the description sufficiently explains usage, conventions, and output format. The presence of an output schema reduces the burden for return value documentation, but the description still adds clarity on return structure. It is complete enough for correct tool 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 100% with descriptions for each field. The description goes beyond by explaining the purpose of each clause field, the special meaning of 'address', and the return structure. This adds meaning beyond the schema, such as the fact that bigint values are stringified.
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 executes read-only contract calls in a single multicall, which is distinct from sibling tools that perform individual contract reads. The verb 'execute' and resource 'read-only contract calls' are specific, and the title emphasizes multicall aggregation, distinguishing it from single-call tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool 'instead of one call per round-trip whenever you need multiple values.' This gives clear context for when to prefer it. It does not explicitly list when not to use it, but the guidance is sufficient given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAccountsTotalsAccounts: totals/time-seriesARead-onlyIdempotent
Retrieve total unique VeChain accounts by timeframe via /api/v1/accounts/totals. Provide timeFrame (DAY, WEEK, MONTH, YEAR) to get per-interval totals; omit timeFrame to get cumulative ALL. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| timeFrame | No | DAY, WEEK, MONTH, YEAR, ALL; omitted defaults to ALL |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, and destructive hints. Description adds the two modes (per-interval vs cumulative) and pagination support, which are useful behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two well-structured sentences that front-load the main action and resource, with all information earning 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?
Given the tool's simplicity, the description, schema, annotations, and output schema together provide a complete picture. No missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage, so baseline 3. Description adds meaning by explaining the timeFrame parameter's two modes and mentions pagination, providing marginal extra 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?
Clearly states the tool retrieves total unique VeChain accounts by timeframe, distinguishing between providing timeFrame for per-interval totals vs omitting for cumulative. References specific API endpoint.
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?
Describes when to provide timeFrame vs omit, but no explicit alternatives or when-not-to-use. Context signals are clear and sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAppHubAppsApp Hub: official apps on VeChainARead-onlyIdempotent
List official apps from VeChain App Hub. Supports filtering by category, tag, VeWorld support and free-text search. Always return app URL when available.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter by a single tag (case-insensitive contains) | |
| query | No | Free-text search in name/desc (case-insensitive contains) | |
| category | No | Filter by category (e.g., defi, utilities, games, marketplaces, collectibles) | |
| isVeWorldSupported | No | Filter by VeWorld support flag |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds a behavioral guarantee: 'Always return app URL when available', which provides specific context beyond annotations. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loading the primary action and key filtering capabilities, then adding a promise about return values. Every sentence earns its place with no wasted 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?
Given the tool's complexity (4 optional parameters, no required parameters, output schema exists), the description covers the core functionality and return behavior. It adequately sets expectations for a list endpoint without requiring details about pagination or result limits, which are assumed to be in the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all four parameters. The description paraphrases these filters but does not add significant new meaning beyond the schema. Baseline 3 is appropriate since schema already conveys parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the specific resource 'official apps from VeChain App Hub', and enumerates supported filters (category, tag, VeWorld support, free-text search). This distinguishes it from sibling tools like getVeBetterDaoApps which lists different apps.
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 indicates what the tool does but does not provide guidance on when to use it versus alternatives (e.g., when not to use it, or comparisons with similar tools). There is clear context for usage but no exclusions or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRActionsForAppB3TR: Actions for an appARead-onlyIdempotent
Fetch B3TR actions for a VeBetterDAO app via /api/v1/b3tr/actions/apps/{appId}. Requires appId (if coming from app-hub from name or description, use veBetterDaoId).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| after | No | Return actions after (inclusive) this Unix timestamp in seconds (e.g. 1754179200 for 2025-08-03T00:00:00Z). Use seconds, NOT milliseconds. | |
| appId | Yes | veBetterDaoId of the app (32-byte hex, required). If the user gives a human-readable app name (e.g. "Mugshot"), call getAppHubApps first to resolve the veBetterDaoId. | |
| before | No | Return actions before (inclusive) this Unix timestamp in seconds (e.g. 1754265600 for 2025-08-04T00:00:00Z). Use seconds, NOT milliseconds. | |
| direction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List response for B3TR actions for an app |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the tool is clearly safe and idempotent. The description adds the API endpoint but no additional behavioral traits (e.g., rate limits, response structure). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no unnecessary words. The first sentence states purpose and endpoint; the second provides critical usage guidance. It is front-loaded and compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters including pagination controls (page, size, after, before, direction). The description covers the required appId resolution but omits guidance on how to use pagination or filtering. Given the output schema exists, return values need not be explained, but the pagination parameters are not discussed, leaving a gap for a complete usage 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 about 67% (descriptions for appId, after, before, direction; page and size lack descriptions). The description amplifies the appId parameter by explaining how to resolve it from a human-readable name, adding value beyond the schema. However, it does not compensate for the missing descriptions on page and size, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches B3TR actions for a VeBetterDAO app via a specific API endpoint. It distinguishes itself from sibling tools like getB3TRActionsForUser by focusing on a single app's actions. The mention of resolving appId from app-hub clarifies its scope.
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 states that appId is required and provides guidance: if a human-readable app name is given, call getAppHubApps first. This is a clear usage instruction. However, it does not explicitly list when not to use this tool in favor of alternatives, which would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRActionsForUserB3TR: Actions for a userARead-onlyIdempotent
Get B3TR actions for a user and the impacts of those actions via /api/v1/b3tr/actions/users/{wallet}. Optionally filter by appId and time range.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| after | No | Return records after this Unix timestamp in seconds (e.g. 1754179200 for 2025-08-03T00:00:00Z). Use seconds, NOT milliseconds. | |
| appId | No | Optional B3TR appId (veBetterDaoId — 32-byte hex) to filter interactions. If the user gives a human-readable app name (e.g. "Mugshot"), resolve it via getAppHubApps first and pass the resulting veBetterDaoId here. | |
| before | No | Return records before this Unix timestamp in seconds (e.g. 1754265600 for 2025-08-04T00:00:00Z). Use seconds, NOT milliseconds. | |
| wallet | Yes | User wallet address (0x...) or VNS name (e.g. foo.vet) | |
| direction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List response for B3TR actions for an app |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint hints. The description adds context about returning impacts and optional filtering but does not contradict annotations or provide additional behavioral traits beyond what annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise and to the point. It front-loads the core purpose and endpoint. Minor improvement could be adding structure for clarity, but overall 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?
The description covers the main purpose and optional filters. With output schema present, return values are not needed. However, it omits pagination parameters (page, size) and direction, which reduces completeness for a 7-parameter 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 57%, with descriptions for after, before, appId, wallet. The description does not add new parameter semantics beyond the schema; it only restates optional filtering. Given partial schema coverage, a 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 'Get', the resource 'B3TR actions for a user', and the endpoint path. It distinguishes from sibling tools like getB3TRActionsForApp by specifying 'for a user'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions optional filters but does not explicitly state when to use this tool over alternatives like getB3TRActionsForApp or getB3TRUserOverview. No when-not or prerequisite guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRAppOverviewB3TR: App overview (totals)ARead-onlyIdempotent
Get APP overview for a specific app listed on veBetterDao via /api/v1/b3tr/actions/apps/{appId}/overview. Returns total B3TR rewards, number of rewarded actions, sustainability impact totals, global rankings for a specific app. appId must be the veBetterDaoId (32-byte hex, e.g. 0x2fc30c...). If the user gives an app name like "Mugshot", call getAppHubApps first to resolve the veBetterDaoId — never pass an app name directly here. Optionally filter by roundId OR date (yyyy-MM-dd UTC), but not both — they are mutually exclusive.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional date (UTC) to filter by, format yyyy-MM-dd. Mutually exclusive with roundId. | |
| appId | Yes | B3TR appId (a.k.a. veBetterDaoId) — 32-byte hex. If the user gives a human-readable app name, look it up via getAppHubApps first and pass the resulting veBetterDaoId here. | |
| roundId | No | Optional round id to filter by. Mutually exclusive with date. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | B3TR app overview (totals and rankings) |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, and non-destructive behavior. The description adds details about the data returned (rewards, actions, sustainability, rankings) and the filtering constraints (mutually exclusive date/roundId). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences efficiently convey purpose, endpoint, return values, and critical usage notes (bolded warning). No unnecessary words; front-loaded with key 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 the presence of an output schema (context shows 'Has output schema: true'), the description sufficiently covers what the tool returns. Annotations cover safety. Sibling list shows this is one of many B3TR tools, and the description distinguishes it well.
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%, but the description adds significant context beyond schema, especially for appId: clarifying it must be a 32-byte hex veBetterDaoId and instructing to use getAppHubApps for name resolution. This is not present in the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets an APP overview for a specific app listed on veBetterDao, specifying the endpoint and listing returned data (totals, rewards, rankings). It distinguishes from siblings like getB3TRAppsLeaderboard, which returns a leaderboard, and getB3TRActionsForApp, which returns actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: for a specific app overview. Provides critical guidance on appId format (veBetterDaoId, not app name) and advises to call getAppHubApps first if user provides a name. Also notes mutual exclusivity of date and roundId filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRAppsLeaderboardB3TR: Apps leaderboardARead-onlyIdempotent
Get app B3TR action leaderboard via /api/v1/b3tr/actions/leaderboards/apps. Optionally filter by roundId OR date (yyyy-MM-dd UTC) but not both — they are mutually exclusive. Sort by totalRewardAmount or actionsRewarded; supports cursor pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional date (UTC) to filter by, format yyyy-MM-dd. Mutually exclusive with roundId. | |
| size | No | The results page size | |
| cursor | No | Pagination cursor returned by a previous request | |
| sortBy | No | Sort by totalRewardAmount or actionsRewarded | |
| roundId | No | Optional round id to filter by. Mutually exclusive with date. | |
| direction | No | The sort direction |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List response for apps leaderboard |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already indicate read-only and idempotent behavior, the description adds valuable context such as mutual exclusivity of filters, supported sort fields, and cursor pagination, which are not fully captured by the schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no redundancy, directly stating purpose, usage constraints, and key features. Every sentence serves a clear function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only leaderboard tool with an output schema, the description covers all essential aspects: resource, endpoint, optional filters with mutual exclusivity, sort options, and pagination. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions, but the description adds the key constraint of mutual exclusivity between date and roundId, as well as clarifying pagination and sorting behavior, going 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 action ('Get') and the specific resource ('app B3TR action leaderboard'), distinguishing it from sibling tools like getB3TRAppUsersLeaderboard and getB3TRUsersLeaderboard by focusing on apps rather than users.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage constraints (mutually exclusive roundId and date filters) and pagination details, but does not explicitly guide when to use this tool versus alternatives like getB3TRGlobalOverview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRAppUsersLeaderboardB3TR: App users leaderboardARead-onlyIdempotent
Get user B3TR action leaderboard for a given app via /api/v1/b3tr/actions/leaderboards/apps/{appId}. Optionally filter by roundId or date; sort by totalRewardAmount or actionsRewarded; supports cursor pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional date (UTC) to filter by, format yyyy-MM-dd. Mutually exclusive with roundId. | |
| size | No | The results page size | |
| appId | Yes | App ID (veBetterDaoId — 32-byte hex). If the user gives an app name, resolve it via getAppHubApps first. | |
| cursor | No | Pagination cursor returned by a previous request | |
| sortBy | No | Sort by totalRewardAmount or actionsRewarded | |
| roundId | No | Optional round id to filter by. Mutually exclusive with date. | |
| direction | No | The sort direction |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List response for app users leaderboard |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's behavioral additions (pagination, mutual exclusivity) are helpful but not critical. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 27 words, front-loaded with main action. No redundant or trivial 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 the presence of an output schema, the description adequately covers pagination, filters, and endpoint. It provides sufficient context for a read-only leaderboard 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% and the description adds extra context: mutual exclusivity between date and roundId, and a resolution hint for appId (resolve via getAppHubApps). Not all parameters are described, but the added info is valuable.
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 specific resource 'user B3TR action leaderboard for a given app', differentiating from sibling tools like getB3TRUsersLeaderboard (global) or getB3TRAppsLeaderboard (app-level). The API endpoint is explicitly mentioned.
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 lists optional filters and pagination but does not explicitly state when to use this vs alternatives (e.g., getB3TRUsersLeaderboard for global leaderboard). Usage context is implied through the app-specific scope but not directly clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRGlobalOverviewB3TR: Global overview (totals)ARead-onlyIdempotent
Get global B3TR action overview via /api/v1/b3tr/actions/global/overview. Optionally filter by roundId OR date (yyyy-MM-dd UTC), but not both — they are mutually exclusive.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional date (UTC) to filter by, format yyyy-MM-dd. Mutually exclusive with roundId. | |
| roundId | No | Optional round id to filter by. Mutually exclusive with date. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Global B3TR action overview (totals) |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds the mutual exclusivity constraint and API endpoint, providing some extra context but not extensive behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff, front-loading the tool's purpose immediately. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with two optional parameters and an output schema, the description adequately covers purpose, filtering options, and constraints. No additional details 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?
Input schema has 100% coverage with both parameters described. The description adds the critical mutual exclusivity constraint and date format, going beyond the schema definitions.
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 a global B3TR action overview, specifying the API endpoint. It distinguishes from sibling tools like getB3TRAppOverview or getB3TRActionsForApp by focusing on the global scope.
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 states that roundId and date are mutually exclusive and provides the date format, offering clear guidance on parameter usage. It does not cover when-not-to-use but given the simplicity this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRProposalCommentsB3TR: Proposal commentsARead-onlyIdempotent
Get on-chain voting comments/reasons for a specific B3TR proposal via /api/v1/b3tr/proposals/{proposalId}/comments. Shows comments from users who actually voted on-chain with their voting power and weight. NOTE: This shows on-chain voter comments. For broader community discussion, extract the Discourse forum link from the proposal's IPFS description. If getDiscourseTopic is available, use it to fetch the full forum thread; if not available (optional feature), provide the forum URL for manual viewing. Forum discussions often have more detailed debate and sentiment from the wider community before/during voting. Supports filtering by support type (FOR, AGAINST, ABSTAIN).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (default: 0) | |
| size | No | Results per page (default: 20) | |
| support | No | Filter by support type (FOR, AGAINST, or ABSTAIN) | |
| direction | No | Sort direction (default: DESC) | |
| proposalId | Yes | Proposal ID to fetch comments for |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List response for B3TR proposal comments |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a safe, read-only operation. Description adds value by clarifying that comments are only from on-chain voters and that filtering by support type is supported. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise but includes a valuable note about Discourse alternative. Could be slightly more structured, but every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, description need not explain return values. Covers purpose, usage, limitations, and filtering options. 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?
Schema coverage is 100%, so parameters are already well-documented. Description adds minimal extra meaning beyond the schema, only echoing the filter by support type. At baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets on-chain voting comments/reasons for a specific B3TR proposal, specifying the API endpoint and distinguishing from broader community discussion. Verb 'get' and resource 'on-chain proposal comments' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: use for on-chain voter comments, and for broader community discussion, use Discourse tools. Mentions getDiscourseTopic as alternative and when to use it, along with providing forum URL for manual viewing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRProposalsResultsB3TR: Proposal resultsARead-onlyIdempotent
Get B3TR proposal results via /api/v2/b3tr/proposals/results. IMPORTANT: If user provides a specific proposal ID, pass it as the proposalId parameter to query directly for that single proposal - DO NOT fetch all proposals and filter! Returns proposals with voting results and IPFS description CIDs. WORKFLOW: 1) Use this tool with proposalId parameter if specific proposal requested, or browse all proposals if general query, 2) Use getIPFSContent with the description CID to get full proposal details, 3) Extract Discourse forum link from description (format: vechain.discourse.group/t/topic-name/TOPIC_ID), 4) If getDiscourseTopic is available, use it with the topic ID to fetch community discussion; if not available (optional feature), provide the forum URL for manual viewing, 5) Use getB3TRProposalComments to get on-chain voting comments. This gives complete view: proposal data + forum discussion (via API or URL) + on-chain voter comments.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (default: 0) | |
| size | No | Results per page (default: 20) | |
| states | No | Filter by proposal states (optional) | |
| direction | No | Sort direction (default: DESC) | |
| proposalId | No | Optional: Filter by specific proposal ID. When provided, returns only the matching proposal. Use this to query a specific proposal directly instead of fetching all proposals. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List response for B3TR proposals results |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint true. The description adds behavioral context: returns proposals with voting results and CIDs, requires further steps to get full data, and that using proposalId avoids unnecessary fetching. No contradictions, and it provides useful workflow info beyond 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 longer than necessary but well-structured with bold emphasis and a numbered list. Every sentence adds value, and the front-loading of the main purpose and critical usage note makes it effective. Slight redundancy between the IMPORTANT note and workflow step 1, but overall acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete in context: explains what the tool returns, how to use it for specific vs general queries, and provides a full workflow involving other tools for a complete view. With annotations covering safety and output schema present, the description covers all necessary aspects.
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 schema already documents all parameters. The description adds a usage note about proposalId but no additional semantic details for other parameters. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets B3TR proposal results, specifying the API endpoint and the data returned (voting results and IPFS description CIDs). It distinguishes itself from sibling tools through the integrated workflow that references getIPFSContent, getDiscourseTopic, and getB3TRProposalComments, making its role in the broader process 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?
Provides explicit guidance: use proposalId for specific proposals (with caution not to fetch all), and a numbered workflow detailing steps from this tool through related tools. It clearly states when to use this tool versus alternatives, including when to browse all proposals or use other tools for full details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRUserAppOverviewB3TR: User app overview (totals)ARead-onlyIdempotent
Get a users overview for a specific app on veBetterDao via /api/v1/b3tr/actions/users/{wallet}/app/{appId}/overview. Returns total B3TR rewards, number of rewarded actions, sustainability impact totals, global rankings for a specific app. appId must be the veBetterDaoId (32-byte hex). If the user gives an app name, call getAppHubApps first to resolve the veBetterDaoId. Optionally filter by roundId OR date (yyyy-MM-dd UTC), but not both — they are mutually exclusive.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional date (UTC) to filter by, format yyyy-MM-dd. Mutually exclusive with roundId. | |
| appId | Yes | B3TR appId (a.k.a. veBetterDaoId) — 32-byte hex. If the user gives a human-readable app name, look it up via getAppHubApps first and pass the resulting veBetterDaoId here. | |
| wallet | Yes | User wallet address (path parameter) | |
| roundId | No | Optional round id to filter by. Mutually exclusive with date. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | B3TR user overview for a specific app (totals and rankings) |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. Description adds key behavioral details: the API endpoint, mutual exclusivity of filters, and that appId must be a 32-byte hex. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise single paragraph that front-loads the purpose. All sentences add value (API path, return summary, appId resolution hint, filter constraints). No wasted words, though could be slightly tighter.
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 output schema exists, description does not need to explain return values. It sufficiently covers input constraints (appId format, filter mutual exclusivity) and provides necessary context for correct usage. 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?
Schema already covers all 4 parameters with descriptions, achieving 100% coverage. Description reinforces the appId format and mutual exclusivity of date/roundId, but adds no new parameter semantics beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get a users overview for a specific app' and lists exact return fields (B3TR rewards, rewarded actions, sustainability impact totals, global rankings). Distinct from sibling tools like getB3TRAppOverview (app-level) and getB3TRUserOverview (user-level without app specificity).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to resolve app name to veBetterDaoId via getAppHubApps, and warns that roundId and date are mutually exclusive. Does not explicitly state when not to use, but context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRUserDailySummariesB3TR: User daily summariesARead-onlyIdempotent
Get daily action summaries for a specific user within a date range via /api/v1/b3tr/actions/users/{wallet}/daily-summaries. Returns total B3TR rewards, number of rewarded actions, sustainability impact totals for each day. Dates must be UTC in yyyy-MM-dd.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| wallet | Yes | User wallet address (0x...) or VNS name | |
| endDate | Yes | ||
| direction | No | ||
| startDate | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List response for B3TR user daily summaries |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that it returns total B3TR rewards, number of rewarded actions, and sustainability impact totals, plus the date format requirement. This enriches behavioral understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first sentence states the purpose and endpoint, the second details return values and a format constraint. No unnecessary words, well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return values. However, it omits information about pagination and sorting parameters, and lacks usage context. It covers core functionality but is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, with only wallet, startDate, and endDate having descriptions. The description adds that dates must be UTC in yyyy-MM-dd, but does not explain pagination parameters (page, size) or sorting direction. Given low coverage, the description should compensate more.
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 gets daily action summaries for a specific user within a date range, mentions the API endpoint, and lists the returned data. This distinguishes it from sibling B3TR tools like getB3TRActionsForUser or getB3TRUserOverview.
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 retrieving summarized daily actions but does not explicitly state when to use this tool over alternatives or provide when-not-to-use conditions. It lacks guidance on context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRUserOverviewB3TR: User overview (totals)ARead-onlyIdempotent
Get the B3TR action overview for a specific wallet via /api/v1/b3tr/actions/users/{wallet}/overview. Returns total B3TR rewards, number of rewarded actions, sustainability impact totals, global rankings, and unique X-App interactions. Optionally filter by roundId OR date (yyyy-MM-dd UTC), but not both — they are mutually exclusive.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional date (UTC) to filter by, format yyyy-MM-dd. Mutually exclusive with roundId. | |
| wallet | Yes | User wallet address (path parameter) | |
| roundId | No | Optional round id to filter by. Mutually exclusive with date. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | B3TR user overview (totals and rankings) |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is read-only, idempotent, and non-destructive. The description adds the API endpoint and the mutual exclusivity constraint, which are useful behavioral details beyond the annotations. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and front-loaded with the core purpose. Every sentence provides necessary information without redundancy.
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 presence of an output schema (not shown but indicated), the description doesn't need to detail return values. It covers the key inputs and their constraints. However, it could briefly mention that the tool is for a single wallet and provides aggregate totals, which it does.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters. The description adds value by explaining the mutual exclusivity between 'date' and 'roundId', and clarifying the date format (yyyy-MM-dd UTC). This goes beyond what the schema 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 tool gets the B3TR action overview for a specific wallet, listing specific return fields (total rewards, rewarded actions, sustainability impact, rankings, X-App interactions). It also provides the API endpoint, which distinguishes it from sibling tools like getB3TRActionsForUser or getB3TRUserAppOverview by specifying the aggregate nature of the response.
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 mentions the optional filters (roundId and date) and states they are mutually exclusive, which guides correct usage. However, it does not provide any guidance on when to use this tool versus sibling tools like getB3TRUserAppOverview or getB3TRUserDailySummaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getB3TRUsersLeaderboardB3TR: Users leaderboardARead-onlyIdempotent
Get leaderboard of users' B3TR actions via /api/v1/b3tr/actions/leaderboards/users. Optionally filter by roundId OR date (yyyy-MM-dd UTC) but not both — they are mutually exclusive. Sort by totalRewardAmount or actionsRewarded; supports cursor pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional date (UTC) to filter by, format yyyy-MM-dd. Mutually exclusive with roundId. | |
| size | No | The results page size | |
| cursor | No | Pagination cursor returned by a previous request | |
| sortBy | No | Sort by totalRewardAmount or actionsRewarded | |
| roundId | No | Optional round id to filter by. Mutually exclusive with date. | |
| direction | No | The sort direction |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List response for users leaderboard |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. The description adds behavioral details beyond annotations: mutual exclusivity of filters, date format (UTC), and pagination with cursor, which are not captured by annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with endpoint and purpose, then concise details on filtering, sorting, and pagination. No unnecessary words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero required parameters, an output schema, and 100% schema coverage, the description covers all user needs: filtering constraints, sorting, pagination. It is 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?
Schema description coverage is 100%, but the description adds operational semantics: mutual exclusivity between roundId and date, date format specification, and the meaning of sortBy values. This enhances parameter understanding 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 explicitly states 'Get leaderboard of users' B3TR actions' with the API endpoint, making the verb and resource clear. It distinguishes from sibling tools like getB3TRAppsLeaderboard by specifying 'users' leaderboard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains the mutual exclusivity of roundId and date parameters, sorting options (totalRewardAmount or actionsRewarded), and pagination support. It provides specific usage guidance but does not explicitly contrast with alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getContractAbiGet the ABI (or a subset) of a known contractARead-onlyIdempotent
Return the ABI of a contract registered in the server, with optional filters to keep the payload small. Always prefer the most specific filters: pass methodNames: ["balanceOf", "transfer"] to get just those fragments, or stateMutability: "view" to list read-only methods. When called with no filters on a large ABI the server returns only the list of function names and asks you to refine the query (the full ABI would be tens of KB). Use the returned fragments directly in callContract / buildContractTransaction together with the same name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Contract name from listKnownContracts (e.g. "b3tr", "x2EarnApps", "stargateNft", "erc20") | |
| methodNames | No | When provided, only fragments whose name is in this list are returned. | |
| fragmentType | No | Restrict to a single fragment kind. Default returns only functions. | function |
| stateMutability | No | Filter function fragments by mutability. Use "view" or "pure" for read-only methods. | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the tool is safe. The description adds behavioral context beyond annotations: it reveals that calling without filters on a large ABI returns only function names and asks for refinement, which is important for an agent to understand to avoid unexpected results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, well-front-loaded with the main purpose. Each sentence adds value: purpose, preference for filters, behavior with no filters, and how to use the result. It is not overly verbose but could be slightly more concise by removing the suggestion about 'use the returned fragments' which is implied.
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 4 parameters, 100% schema coverage, and an output schema, the description does not need to detail return values. It covers the key behaviors: filtering, large ABI warning, and usage with other tools. Missing details like error handling for unknown contracts are minor, so the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful context beyond schema: it provides concrete examples for methodNames (e.g., 'balanceOf', 'transfer'), explains the default for fragmentType, and suggests using stateMutability 'view' for read-only methods. This helps in writing correct queries.
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 returns the ABI of a registered contract, with optional filters to reduce payload size. The verb 'Return' and resource 'ABI of a contract' are specific, and the mention of using fragments with callContract/buildContractTransaction distinguishes this tool from sibling tools that perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage advice: prefer the most specific filters, gives examples like methodNames and stateMutability, and explains the server's behavior when no filters are applied on a large ABI. It also suggests using the returned fragments with callContract, but does not explicitly state when not to use this tool or compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getContractTransactionsIndexer: Transactions for a contract (v1)ARead-only
Query VeWorld Indexer /api/v1/transactions/contract for transactions interacting with a contract address. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| after | No | Return txs at or after this Unix timestamp (seconds) | |
| before | No | Return txs at or before this Unix timestamp (seconds) | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| expanded | No | Include decoded clause outputs/logs for richer results, would recommend to set to true to get the full transaction details | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| contractAddress | Yes | Contract address that the transaction interacted with |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List response for transactions endpoints |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds only that it queries a specific API and supports pagination, which is already implicit. No contradictions, but minimal added value beyond 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?
Two sentences, no filler, front-loaded with the core action. 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?
Given the presence of an output schema and fully annotated parameters, the description is adequate for a read-only paginated query. Could optionally mention rate limits or result trimming, but not essential.
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 8 parameters have descriptions in the schema (100% coverage), so the description adds no additional meaning beyond stating pagination support. 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 verb 'Query' and the resource 'transactions for a contract', including the specific API endpoint. This distinguishes it from sibling tools like getTransactions (general) and getTransfersFrom.
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 contract transactions but provides no explicit guidance on when to use this tool versus alternatives such as getTransactions or getTransfersFrom.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCurrentRoundVeBetterDAO: Get current round IDARead-onlyIdempotent
Get the current VeBetterDAO round ID by querying the X Allocation Voting smart contract directly. Rounds are time periods for voting cycles and reward distribution. Use this round ID to filter other queries (e.g., getB3TRGlobalOverview, getB3TRAppOverview) to see data for the current active round. Returns real-time on-chain value.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| network | Yes | |
| currentRoundId | No | Current VeBetterDAO round ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so no side effects. Description adds that it queries the smart contract directly and returns real-time on-chain value, providing useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with key action, every sentence adds value: purpose, explanation of rounds, and usage guidance. No unnecessary 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?
Given no parameters, rich annotations, and existence of output schema, the description fully covers what the agent needs: what it does, why it's useful (for filtering), and that it returns real-time data. No 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?
No parameters exist, so baseline is 4. Description doesn't need to add param info.
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 current VeBetterDAO round ID' and specifies the resource (round ID) and method (querying smart contract directly). It distinguishes from sibling tools by focusing on a simple, real-time value retrieval, unlike more complex queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to use the round ID to filter other queries like getB3TRGlobalOverview and getB3TRAppOverview, providing clear context. It doesn't specify when not to use it, but the purpose is narrow enough that it's implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getDelegatedTransactionsIndexer: Delegated transactions by delegator (v1)ARead-only
Query VeWorld Indexer /api/v1/transactions/delegated for transactions delegated by a given delegator address. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| after | No | Return txs at or after this Unix timestamp (seconds) | |
| before | No | Return txs at or before this Unix timestamp (seconds) | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| expanded | No | Include decoded clause outputs/logs for richer results | |
| delegator | Yes | Delegator (gas payer) address | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List response for transactions endpoints |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the endpoint detail and pagination support, which is useful context but does not significantly extend behavioral transparency beyond 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?
Two sentences, no filler: the first explains the core function, the second notes pagination support. Highly 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?
With a well-described schema and output schema present (not shown), the description captures the essential purpose. It misses explicit mention of time filters and sort direction, but the schema covers them, so it is almost 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?
All 8 parameters are fully described in the input schema (100% coverage). The description reinforces the delegator parameter and pagination concept but adds no new meaning beyond the schema's detailed descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the resource (delegated transactions) and action (query by delegator address) with the specific endpoint. It is distinct from siblings by focusing on delegated transactions, though no explicit sibling differentiation is given.
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 states the purpose and the key parameter (delegator) and mentions pagination, but does not provide guidance on when to use this tool versus other transaction tools like getTransactions or getContractTransactions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getDiscourseCategoriesGet Forum Categories (Optional)ARead-onlyIdempotent
Get all available categories from the VeBetterDAO Discourse forum. OPTIONAL FEATURE: Requires Discourse MCP server running separately. If not available, suggest visiting https://vechain.discourse.group/categories to browse categories.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false. The description adds critical behavioral context: the tool depends on a separately running Discourse MCP server, and if not available, recommends an external workaround. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two efficient sentences: the first defines the core purpose, and the second explains the optional dependency and fallback. No superfluous information, well 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 simple no-parameter, no-output-schema tool with rich annotations, the description covers purpose, dependency, and alternative. It does not describe the return format (e.g., structure of categories), which would be beneficial but not critical. Complete enough for practical 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?
The tool has zero parameters, so schema coverage is 100%. The description implicitly indicates that all categories are fetched without filters, which aligns with the lack of parameters. Baseline for 0 parameters is 4, and no additional parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all available categories from the VeBetterDAO Discourse forum,' specifying the verb (get) and resource (categories). It differentiates from sibling tools like getDiscourseLatestTopics, getDiscoursePost, getDiscourseTopic, and searchDiscourseForum by focusing solely on categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states that the tool requires the Discourse MCP server running separately and provides a clear fallback: suggest visiting the URL to browse categories. This tells the agent when to use the tool and what to do if it's unavailable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getDiscourseLatestTopicsGet Latest Forum Topics (Optional)ARead-onlyIdempotent
Get the latest topics from the VeBetterDAO Discourse forum. Returns standard page size by default. OPTIONAL FEATURE: Requires Discourse MCP server running separately. If not available, suggest visiting https://vechain.discourse.group directly. Useful for browsing what the community is currently discussing, finding new proposal discussions, or monitoring general sentiment.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Optional: Page number for pagination (default: 1) | |
| category | No | Optional: Filter by category slug (e.g., "proposals", "general") | |
| per_page | No | Optional: Override default page size (1-50) if more topics needed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context about default page size, optional pagination, and the dependency on a separate MCP server, which goes beyond 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 concise (two sentences plus a parenthetical note), front-loaded with the main purpose, and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the input and default behavior adequately. It could be more explicit about the output format, but the combination with annotations (read-only, idempotent) makes it relatively complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear descriptions for all three parameters. The description adds value by indicating defaults ('Returns standard page size by default') and optionality, enhancing 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 verb 'Get' and resource 'latest topics from the VeBetterDAO Discourse forum', distinguishing it from sibling tools like getDiscourseCategories, getDiscoursePost, and searchDiscourseForum.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage, including an optional feature requirement, a fallback alternative, and specific use cases (browsing discussions, finding proposals, monitoring sentiment). It lacks explicit 'when not to use' guidance, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getDiscoursePostGet Forum Post (Optional)ARead-onlyIdempotent
Get a specific post from the VeBetterDAO Discourse forum by post ID. Useful for reading specific replies or comments in detail. OPTIONAL FEATURE: Requires Discourse MCP server running separately.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | The post ID to fetch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly and non-destructive. The description adds a key behavioral trait: it requires a separate Discourse MCP server running, which is critical for agent invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences that front-load the primary action and purpose, with no extraneous 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?
Reasonably complete for a simple get-by-ID tool, but lacks description of return values (no output schema) and could better differentiate from sibling tools like getDiscourseTopic.
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 a single required parameter 'postId' described in the schema. The description merely restates 'by post ID', adding no new semantic 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?
Clearly states the tool retrieves a specific post by ID from the VeBetterDAO Discourse forum, distinguishing it from sibling tools like getDiscourseLatestTopics or getDiscourseTopic which deal with lists or topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides usage context ('useful for reading specific replies or comments in detail') but does not explicitly guide when to use this tool versus alternatives like getDiscourseTopic for multiple posts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getDiscourseTopicGet Forum Topic (Optional)ARead-onlyIdempotent
Get detailed information about a specific Discourse forum topic, including posts and replies. Returns 5 posts by default. OPTIONAL FEATURE: Requires Discourse MCP server running separately. CRITICAL FOR B3TR PROPOSALS: Proposal descriptions (fetched via getIPFSContent) often contain Discourse forum links in the format vechain.discourse.group/t/topic-name/TOPIC_ID. If this tool is not available, provide the direct forum URL for manual viewing. Example: from URL "https://vechain.discourse.group/t/vebetterdao-proposal-auto-voting/559" extract topicId: 559.
| Name | Required | Description | Default |
|---|---|---|---|
| topicId | Yes | The topic ID to fetch | |
| post_limit | No | Optional: Override default to get more posts (1-20, default: 5). Use higher values only when full discussion context is specifically needed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering safety and idempotency. The description adds: returns 5 posts by default, an optional post_limit, and that the tool is optional (requires external server). It could mention error behavior if server is unavailable, but overall adds useful context beyond 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 paragraph but well-structured with bold markers for emphasis. It is front-loaded with the main purpose. There is some redundancy (e.g., 'OPTIONAL FEATURE' repeated), but no filler sentences. Could be slightly more concise with bullet points, but overall 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?
The tool has 2 parameters, rich annotations, and no output schema. The description explains the optional nature, critical use case, default behavior, and provides an example. However, it does not describe the return format or error handling, which would be helpful given no output schema. Still, it is sufficiently complete for an 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?
Schema coverage is 100%, with both parameters described. The description adds meaning: for topicId, gives an example of extraction from a URL; for post_limit, states default is 5, range 1-20, and advises using higher values only when needed. This enriches the schema information.
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?
Clearly states 'Get detailed information about a specific Discourse forum topic, including posts and replies.' This is a specific verb+resource combination. It distinguishes from sibling tools like getDiscourseLatestTopics and searchDiscourseForum by focusing on a single topic. Also includes a critical use case for B3TR proposals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use: requires Discourse MCP server (optional), and when not available suggests providing direct URL. Also advises on post_limit: 'Use higher values only when full discussion context is specifically needed.' Includes example of extracting topicId from a URL, which is helpful context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getExplorerBlockUsageBlock usage statisticsARead-onlyIdempotent
Get cumulative block usage statistics (gas, tx counts, clauses, base fee) over a timestamp range via /api/v1/explorer/block-usage. Query: startTimestamp, endTimestamp (Unix seconds, inclusive). Returns cumulative counters at sampled points; compute deltas client-side.
| Name | Required | Description | Default |
|---|---|---|---|
| endTimestamp | Yes | Ending timestamp (Unix seconds, inclusive; >= startTimestamp; coerced from string if needed) | |
| startTimestamp | Yes | Starting timestamp (Unix seconds, inclusive; coerced from string if needed) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds value by explaining the cumulative/sampled nature of the results and the need to compute deltas, which is beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and endpoint, followed by concise details on parameters and result interpretation. No extraneous 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?
The description covers the essential aspects: what the tool returns, how to query, and how to interpret the results. Given the presence of an output schema and the simplicity of the tool, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description repeats the parameter names with additional context ('Unix seconds, inclusive'). This adds minor clarifying detail but does not significantly expand 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 verb 'Get' and the resource 'block usage statistics', specifying the data fields (gas, tx counts, clauses, base fee) and the API endpoint. It distinguishes itself from sibling tools which are different types of queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the query parameters and the nature of the result (cumulative counters at sampled points, requiring client-side delta computation). It provides clear context for when to use this tool, though it does not explicitly mention alternatives 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.
getFungibleTokenContractsIndexer: List wallet fungible tokens (VIP-180/ERC‑20‑like)ARead-only
List fungible token contract addresses for a wallet via Indexer. Use with getTokenRegistry for metadata. Endpoint: /api/v1/transfers/fungible-tokens-contracts.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| address | Yes | Owner wallet address whose fungible token contracts should be listed | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| officialTokens | No | Return only official tokens when true |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds the endpoint and usage hint but does not provide additional behavioral context beyond what annotations offer.
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: two sentences that cover purpose, usage hint, and endpoint. No unnecessary words or redundancy.
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 presence of annotations, output schema, and full schema coverage, the description is complete enough. It explains the tool's purpose and relationship to getTokenRegistry, which is sufficient for an agent to decide when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add parameter details. It adds no extra semantics beyond the schema, so a 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', the resource 'fungible token contract addresses', and the scope 'for a wallet'. It distinguishes from sibling tools like getTokenRegistry by mentioning it as a companion tool for metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage hint: 'Use with getTokenRegistry for metadata.' This implies when to use this tool (to get contract addresses) and suggests an alternative for metadata. However, it does not explicitly state when not to use it or compare with other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getGMNFTStatusVeBetterDAO: Get Galaxy Member NFT statusARead-onlyIdempotent
Check if a wallet address owns a Galaxy Member (GM) NFT and get its details. Uses hybrid approach: 1) Indexer to quickly check IF user has GM NFT (cached, fast), 2) Smart contract to get precise level/tier details. Galaxy Member NFTs provide special governance rights and benefits in VeBetterDAO. Returns whether the address holds a GM NFT, token ID(s), and level/tier.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Wallet address or VNS name to check GM NFT status for |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| gmNFT | No | |
| address | No | The account address to retrieve |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint) are present. The description adds transparency about the hybrid approach (cached indexer vs. smart contract) and return details. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loads the purpose, and provides all key information in a few sentences without unnecessary detail.
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 moderate complexity, one parameter, and presence of an output schema, the description covers the hybrid approach and return type. It adds context about Galaxy Member NFTs' governance role. Minor missing details like error handling, but overall complete enough.
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 schema already documents the 'address' parameter clearly. The description does not add meaningful semantic information beyond what the schema 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 tool checks if a wallet address owns a Galaxy Member NFT and gets its details, specifying the hybrid approach and return elements. It is distinct from sibling tools, which cover different functionalities.
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 checking GM NFT status but does not explicitly state when to use this tool over alternatives or provide exclusion criteria. Given the sibling list, no direct overlap is apparent, but guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getHistoryOfAccountGet History of accountARead-only
Retrieve transaction history for a VeChain address with filtering support.
IMPORTANT: Pass ARRAYS of event names to fetch multiple event types in ONE call - this is much more efficient than separate calls.
Available Event Types:
STARGATE STAKING (Current - Post-Hayabusa):
STARGATE_STAKE: User stakes VET and mints Stargate NFT
STARGATE_UNSTAKE: User unstakes VET and burns NFT
STARGATE_DELEGATE_REQUEST: User requests to delegate NFT to validator
STARGATE_DELEGATE_ACTIVE: Delegation becomes active with validator
STARGATE_DELEGATE_EXIT_REQUEST: User requests to exit delegation
STARGATE_DELEGATION_EXITED: Delegation fully exited, can unstake
STARGATE_DELEGATION_EXITED_VALIDATOR: Validator-side exit event
STARGATE_DELEGATE_REQUEST_CANCELLED: Delegation request cancelled before activation
STARGATE_CLAIM_REWARDS: User claims VTHO staking rewards
STARGATE_BOOST: User boosts NFT maturity with VTHO payment
STARGATE_MANAGER_ADDED: User adds manager address to control NFT
STARGATE_MANAGER_REMOVED: Manager address removed from NFT
STARGATE LEGACY (Pre-Hayabusa - Historical only):
STARGATE_DELEGATE_LEGACY: Old delegation system
STARGATE_CLAIM_REWARDS_BASE_LEGACY: Old base rewards
STARGATE_CLAIM_REWARDS_DELEGATE_LEGACY: Old delegation rewards
STARGATE_UNDELEGATE_LEGACY: Old undelegation
TRANSFERS:
TRANSFER_VET: Native VET token transfers
TRANSFER_FT: Fungible token (VIP-180) transfers - includes VTHO, other tokens
TRANSFER_NFT: NFT (VIP-181/VIP-721) transfers
TRANSFER_SF: Semi-fungible token transfers
SWAPS (DEX Activity):
SWAP_VET_TO_FT: Swapping VET for tokens
SWAP_FT_TO_VET: Swapping tokens for VET
SWAP_FT_TO_FT: Token-to-token swaps
VEBETTERDAO (B3TR Ecosystem):
B3TR_SWAP_VOT3_TO_B3TR: Converting VOT3 governance token to B3TR
B3TR_SWAP_B3TR_TO_VOT3: Converting B3TR to VOT3
B3TR_PROPOSAL_SUPPORT: Supporting a proposal with B3TR
B3TR_PROPOSAL_VOTE: Voting on governance proposal
B3TR_PROPOSAL_WITHDRAW: Withdrawing a B3TR proposal
B3TR_XALLOCATION_VOTE: Voting on X-Allocation distribution
B3TR_CLAIM_REWARD: Claiming B3TR ecosystem rewards
B3TR_UPGRADE_GM: Upgrading governance model
B3TR_ACTION: General B3TR ecosystem action
GOVERNANCE:
VEVOTE_VOTE_CAST: Vote cast in VeVote governance system
OTHER:
NFT_SALE: NFT marketplace sale transaction
UNKNOWN_TX: Unclassified transaction type
Common Query Patterns:
Complete Stargate history: ["STARGATE_STAKE", "STARGATE_UNSTAKE", "STARGATE_DELEGATE_REQUEST", "STARGATE_DELEGATE_ACTIVE", "STARGATE_DELEGATE_EXIT_REQUEST", "STARGATE_DELEGATION_EXITED", "STARGATE_CLAIM_REWARDS", "STARGATE_BOOST", "STARGATE_MANAGER_ADDED", "STARGATE_MANAGER_REMOVED"]
All asset transfers: ["TRANSFER_VET", "TRANSFER_FT", "TRANSFER_NFT", "TRANSFER_SF"]
Trading activity: ["SWAP_VET_TO_FT", "SWAP_FT_TO_VET", "SWAP_FT_TO_FT"]
Filters:
eventName: Single string OR array (ALWAYS prefer arrays for related events)
searchBy: 'to' | 'from' | 'origin' | 'gasPayer' - filter by address role
contractAddress: Filter by specific contract interactions
after/before: Unix timestamps in SECONDS (NOT milliseconds). Example: 2025-08-03 00:00 UTC = 1754179200, 2025-08-04 00:00 UTC = 1754265600
Pagination: page, size, cursor, direction (ASC/DESC)
Returns paginated array of events with full transaction details.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| after | No | Optional filter by after timestamp (Unix seconds, e.g. 1754179200 for 2025-08-03T00:00:00Z). Use seconds, NOT milliseconds. | |
| before | No | Optional filter by before timestamp (Unix seconds, e.g. 1754265600 for 2025-08-04T00:00:00Z). Use seconds, NOT milliseconds. | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| address | Yes | The account address or VNS (.vet) name to retrieve | |
| searchBy | No | Optional filter by search by (to, from, origin, gasPayer) | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| eventName | No | Optional filter by event name(s). Can be a single event or an array of events | |
| contractAddress | No | Optional filter by contract address |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: it explains the efficiency of array usage, pagination behavior, timestamp format (seconds vs milliseconds), and the purpose of each filter. Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent.
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 well-structured with headings and bullet points, but it is very long and includes redundant examples (e.g., full event type lists repeated in query patterns). It could be more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, 1 required, many enums, output schema present), the description covers all facets: filters, pagination, event types, and usage patterns. It is thorough and leaves no major 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%, but the description adds meaning by explaining timestamp formats, common query patterns, and how to combine parameters. It provides examples that go beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: 'Retrieve transaction history for a VeChain address with filtering support.' It uses a specific verb and resource, and distinguishes this tool from siblings like getTransactions or getTransfersOfAccount by focusing on account-specific history with extensive event type filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on using arrays for event names to improve efficiency, and includes common query patterns. However, it does not explicitly compare to sibling tools or state when to use this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getIPFSContentIPFS: Fetch content by CIDARead-onlyIdempotent
Fetch content from IPFS using the VeChain gateway proxy (api.gateway-proxy.vechain.org). Provide an IPFS Content Identifier (CID) to retrieve the associated data. Commonly used to fetch B3TR proposal descriptions. IMPORTANT: Proposal descriptions often contain Discourse forum links (vechain.discourse.group/t/topic-name/TOPIC_ID or discourse.vebetterdao.org/t/topic-name/TOPIC_ID). After fetching IPFS content, search for these links and extract them. If getDiscourseTopic is available, use it with the topic ID. If not available (optional feature), provide the full forum URL for manual viewing to see community discussion and sentiment.
| Name | Required | Description | Default |
|---|---|---|---|
| cid | Yes | IPFS Content Identifier (CID) to fetch |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the fetch was successful |
| cid | Yes | The CID that was fetched |
| error | No | Error message if fetch failed |
| content | No | The fetched content (JSON or text) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. Description adds transparency about the proxy URL and post-processing behavior (extracting Discourse links), which goes beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with core purpose and includes necessary post-processing instructions. Slightly lengthy but each sentence adds value; could be slightly more concise but overall well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with comprehensive annotations and an output schema, the description covers usage context, proxy, common use case, and subsequent steps, making it fully complete for agent decision-making.
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 'cid' parameter with description 'IPFS Content Identifier (CID)'. The description does not add new semantics beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool fetches IPFS content by CID using the VeChain gateway proxy. Specifies a common use case (B3TR proposal descriptions) and distinguishes from sibling tools like getDiscourseTopic by instructing post-processing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (fetch IPFS content, especially proposals) and when to use siblings (extract Discourse links, optionally call getDiscourseTopic). Gives clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNFTContractsIndexer: List NFT contract addresses by ownerARead-only
Get all NFT contract addresses for a given owner using VeWorld Indexer. Endpoint: /api/v1/nfts/contracts. Accepts address and pagination (page/size/direction or cursor).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| owner | No | The address of the NFTs owner | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| excludeCollections | No | Optional list of NFT collection addresses to exclude (max 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description adds value by specifying the endpoint and pagination details (page/size/direction/cursor). It does not contradict annotations and provides extra behavioral context about the API-based nature of the 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?
Two sentences, no fluff. The description front-loads the main action ('Get all NFT contract addresses for a given owner') and then provides structured details. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 6 parameters and existence of an output schema, the description is mostly complete. It covers the core purpose and key parameter groups. However, it could elaborate on the interplay between cursor and page-based pagination, but that is a minor gap. The output schema compensates for return format 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%, so the baseline is 3. The description briefly mentions 'address and pagination (page/size/direction or cursor),' but this adds minimal meaning beyond what the schema already provides. It does not clarify nuances like the relationship between cursor and page/size or the format of the 'owner' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves NFT contract addresses for a given owner, with specific mention of the VeWorld Indexer and endpoint. The verb 'Get' and resource 'NFT contract addresses by owner' are explicit, and it distinguishes from sibling tools like 'getNFTs' which likely returns individual tokens.
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 tells the agent when to use it (for owner's NFT contract addresses) but does not explicitly mention when not to use it or point to alternative tools. For example, it could note that 'getNFTs' retrieves individual NFT tokens, while this tool lists contract addresses. The guidance is implicit but could be clearer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNFTsIndexer: List NFTs owned by an addressARead-only
Get all NFTs owned by an address using VeWorld Indexer. Endpoint: /api/v1/nfts. Accepts address, optional contractAddress, and pagination (page/size/direction or cursor).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| address | No | Wallet address that owns NFTs to query (0x-prefixed, 40 hex chars) | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| contractAddress | No | Optional NFT contract address to filter results (VIP‑721/VIP‑181) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the endpoint and pagination behavior, which provides useful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only two sentences: the first states the core action, the second provides endpoint and parameter details. No irrelevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a read-only, open-world tool and an output schema available, the description covers the essentials. It could mention error handling or rate limits but is otherwise 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%, so the description's parameter summary ('address, optional contractAddress, and pagination') adds no new meaning beyond the schema, earning the 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 clearly states 'Get all NFTs owned by an address' using a specific indexer and endpoint, distinguishing it from siblings like getNFTContracts which likely focus on contracts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes the context (VeWorld Indexer) and lists accepted parameters, but does not explicitly state when not to use it or compare to sibling tools beyond the endpoint hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateNftHoldersByPeriodIndexer: Stargate NFT holders by periodARead-onlyIdempotent
Time‑series of total Stargate NFT holders by period (DAY, WEEK, MONTH, YEAR, ALL). Each element corresponds to an interval at the selected granularity.
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes | Time period to aggregate by; determines the granularity of the returned time‑series. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Array of metric points for the requested period (exact shape varies per endpoint). Each element corresponds to one interval at the selected granularity. |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds that each element corresponds to an interval at the selected granularity, which clarifies the 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?
Two sentences, no wasted words. The main purpose and key options are stated upfront.
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 tool with one parameter and an output schema, the description fully explains what the tool returns and the input options. No 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% and the parameter description matches the schema. The tool description lists the allowed period values (DAY, WEEK, MONTH, YEAR, ALL), which are not in the schema as enums, thus adding semantic 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 explicitly states it returns a time-series of total Stargate NFT holders by period, listing the allowed granularities (DAY, WEEK, MONTH, YEAR, ALL). This clearly distinguishes it from siblings like getStargateNftHoldersTotal (single total) and getStargateNftHoldersHistoric (raw historic data).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the available periods and that the output is a time-series. It implies usage for aggregated trends over time but does not explicitly contrast with siblings or state when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateNftHoldersHistoricIndexer: Historic total NFT holdersARead-onlyIdempotent
Running-total time series of total NFT holders in Stargate, optionally filtered by NFT level. Endpoint: /api/v1/stargate/nft-holders/historic/{range}.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Stargate NFT level | |
| range | Yes | Preset time range to consider for historic totals: 1-hour | 1-day | 1-week | 1-month | 1-year | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, non-destructive. Description adds context that it provides a 'running-total time series', which is a behavioral trait (historical aggregation over time) not captured by 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?
Single, information-dense sentence plus endpoint. No wasted words; front-loaded with key 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?
Output schema exists, so return values are covered elsewhere. With high schema coverage and comprehensive annotations, the description provides sufficient context for the tool's function and parameters.
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 both parameters described (level enum, range enum). Description reiterates that level is optional and range is preset, adding little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it provides a 'running-total time series of total NFT holders' with optional NFT level filtering. This distinguishes it from sibling tools like getStargateNftHoldersTotal and getStargateNftHoldersByPeriod.
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?
Description implies when to use (for historic running totals) but does not explicitly state when not to use or compare with alternatives. No direct guidance on choosing this over other Stargate NFT holder tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateNftHoldersTotalIndexer: Total stargate NFT (total)ARead-onlyIdempotent
Get the total number of Stargate NFTs and breakdown by level via /api/v1/stargate/nft-holders. Returns an object with block metadata, total, and byLevel.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Total number of Stargate NFTs and breakdown by level (block metadata included when present) |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, and non-destructive behavior. The description adds the return structure (block metadata, total, byLevel) but no further behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose and return format with no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, existing output schema, and rich annotations, the description fully covers what the tool returns, making it complete for this simple read 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?
No parameters exist in the input schema, so the description cannot add parameter meaning. Baseline for 0 parameters is 4, and the description correctly reflects the tool's simplicity.
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 total number' and resource 'Stargate NFTs' with breakdown by level, distinguishing it from siblings like getStargateNftHoldersByPeriod and getStargateNftHoldersHistoric.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this returns the total count and breakdown, allowing inference of when to use it versus sibling tools. However, it lacks explicit 'when not to use' or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateTokenRewardsIndexer: Stargate token rewardsARead-onlyIdempotent
Overview of rewards earned by a Stargate NFT delegation to a validator over time. Not the same as “claimed” (claimable only at end of cycle). Supports periodType (CYCLE, DAY, WEEK, MONTH, YEAR, ALL), optional validator, and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| tokenId | Yes | The numeric Stargate NFT token ID (e.g. "12345"), NOT the level name. Use getStargateTokens to find token IDs for a given owner. | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| validator | No | Optional validator address filter | |
| periodType | Yes | Reward period to aggregate by (CYCLE, DAY, WEEK, MONTH, YEAR, ALL) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds that rewards are earned over time and not claimable until end of cycle, which is valuable behavioral context not in annotations. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. First sentence delivers purpose and critical behavioral nuance; second sentence enumerates supported features. 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?
Given the tool has 7 parameters (2 required), full schema coverage, and an output schema, the description adequately covers purpose, usage distinction, and key options like periodType (with values), validator filter, and pagination. It also cross-references a sibling tool for token lookup. No 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%, but the description adds meaning: it lists periodType enum values explicitly ('CYCLE, DAY, WEEK, MONTH, YEAR, ALL') which the schema does not enumerate, and clarifies tokenId is 'NOT the level name' and points to getStargateTokens. This goes beyond the schema 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 provides an 'Overview of rewards earned by a Stargate NFT delegation to a validator over time.' It distinguishes itself from the related 'claimed' rewards and from other Stargate tools by focusing on token rewards. The purpose is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes this is 'Not the same as “claimed” (claimable only at end of cycle),' giving a clear when-not-to-use context. It also references getStargateTokens for finding token IDs, indicating a prerequisite. However, it does not explicitly compare against all sibling tools like getStargateTotalVetStaked, leaving some ambiguity for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateTokensIndexer: Stargate tokensARead-onlyIdempotent
Fetch Stargate NFT information (VET staked, rewards, level, delegation status, validator id, etc.) via /api/v1/stargate/tokens. Supports filtering by owner, manager, or tokenId; supports pagination (page, size, direction).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| owner | No | Filter stargate nfts by current owner address | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| manager | No | Filter stargate nft tokens by manager address | |
| tokenId | No | Filter by specific tokenId | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds value by listing the data fields returned (VET staked, rewards, level, etc.) and the API endpoint, providing additional context beyond 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 concise sentence that front-loads the main action and key details. Every part is informative, with no unnecessary 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?
Given the presence of an output schema and thorough parameter documentation, the description sufficiently covers the tool's core function. It lacks explicit guidance on pagination behavior or response format, but the output schema fills that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds minor extra context (e.g., default page size, filter options) but does not significantly enhance understanding 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 fetches Stargate NFT information with specific data fields and API endpoint. It distinguishes itself among many sibling tools by focusing on individual token details.
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 specifies filtering and pagination support, implying when to use this tool (general NFT info extraction). However, it does not explicitly contrast with sibling tools like getStargateTokenRewards or getStargateTotalVetStaked, leaving the agent to infer the best tool for specific metrics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateTotalVetStakedIndexer: Total VET staked (with per-level breakdown)ARead-onlyIdempotent
Get total VET staked in Stargate at latest or at a specific block via /api/v1/stargate/total-vet-staked. Returns block metadata, total, and byLevel breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| blockNumber | No | Optional block number to query a historical snapshot. Defaults to latest. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Total VET staked in Stargate with block metadata and per-level breakdown |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint. The description adds return structure (block metadata, total, byLevel) beyond annotations, but does not mention rate limits or authentication, though likely unnecessary given the hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences, no wasted words, front-loaded with verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with one optional parameter and an output schema, the description adequately explains purpose and return fields. Annotations cover safety, so no 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% for blockNumber, and the description 'at latest or at a specific block' mirrors the schema's description, adding no 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 it retrieves total VET staked in Stargate, with optional block number. It distinguishes from sibling getStargateTotalVetStakedHistoric by specifying 'latest or at a specific 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?
The description implies usage for querying total staked VET at a point in time, but does not explicitly guide when to use alternatives like getStargateTotalVetStakedHistoric for historical ranges.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateTotalVetStakedHistoricIndexer: Historic total VET stakedARead-onlyIdempotent
Running-total time series of total VET staked in Stargate, optionally filtered by NFT level. Endpoint: /api/v1/stargate/total-vet-staked/historic/{range}.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Stargate NFT level | |
| range | Yes | Preset time range to consider for historic totals: 1-hour | 1-day | 1-week | 1-month | 1-year | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, non-destructive, and open-world. The description adds that it returns a 'running-total time series' and provides the endpoint, but does not disclose additional behavioral traits like pagination or rate limits. Annotations carry the burden here, so the description adds modest value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core purpose, and includes the endpoint. Every word is necessary; no redundancy or fluff.
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 moderate complexity (historic time series, optional filter), the presence of an output schema, and full annotation coverage, the description is sufficiently complete. It clearly states what the tool does and provides the endpoint, which is enough for an AI agent to understand its usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters (range and level), with full enum values explained. The description only adds that the filter is optional, which is already implied by the schema's optional property flag. No additional semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a 'running-total time series of total VET staked in Stargate' and mentions the optional filter by NFT level. It distinguishes from sibling tools like getStargateTotalVetStaked (non-historic) and other historic Stargate tools by specifying the metric and endpoint.
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 retrieving historic total VET staked with optional NFT level filtering but does not explicitly state when to avoid using it or mention alternatives. The context is clear but lacks explicit exclusions or comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateTotalVthoClaimedIndexer: Stargate total VTHO claimedARead-onlyIdempotent
Fetch the total VTHO that Stargate users have actually claimed from rewards generated by delegations. Returns a numeric value encoded as a JSON string. Optional: blockNumber for historical snapshots; rewardsType can filter by LEGACY (pre‑Hayabusa) or DELEGATED (post‑Hayabusa).
| Name | Required | Description | Default |
|---|---|---|---|
| blockNumber | No | Optional block number to query a historical snapshot. Defaults to latest. | |
| rewardsType | No | Type of rewards to include. If omitted, all Stargate rewards are counted. `LEGACY` refers to rewards claimed before the Hayabusa upgrade and is generally only useful for historical analysis. `DELEGATED` refers to rewards claimed after the Hayabusa upgrade and is the relevant type for current rewards. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Total VTHO claimed by Stargate users represented as a JSON string (API returns plain string). |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. The description adds value by specifying the return format ('encoded as a JSON string'), which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose, return format, optional parameters. Front-loaded, concise, no wasted 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?
Given the output schema exists and annotations cover safety, the description is complete for this simple fetch tool. No missing behavioral 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 description coverage is 100%, so baseline is 3. The description restates the parameter purposes but does not add new 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 fetches the total VTHO claimed by Stargate users from delegation rewards, distinguishing it from per-account or historic variants among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like getStargateTotalVthoClaimedByAccount or getStargateTotalVthoClaimedHistoric. Usage is implied by the name and description but not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateTotalVthoClaimedByAccountStargate: Total VTHO claimed by accountARead-onlyIdempotent
Get total VTHO claimed by a given account via /api/v1/stargate/total-vtho-claimed/{account}. Optional rewardsType filter: LEGACY (pre‑Hayabusa bootstrap) or DELEGATION (post‑Hayabusa delegated) if not provided, all rewards ever claimed are included.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | Account address to query total VTHO claimed for | |
| rewardsType | No | Optional rewards type filter. LEGACY refers to pre‑Hayabusa (bootstrap) rewards; DELEGATION refers to post‑Hayabusa delegated rewards. If omitted, all types are included. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Total VTHO claimed for an account as a string (API returns plain string). |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds endpoint detail and filter semantics beyond annotations which already declare readOnly, idempotent, and non-destructive. No contradiction; transparency is adequate for a read query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the endpoint path, no extraneous words or redundancy.
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 presence of an output schema and high parameter coverage, the description sufficiently explains the tool's purpose and filter options. Could note the return type, but output schema likely handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds value by explaining the filter values (LEGACY vs DELEGATION) more concretely than the schema's generic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Get total VTHO claimed by a given account' and includes the endpoint path, distinguishing it from sibling tools like getStargateTotalVthoClaimed (global) and getStargateTotalVthoClaimedByAccountToken (by account+token).
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?
Describes the optional rewardsType filter with clear explanations of LEGACY and DELEGATION values, and notes that omitting the filter includes all rewards. Does not explicitly compare to siblings, but context is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateTotalVthoClaimedByAccountTokenStargate: Total VTHO claimed by account and tokenARead-onlyIdempotent
Get total VTHO claimed by a given account and token via /api/v1/stargate/total-vtho-claimed/{account}/{tokenId}. Optional rewardsType filter: LEGACY (pre‑Hayabusa bootstrap) or DELEGATION (post‑Hayabusa delegated).
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | Account address to query | |
| tokenId | Yes | Stargate token id to query | |
| rewardsType | No | Optional rewards type filter. LEGACY refers to pre‑Hayabusa (bootstrap) rewards; DELEGATION refers to post‑Hayabusa delegated rewards. If omitted, all types are included. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Total VTHO claimed for an account+token as a string (API returns plain string). |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds minor context (endpoint path, optional filter values) but does not disclose any additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first states the core purpose, second explains the optional filter. No wasted words, front-loaded with the main action.
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 presence of an output schema and high schema coverage, the description covers the essential inputs and the filter nuance. It lacks explicit mention of output format but output schema fills that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all parameters described). The description adds useful context explaining the rewardsType filter values (LEGACY vs DELEGATION) and their meanings, which adds value 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 verb 'Get', the resource 'total VTHO claimed by a given account and token', and the endpoint path. It distinguishes from siblings like getStargateTotalVthoClaimed and getStargateTotalVthoClaimedByAccount by including both account and token parameters.
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 does not provide guidance on when to use this tool versus alternatives. There is no mention of prerequisites, when-not-to-use, or comparisons with similar tools like getStargateTotalVthoClaimed or getStargateTokenRewards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateTotalVthoClaimedHistoricIndexer: Historic total VTHO claimedARead-onlyIdempotent
Running-total time series of total VTHO claimed across Stargate. Endpoint: /api/v1/stargate/total-vtho-claimed/historic/{range}.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | Preset time range to consider for historic totals: 1-hour | 1-day | 1-week | 1-month | 1-year | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds that it returns a time series (running total), but does not elaborate on data freshness, pagination, or authentication. The added context is minimal and within expectations given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences: the first explains the purpose, the second provides the endpoint. No unnecessary words. Ideal for quick comprehension.
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 historic data retrieval tool with one parameter, rich schema, output schema present, and complete annotations, the description is nearly sufficient. It lacks detail on output structure (e.g., time series format) but the presence of an output schema mitigates this. Slight gap in what 'running-total time series' entails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a clear enum for 'range.' The tool description mentions the endpoint template but adds no additional semantics beyond the schema. Baseline 3 is appropriate as the schema fully describes the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a 'Running-total time series of total VTHO claimed across Stargate.' Combined with the title 'Historic total VTHO claimed,' it specifies the verb (retrieve) and resource (historic total VTHO claimed) and differentiates from the non-historic sibling getStargateTotalVthoClaimed.
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. Given siblings like getStargateTotalVthoClaimed, the agent must infer from names alone. No explicit when-to-use or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateTotalVthoGeneratedIndexer: Stargate total VTHO generatedARead-onlyIdempotent
Fetch the total VTHO generated by Stargate delegations from validators’ block rewards (aggregate produced, whether or not claimed). Returns a numeric value encoded as a JSON string. Optional: blockNumber for historical snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
| blockNumber | No | Optional block number to query a historical snapshot. Defaults to latest. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Total VTHO generated by Stargate delegations represented as a JSON string (API returns plain string). |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value by clarifying 'aggregate produced, whether or not claimed' and 'Returns a numeric value encoded as a JSON string', which are behavioral details beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant words. The first sentence clearly states the core purpose, and the second adds return format and parameter hint. 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 presence of an output schema, the description adequately covers the function's purpose, aggregate nature, optional historical parameter, and return format. It provides sufficient context for a simple read-only tool, though it could explicitly mention the default latest block behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description mentions 'Optional: blockNumber for historical snapshots', which essentially mirrors the schema's own description. No additional parameter meaning is added beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch the total VTHO generated by Stargate delegations from validators’ block rewards', specifying the resource (total VTHO generated) and action (fetch). It distinguishes this from sibling tools like getStargateTotalVthoClaimed and getStargateTotalVetStaked by highlighting 'generated' vs 'claimed' and 'VTHO' vs 'VET'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage hint: 'Optional: blockNumber for historical snapshots', which advises when to use the blockNumber parameter. However, it does not explicitly compare to siblings like getStargateTotalVthoGeneratedHistoric or explain when to use this tool over others. The context of sibling tools implies differentiation by metric, but more explicit guidance would improve.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateTotalVthoGeneratedHistoricIndexer: Historic total VTHO generatedARead-onlyIdempotent
Running-total time series of total VTHO generated across Stargate. Endpoint: /api/v1/stargate/total-vtho-generated/historic/{range}.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | Preset time range to consider for historic totals: 1-hour | 1-day | 1-week | 1-month | 1-year | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the behavioral safety profile is clear. The description adds that it's a 'running-total time series' but does not disclose additional details like response structure or pagination. Minimal extra value beyond 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 extremely concise: one sentence describing the tool's purpose followed by the endpoint path. Every word is meaningful, with no redundancy.
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 tool with one parameter and an existing output schema, the description covers the core purpose and endpoint. It is sufficiently complete given the low complexity and rich annotations/schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full documentation for the single 'range' parameter with enum values and description (100% coverage). The description adds no further parameter semantics, achieving baseline adequacy without improvement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a 'running-total time series of total VTHO generated across Stargate', specifying the resource (total VTHO) and temporal nature (historic time series). This distinguishes it from siblings like getStargateTotalVthoGenerated (non-historic) and other Stargate tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus similar siblings (e.g., getStargateTotalVthoGenerated or getStargateVthoGeneratedByPeriod). No explicit context or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateVetDelegatedByPeriodIndexer: Stargate VET delegated by periodARead-onlyIdempotent
Time‑series of VET delegated to validators via Stargate by period (DAY, WEEK, MONTH, YEAR, ALL). Useful for tracking delegation flows over time.
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes | Time period to aggregate by; determines the granularity of the returned time‑series. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Array of metric points for the requested period (exact shape varies per endpoint). Each element corresponds to one interval at the selected granularity. |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint as false, so the safety profile is clear. The description adds value by explaining the time-series nature and listing allowed period values, but does not reveal edge cases like behavior on invalid input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines purpose and lists periods, second states utility. No redundant information; front-loads 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?
The description is sufficient for a simple read-only tool with an output schema. It explains the resource and parameter, but could mention that it returns aggregated delegation data and possibly default behavior or limits.
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 schema describes the period parameter as 'Time period to aggregate by…'. The tool description adds value by listing the specific allowed period values (DAY, WEEK, MONTH, YEAR, ALL), which are not present as enums in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a time-series of VET delegated via Stargate, and lists the specific period values (DAY, WEEK, MONTH, YEAR, ALL). This distinguishes it from siblings like getStargateVetStakedByPeriod and getValidatorDelegations.
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 indicates the tool is useful for tracking delegation flows over time, providing context for when to use it. However, it lacks explicit guidance on when not to use it or how it differs from related tools like getStargateVetStakedByPeriod.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateVetStakedByPeriodIndexer: Stargate VET staked by periodARead-onlyIdempotent
Time‑series of VET staked (locked via Stargate) by period (DAY, WEEK, MONTH, YEAR, ALL). Each element is the total amount staked during that interval.
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes | Time period to aggregate by; determines the granularity of the returned time‑series. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Array of metric points for the requested period (exact shape varies per endpoint). Each element corresponds to one interval at the selected granularity. |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description doesn't need to repeat safety. It adds context about the data being a time-series with period granularity, which is sufficient beyond 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 one concise sentence (17 words) that front-loads the key idea and provides all necessary information without redundancy.
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 only one parameter and an output schema, the description covers the purpose, input, and output nature adequately. No missing information.
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 already describes the parameter, but the description adds concrete valid values (DAY, WEEK, etc.) from the description text, and clarifies the meaning of the returned data. This enhances understanding beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a time-series of VET staked, aggregated by specified periods (DAY, WEEK, MONTH, YEAR, ALL). It distinguishes from sibling tools like getStargateTotalVetStaked (total) and getStargateVetDelegatedByPeriod (delegation).
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 does not explicitly state when to use this tool versus alternatives. It implies usage for time-series by period, but lacks explicit guidance like 'use for periodic aggregation; for totals, use getStargateTotalVetStaked'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateVthoClaimedByPeriodIndexer: Stargate VTHO claimed by periodARead-onlyIdempotent
Time‑series of VTHO that users actually claimed from Stargate rewards by period (DAY, WEEK, MONTH, YEAR, ALL). Values represent the claimed subset of generated rewards per interval. Only take into account rewaerds that were claimed post hayabusa.
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes | Time period to aggregate by; determines the granularity of the returned time‑series. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Array of metric points for the requested period (exact shape varies per endpoint). Each element corresponds to one interval at the selected granularity. |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds the behavioral constraint that only claimed rewards 'post hayabusa' are included, which is not in annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and periods. Every sentence adds value: the first defines the tool, the second clarifies scope (claimed subset, post-hayabusa). No unnecessary 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?
Given the presence of an output schema (not shown but stated), the description does not need to explain return values. It covers the essential: what it returns (time-series), the periods, and a time constraint. With strong annotations, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter 'period'. The description adds value by explicitly listing the allowed values (DAY, WEEK, MONTH, YEAR, ALL) which are not formally declared as enums in the schema. This helps the agent understand valid inputs.
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 specifies the resource (VTHO claimed from Stargate rewards), the action (get time-series), and the aggregation periods (DAY, WEEK, MONTH, YEAR, ALL). It distinguishes itself from sibling tools like getStargateTotalVthoClaimed by focusing on time-series rather than total.
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 time-series data but does not explicitly state when to use this tool versus alternatives (e.g., getStargateTotalVthoClaimedHistoric). No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStargateVthoGeneratedByPeriodIndexer: Stargate VTHO generated by periodARead-onlyIdempotent
Time‑series of VTHO generated from validators’ block rewards by period (DAY, WEEK, MONTH, YEAR, ALL). Each element represents the amount generated during that interval; use it to chart production over time.
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes | Time period to aggregate by; determines the granularity of the returned time‑series. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Array of metric points for the requested period (exact shape varies per endpoint). Each element corresponds to one interval at the selected granularity. |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the description carries less burden. It adds context about the return being a time-series with per-interval amounts, which is useful but not critical beyond 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?
Two sentences, no wasted words. Front-loaded with the core purpose and period options, followed by usage guidance. Highly 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?
With an output schema present, the description does not need to detail return format. It covers the data nature (time-series, per-interval amounts) and intended use. Complete for a simple tool with few parameters.
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 covers the parameter description but does not list allowed values. The description explicitly provides the valid enum values (DAY, WEEK, MONTH, YEAR, ALL), adding essential semantic information 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?
Clearly states it returns a time-series of VTHO generated from validators' block rewards by period, specifying the period granularities and use case for charting. Distinguishes from sibling tools like getStargateTotalVthoGenerated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it for charting production over time, indicating the context. Does not specify when not to use or alternatives, but the period options and time-series nature imply differentiation from single-value tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTokenBalancesGet Token BalanceARead-onlyIdempotent
Get the balance of any VIP-180/ERC-20 token for a wallet address by querying the smart contract directly. Returns the raw balance (smallest unit), formatted balance (human-readable), decimals, and token metadata (symbol, name) if available. Requires the token contract address.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Wallet address or VNS name to check token balance for | |
| tokenAddress | Yes | Token contract address (VIP-180/ERC-20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| balance | No | |
| network | Yes | |
| walletAddress | No | Resolved wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description doesn't need to restate those. It adds value by detailing the output: raw balance, formatted balance, decimals, and token metadata (if available), and mentions direct smart contract querying. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, every sentence contributes value. 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?
Given the presence of an output schema and comprehensive annotations, the description covers all necessary aspects for a read-only token balance tool. It explains input requirements and output structure, making it complete for an agent to 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% with parameter descriptions. The description adds extra meaning by clarifying that the 'address' parameter can be a VNS name (pattern \.vet$), which is not fully captured in the schema pattern description. Also states that tokenAddress is the contract address and queries the smart contract directly.
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?
Clearly states the verb 'Get' and resource 'balance of VIP-180/ERC-20 token for a wallet address'. It differentiates from most sibling tools which focus on other domains (discourse, contracts, etc.), but does not explicitly distinguish from token-related siblings like getTokenFiatPrice or getTokenRegistry.
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?
States the prerequisite 'Requires the token contract address', but does not provide guidance on when to use this tool versus alternatives, nor any exclusions. Usage is implied but not explicitly scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTokenFiatPriceGet token price in fiat (VET/VTHO/B3TR)ARead-onlyIdempotent
Get the current price of VET, VTHO, or B3TR in a given fiat currency using the on-chain VeChain Energy Oracle.
| Name | Required | Description | Default |
|---|---|---|---|
| fiat | Yes | Fiat currency to return the price in (USD, EUR, GBP), case-insensitive | |
| token | Yes | Token symbol to query (VET, VTHO, or B3TR, case-insensitive) |
Output Schema
| Name | Required | Description |
|---|---|---|
| fiat | Yes | |
| error | No | Optional error message if the price could not be fetched |
| price | Yes | Current price of the token in the selected fiat currency; NaN when unavailable |
| token | Yes | |
| source | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds the source ('on-chain VeChain Energy Oracle') but no further behavioral traits like failure modes or data freshness. With annotations covering safety, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose and includes all essential information without any wasted words. It is optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, fully described schema, annotations, and an output schema), the description is complete. It provides the core purpose and source, which is sufficient for correct usage.
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 provides full descriptions for both parameters (token and fiat), covering 100% of the schema. The description adds no additional meaning beyond what is in the schema, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description explicitly state the tool retrieves current prices of VET, VTHO, or B3TR in a fiat currency via the on-chain oracle. This clearly distinguishes it from siblings, which cover topics like discourse, transactions, or other crypto data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives. However, the purpose is clear, and the lack of similar sibling tools makes the usage context implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTokenRegistryToken Registry: list known tokens (mainnet/testnet)ARead-onlyIdempotent
Fetch the VeChain token registry curated list for the current network (VECHAIN_NETWORK=mainnet|testnet). Use this to identify official tokens, metadata (decimals, symbol, website), and bridge provenance. Supports optional filtering by symbol or contract address.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Optional: filter by token symbol (case-insensitive exact match) | |
| address | No | Optional: filter by token contract address (0x...) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List of official tokens for the active VeChain network (mainnet/testnet) |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds context about network dependency (VECHAIN_NETWORK) but no contradictions or additional behavioral details beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff: first sentence states purpose and network dependency, second gives usage guidance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given rich annotations, full schema coverage, and existence of output schema (implied), the description is adequate. It covers purpose, usage, and filtering. Minor gap: could clarify if the list is exhaustive or only official tokens, but 'curated' implies official.
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 detailed parameter descriptions. The description redundantly mentions filtering but adds no new meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch' and the resource 'VeChain token registry curated list', distinguishing it from sibling tools like getTokenBalances or getFungibleTokenContracts by emphasizing it's a curated list for the current network.
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 says 'Use this to identify official tokens, metadata, and bridge provenance', providing clear context for when to use. It also mentions optional filtering but lacks explicit when-not or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTransactionByIdIndexer: Transaction by ID (v1)ARead-onlyIdempotent
Get a single decoded transaction (with events) by ID from VeWorld Indexer. Endpoint: /api/v1/transactions/{txId}.
| Name | Required | Description | Default |
|---|---|---|---|
| txId | Yes | The transaction hash to retrieve | |
| expanded | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | A decoded VeChain transaction as returned by the VeWorld Indexer |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint. The description adds value by specifying that the tool returns decoded data with events and the external endpoint, enhancing transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the purpose and the second provides the endpoint. No redundant information, efficiently 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 tool's simplicity (2 parameters, annotations present, output schema exists), the description sufficiently explains what is returned ('decoded transaction with events') and the source. No additional context 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 50% (only txId has a description). The description does not explain the 'expanded' parameter or its behavior. It only indirectly mentions txId via the endpoint URL, failing to add meaning for the optional parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get a single decoded transaction (with events) by ID'. It specifies the resource (transaction) and the action (get), and distinguishes from siblings like 'thorGetTransaction' by mentioning 'decoded (with events)' and the VeWorld Indexer source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when you have a transaction ID and need decoded data with events), but does not explicitly state when not to use or highlight alternatives. The endpoint detail adds context but no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTransactionsIndexer: Transactions by origin or delegator (v1)ARead-only
Query VeWorld Indexer /api/v1/transactions. Provide either 'origin' or 'delegator' address with optional time filters and pagination. Returns decoded events.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| after | No | Return txs at or after this Unix timestamp (seconds) | |
| before | No | Return txs at or before this Unix timestamp (seconds) | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| origin | No | Origin address, the address that initiated the transaction | |
| expanded | No | Include decoded clause outputs/logs for richer results | |
| delegator | No | Delegator address, the address that paid for the transaction | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | List response for transactions endpoints |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the tool returns decoded events and fetches from an external indexer with optional filters and pagination, providing behavioral context beyond what annotations offer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence that efficiently conveys the tool's purpose, source, required inputs, optional inputs, and return type. Every word adds value, and it is well 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 tool's complexity (9 optional parameters, output schema provided), the description is complete enough. It covers the main input categories and return type. It could mention mutual exclusivity of origin and delegator, but overall it suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description's mention of 'origin or delegator address with optional time filters and pagination' does not add significant meaning beyond the schema. It summarizes but does not elaborate on parameter interactions or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (query), the resource (VeWorld Indexer /api/v1/transactions), and key parameters (origin/delegator, time filters, pagination). It distinguishes from siblings like getDelegatedTransactions and getContractTransactions by focusing on origin or delegator address and noting return of decoded 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 when querying by origin or delegator address but does not explicitly differentiate from siblings like getDelegatedTransactions or getContractTransactions. No when-not-to-use or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTransfersForBlockIndexer: Transfers for block (v1)ARead-only
Query VeWorld Indexer /api/v1/transfers/forBlock for all transfers in a block. Required 'blockNumber'. Optional 'tokenAddress' to scope to a specific VIP‑180/721 contract and pagination. Use for 'transfers in block' or 'block activity'.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| blockNumber | Yes | The block number to retrieve | |
| tokenAddress | No | The account address to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds the external API source (VeWorld Indexer) but does not disclose rate limits, latency, or idempotency beyond annotations. Adequate given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences; front-loaded with purpose and key parameters. No redundant or superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All necessary context provided: required parameter, optional filtering, use cases. Output schema exists to detail return structure, so description does not need to cover that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline 3. Description merely restates that blockNumber is required and tokenAddress/pagination are optional without adding new semantics beyond the schema's own 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?
Clearly states action (query transfers), resource (block), and endpoint. Distinguishes from siblings by specifying block-based filtering with optional tokenAddress and pagination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'for transfers in block' or 'block activity'. Does not mention when not to use or contrast with alternative tools like getTransfersOfAccount, but the positive guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTransfersFromIndexer: Transfers from address (outgoing) (v1)ARead-only
Query VeWorld Indexer /api/v1/transfers/from for outgoing transfers. Required 'address' (sender, accepts BOTH VNS names like roisin.vet AND 0x hex addresses). Optional 'tokenAddress' (accepts token symbol like VET, VTHO, B3TR OR 0x hex address) to scope to a specific VIP‑180/ERC-20 contract and pagination. Use for 'outgoing transfers' or 'payments from wallet'. NOTE: This is a directional filter of getTransfersOfAccount - prefer using getTransfersOfAccount unless you specifically need only outgoing transfers.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| address | Yes | Sender wallet address (0x...) or VNS name (*.vet) | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| tokenAddress | No | Token contract address (0x...) or token symbol (VET, VTHO, B3TR, etc.) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds behavioral context: it tells that the tool accepts VNS names and token symbols, and supports pagination. This extra info about input flexibility and pagination goes beyond the schema and annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a front-loaded purpose statement, followed by parameter highlights and usage guidance. It is efficient, covering all necessary points without redundancy. Slightly verbose but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (context signals indicate it exists), the description covers endpoint, parameter formats, usage guidance, and relationship to a sibling tool. It also mentions pagination. No gaps are apparent 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?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining that 'address' accepts VNS names and 'tokenAddress' accepts token symbols, which are not mentioned in the schema descriptions. It also mentions pagination, tying together the page/size/cursor 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 it queries outgoing transfers from the VeWorld Indexer, specifies the endpoint, and identifies required/optional parameters. It also distinguishes from sibling tool getTransfersOfAccount by noting it is a directional filter, and advises preferring the sibling unless only outgoing transfers are needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use ('outgoing transfers', 'payments from wallet') and when-not-to-use ('prefer getTransfersOfAccount unless specifically need only outgoing transfers'). This gives clear decision criteria for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTransfersOfAccountIndexer: List transfers for wallet or token (v1)ARead-only
Query transfer events using VeWorld Indexer /api/v1/transfers. Provide either 'address' (wallet, accepts BOTH VNS names like roisin.vet AND 0x hex addresses) or 'tokenAddress' (accepts token symbol like VET, VTHO, B3TR OR 0x hex address) plus optional pagination. Returns enriched transfers with VNS names and token symbols when available. Use for 'wallet transfers', 'token movements', or 'activity for contract/wallet'.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| address | No | Wallet address (0x...) or VNS name (*.vet) | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| tokenAddress | No | Token contract address (0x...) or token symbol (VET, VTHO, B3TR, etc.) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds that results are enriched with VNS names and token symbols, but does not disclose other behaviors like rate limits or authentication. The description complements annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main action, and contains no extraneous information. Every sentence adds value: the first states purpose and parameters, the second enriches with output details and use cases.
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, optional pagination, output schema), the description covers purpose, parameter usage, enrichment, and use cases. It implies mutual exclusivity of address and tokenAddress but does not explicitly state it, leaving a minor gap. Overall, it provides sufficient context for an AI agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are described in the schema (100% coverage), and the description adds valuable context beyond the schema, such as that address accepts VNS names and tokenAddress accepts symbols. This helps the agent understand valid inputs without extra inference.
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 queries transfer events using the VeWorld Indexer, lists parameters and accepted formats, and specifies use cases like 'wallet transfers' and 'token movements'. However, it does not explicitly differentiate from sibling tools like getTransfersFrom and getTransfersTo, which serve similar 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 provides clear guidance on when to use the tool ('wallet transfers', 'token movements', 'activity for contract/wallet') and explains how to use it (providing either address or tokenAddress). It does not include exclusions or mention alternative tools, but the context is sufficient for basic usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTransfersToIndexer: Transfers to address (incoming) (v1)ARead-only
Query VeWorld Indexer /api/v1/transfers/to for incoming transfers. Required 'address' (recipient, accepts BOTH VNS names like roisin.vet AND 0x hex addresses). Optional 'tokenAddress' (accepts token symbol like VET, VTHO, B3TR OR 0x hex address) to scope to a specific VIP‑180/ERC-20 contract and pagination. Use for 'incoming transfers' or 'receipts to wallet'. NOTE: This is a directional filter of getTransfersOfAccount - prefer using getTransfersOfAccount unless you specifically need only incoming transfers.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| address | Yes | Recipient wallet address (0x...) or VNS name (*.vet) | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| tokenAddress | No | Token contract address (0x...) or token symbol (VET, VTHO, B3TR, etc.) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read operation. The description adds valuable behavioral details: it accepts both VNS names and hex addresses for the 'address' parameter, and token symbols for 'tokenAddress'. It also discloses that it's a directional filter of getTransfersOfAccount. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a note, all front-loaded with essential information. Every sentence adds value: the first states the purpose, the second adds parameter details, and the note provides usage guidance. No redundant or vague statements.
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 6 parameters, an output schema, and is a query tool, the description is fairly complete. It covers purpose, usage, key parameter details, and relationship to siblings. It could optionally mention pagination defaults, but the schema already documents page/size/cursor. The existence of an output schema reduces the need to describe return values. Overall 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%, so baseline is 3. The description adds meaning beyond the schema by clarifying that the 'address' parameter accepts both VNS names and 0x hex addresses, and that 'tokenAddress' accepts token symbols like VET, VTHO, B3TR in addition to hex addresses. This helps the agent understand valid input formats.
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 explicitly states the tool queries the VeWorld Indexer for incoming transfers, using a specific endpoint. It clearly states the resource (transfers to address) and the action (query). It also distinguishes from getTransfersOfAccount by noting it's a directional filter, which differentiates it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use for 'incoming transfers' or 'receipts to wallet'.' It also gives a strong preference for the broader tool: 'prefer using getTransfersOfAccount unless you specifically need only incoming transfers.' This clearly tells the agent when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getValidatorBlockRewardsIndexer: Validator block rewards (v1)ARead-onlyIdempotent
Fetch VTHO rewards per block via /api/v1/validators/blocks. Returns blockReward (base), priorityReward (mempool priority fees), total, and the split into delegatorRewards and validatorRewards. Filter by blockNumber, validator, and status. Use status=VALIDATED for produced blocks or status=MISSED for blocks the validator missed. Supports pagination and sort direction.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| status | No | Filter by block status ('VALIDATED' or 'MISSED') | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| validator | No | Optional validator address filter | |
| blockNumber | No | Optional specific block number to query |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint true, and destructiveHint false. The description adds detail about the return structure (split into delegator/validator rewards) and the meaning of status filters. This context is beyond the annotations, enhancing transparency without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with verb and resource. Every sentence provides essential information: endpoint, return fields, and filtering options. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no required parameters, 100% schema coverage, an output schema, and thorough annotations, the description covers purpose, filters, pagination, and return data. It is complete for a read-only, idempotent tool with good structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with well-described parameters. The description adds value by explaining the endpoint context and providing usage examples for the status parameter (status=VALIDATED for produced blocks, MISSED for missed). This goes beyond the schema's enum descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch VTHO rewards per block' and specifies the endpoint. It lists return fields (blockReward, priorityReward, total, delegatorRewards, validatorRewards) and filters (blockNumber, validator, status). This distinguishes it from sibling tools like getValidatorDelegations which handle delegations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use (for per-block rewards) and how to filter by status (VALIDATED vs MISSED), pagination, and sort direction. It implicitly differentiates from other validator tools but does not explicitly state when not to use or provide direct alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getValidatorDelegationsIndexer: Validator delegations (v1)ARead-onlyIdempotent
Retrieve delegation records via /api/v1/validators/delegations. Filter by validator, tokenId, and one or more statuses. Supports pagination and sort direction. Get information on delegations to a validator and the Stargate NFTs that are delegated to the validator
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| tokenId | No | Filter by specific tokenId | |
| statuses | No | Filter by one or more delegation statuses | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| validator | No | Filter delegations by validator address |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint, so the description doesn't need to repeat safety traits. It adds useful context: the API endpoint, supported pagination, and that it returns both delegation and NFT information. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with the core action and endpoint. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 optional parameters, pagination, sort, and existence of output schema, the description covers all key aspects: what it retrieves, filters, pagination, sort, and the nature of returned data. Could mention that all parameters are optional, but schema handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The description summarizes the filtering options (validator, tokenId, statuses) but adds no new meaning 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 uses specific verbs ('Retrieve delegation records') and names the exact endpoint, clearly distinguishing this tool from siblings like getValidatorBlockRewards. It also specifies what data is returned (delegations and associated Stargate NFTs).
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 getStargateNftHoldersByPeriod or other delegation-related tools. With many siblings, explicit when-to-use or exclusions would be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getValidatorMissedPercentageIndexer: Validator missed blocks percentage (v1)ARead-onlyIdempotent
Calculate percentage of missed blocks for a validator in a block range via /api/v1/validators/blocks/missed/{validator}. Provide startBlock (inclusive) and endBlock (inclusive). Returns a percentage (0..100).
| Name | Required | Description | Default |
|---|---|---|---|
| endBlock | No | Optional end block, inclusive; defaults to best/latest | |
| validator | Yes | Validator address (path parameter) | |
| startBlock | Yes | Start block, inclusive |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | Percentage of missed blocks in the given range (0..100, not a decimal) |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false) already indicate safe read operation. Description adds context about block range and output percentage, consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences efficiently convey purpose, parameters, and output. No redundancy or fluff.
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, the description covers purpose, parameters, and output. Output schema exists, so return details are adequately handled.
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 description adds useful detail: endBlock defaults to best/latest. This provides meaning beyond the schema's 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?
Description clearly states the tool calculates missed blocks percentage for a validator in a block range, with specific endpoint and result format. It distinguishes from sibling tools like getValidatorBlockRewards by focusing on missed blocks percentage.
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?
Description specifies to provide startBlock and endBlock (inclusive) and notes endBlock defaults to best/latest. It lacks explicit guidance on when to use this tool versus alternatives, but the purpose is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getValidatorRegistryValidator Registry: list validator metadata (mainnet/testnet)ARead-onlyIdempotent
Fetch validator metadata (name, location, description, website, logo) for the current network. Data source: validator-hub. Supports optional filtering by address.
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Optional: filter by validator address |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds the data source (validator-hub) and returned fields, but does not disclose other behavioral traits beyond what annotations provide. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the main purpose and include relevant details (data source, filtering). No wasted 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?
With annotations covering safety and idempotency, and an output schema present (indicated but not shown), the description is sufficient for a simple read-only tool. It could mention that filtered vs unfiltered returns differ, but not essential.
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% (only address parameter). The description merely restates the optional filter ability already present in the schema. No additional meaning is added.
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 'Fetch validator metadata (name, location, description, website, logo) for the current network' and specifies the data source 'validator-hub'. The title reinforces it's for mainnet/testnet, distinguishing it from siblings like getValidators or getValidatorBlockRewards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Supports optional filtering by address' and implies use for fetching registry metadata. However, it does not explicitly state when to use this tool vs alternatives like getValidators (which may differ in scope).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getValidatorsIndexer: Validators (v1)ARead-onlyIdempotent
Retrieve validator statistics via /api/v1/validators for Stargate NFT delegation decisions and validator performance. IMPORTANT: Look at all no status filter when getting validators when getting nft yields, when getting current validator not nft yields look at status=ACTIVE
KEY METRICS:
nftYieldsIfDelegatedNextCycle: Projected APY (%) for each Stargate NFT level in the next cycle if delegated to this validator (use this for delegation decisions)
nftYields: Current-cycle APY (%) for each Stargate NFT level already delegated to this validator
blockProbability: Validator's chance of producing blocks (higher = more rewards)
percentageOffline: Validator uptime reliability (lower = better)
delegatorTvl: Total USD value delegated by Stargate NFTs (higher = more competition)
FILTERS:
validatorId: Filter by specific validator address
endorser: Filter by endorser address
status: NONE, QUEUED, ACTIVE, EXITED, EXITING - only filter by ACTIVE for currently operating validators and all when getting nft yields
SORTING (sortBy parameter):
For NFT delegation: Use 'nft:' (e.g., 'nft:Dawn', 'nft:Thunder') to sort by APY IMPORTANT: When sorting by NFT yield, filter by status=ACTIVE or include QUEUED validators
Other options: validatorTvl, totalTvl, blockProbability, delegatorTvl
PAGINATION: Supports page, size, cursor, and direction (ASC/DESC)
VALIDATOR RECOMMENDATION GUIDELINES:
Primary metric: nftYieldsIfDelegatedNextCycle[level] - this is APY percentage, NOT absolute VTHO
Sort by the user's NFT level (e.g., sortBy='nft:Dawn' for Dawn NFTs)
Filter to status=ACTIVE for currently operating validators
Consider percentageOffline as secondary factor (reject if >30%)
Present top 3-5 options with APY clearly labeled as percentage
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| sortBy | No | Sort field for the results | |
| status | No | Filter by validator status | |
| endorser | No | Filter by endorser address | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| validatorId | No | Filter by validator ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds significant behavioral context: the exact API endpoint, key metrics (nftYields, blockProbability, etc.), pagination support, and interpretation guidance. It does not contradict annotations, and the added detail is valuable beyond the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (KEY METRICS, FILTERS, SORTING, PAGINATION, RECOMMENDATION GUIDELINES) and front-loaded with the purpose and an important note. It is somewhat lengthy but every section serves a purpose. Minor grammatical issues (e.g., 'all no status filter') slightly hinder 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 tool's complexity (8 parameters, output schema, multiple enums, and domain-specific NFT yield logic), the description covers all necessary aspects: metrics explanation, filter/sort options, pagination, and even recommendation criteria. It is complete enough for an AI agent to correctly select and invoke the tool for delegation decisions.
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 still adds substantial meaning by explaining each parameter's purpose in context: e.g., status filter conditions, sortBy options for NFT levels, pagination mechanics, and endpoint-specific constraints. This is a model example of enriching parameters beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves validator statistics via a specific API endpoint for Stargate NFT delegation decisions and validator performance. It distinguishes itself from sibling tools like getValidatorBlockRewards by focusing on NFT yield metrics and delegation 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?
It provides explicit when-to-use context for NFT delegation decisions, with detailed filtering and sorting instructions. It includes recommendation guidelines and explains status filter usage (e.g., using 'ACTIVE' for current validators, no filter for NFT yields). However, it does not explicitly compare with alternative tools, which is minor given the specificity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getVeBetterDaoAppsVeBetterDAO: list xApps with on-chain status, roles and IPFS metadataARead-onlyIdempotent
List VeBetterDAO xApps directly from the on-chain X2EarnApps registry. For each app returns: id, on-chain name, owner (teamWalletAddress), createdAtTimestamp, roles (admin, moderators, creators, rewardDistributors), endorsement status (isEndorsed, endorsementScore vs threshold, isUnendorsed/grace period, isBlacklisted, isEligibleNow), whether the app is active in the current XAllocationVoting round, and IPFS metadata (description, website, logo, banner, social links, categories, distribution_strategy). Supports filtering to a single appId, to apps active in the current round, and by category (array of category ids, case-insensitive, OR semantics — sourced from IPFS metadata). Uses the VeChain SDK multicall for efficiency.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | No | Optional bytes32 app id; if provided, only that app is returned | |
| categories | No | Optional array of category ids to filter apps by (case-insensitive, OR semantics). Categories live in the IPFS metadata, so includeMetadata is forced to true when this is set. Known mainnet categories: nutrition, plastic-waste-recycling, fitness-wellness, renewable-energy-efficiency, sustainable-shopping, green-mobility-travel, pets, education-learning, green-finance-defi, others (deprecated: social-community-activism, carbon-footprint). | |
| includeRoles | No | Fetch admin/moderators/creators/rewardDistributors per app | |
| includeMetadata | No | Fetch off-chain IPFS metadata (description, logo, socials, categories...) | |
| includeEndorsers | No | Fetch endorser addresses per app (extra on-chain calls) | |
| includeUnendorsed | No | Include apps currently in grace period (lost endorsements) | |
| metadataConcurrency | No | Concurrency limit for IPFS metadata fetches | |
| onlyActiveInCurrentRound | No | Return only apps included in the current round of voting |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds valuable context: using multicall for efficiency, forcing includeMetadata when categories are present, and detailing IPFS metadata fetching behavior. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is thoroughly detailed yet well-structured, starting with the primary purpose, then listing returns, followed by filtering options. Every sentence adds value, and it is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description covers all necessary behavioral details: multi-call efficiency, filtering logic, IPFS metadata handling, and parameter interactions. No gaps are apparent.
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%, but the description adds significant meaning: explains categories OR semantics, concurrency limits, defaults, and the dependency between categories and metadata. It clarifies behavior 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 'List VeBetterDAO xApps directly from the on-chain X2EarnApps registry' and enumerates all returned fields. It differentiates from siblings like getB3TRAppsLeaderboard and getAppHubApps by focusing on on-chain registry data with roles and IPFS metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing xApps with various filters but lacks explicit when-to-use/alternatives guidance. It does not mention when not to use this tool or contrast with siblings, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getVevoteHistoricProposalsVeVote: legacy historic proposalsARead-onlyIdempotent
Query legacy VeVote (Stakeholder and Steering Committee Governance contracts) historic proposals from /api/v1/vevote/historic-proposals. By default excludes test proposals (testProposals=false). Supports filtering by proposalId or legacy contractAddress and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| proposalId | No | Filter by legacy proposal id | |
| testProposals | No | Include test proposals when true | |
| contractAddress | No | Filter by legacy smart contract address, there are two main contracts for governance: 0xa6416a72f816d3a69f33d0814700545c8e3fe4be (Stakeholder Governance) and 0x7e54f0790153647ec0651c35ced28171adb5d44a (Steering Committee Governance) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so safety is clear. The description adds the default testProposals=false and filtering behavior, which is useful context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the main purpose and includes key details about defaults, filtering, and pagination. No unnecessary 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?
With 7 parameters fully described in schema, output schema present, and annotations covering safety, the description is complete. It explains default behavior and filtering options, covering all necessary context for a query 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%, but description adds meaning by stating default for testProposals, elaborating on contractAddress with specific legacy contract addresses, and explaining pagination parameters. This adds value 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 it queries legacy VeVote historic proposals from a specific API endpoint, with default exclusion of test proposals, and mentions filtering and pagination. It distinguishes from siblings like getVevoteProposalResults (likely for current proposals).
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 context for when to use (legacy historic proposals) but does not explicitly mention when not to use or alternatives. However, given the sibling list, an agent can infer use cases. Minor improvement could be adding a note about using getVevoteProposalResults for current proposals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getVevoteProposalResultsVeVote: proposal results (current governance)ARead-onlyIdempotent
Fetch aggregated voting results per support from /api/v1/vevote/proposal/results. Optional filters: proposalId, support; supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based results page number (0 is the first page) | |
| size | No | Results per page (1..150); API default is typically 20 | |
| cursor | No | Opaque cursor for fetching the next page when provided by the API | |
| support | No | Filter by support | |
| direction | No | Sort direction for time-based queries; defaults to 'DESC' (newest first) | |
| proposalId | No | Proposal ID to filter by |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint as false, indicating a safe, idempotent operation. The description adds pagination behavior and the API endpoint, which are not fully captured by annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with all essential information: action, endpoint, filters, and pagination. No redundant words; front-loaded with the primary purpose. Highly 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?
With a comprehensive input schema, rich annotations, and an output schema, the description is nearly complete. It covers the core functionality but could briefly note that results are for current governance (as hinted by the title) to further aid 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% with meaningful descriptions for all 6 parameters. The description adds a high-level grouping ('Optional filters: proposalId, support; supports pagination') but does not introduce new meaning beyond the schema, justifying the 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 clearly states the action ('Fetch aggregated voting results per support') and identifies the API endpoint. The title adds 'current governance' which distinguishes from historic proposals (e.g., getVevoteHistoricProposals), but the description itself does not explicitly mention 'current', leaving subtle differentiation to the title.
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 lists optional filters and pagination support, implying usage for retrieving filtered voting results. However, it does not explicitly contrast with sibling tools like getVevoteHistoricProposals or getB3TRProposalsResults, nor does it provide when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listKnownContractsList contracts available to callContract / buildContractTransactionARead-onlyIdempotent
List the contracts the MCP server can talk to via the generic callContract and buildContractTransaction tools. For each entry returns the registry name (use this in clause.name), the on-chain addresses for mainnet and testnet, how many read / write / event fragments the ABI exposes, and whether an explicit address is required. The full ABI is NOT included to keep the context small — fetch it with getContractAbi when needed. Available categories: vebetterdao (B3TR, VOT3, governance, X2EarnApps, …), stargate (Stargate, StargateNFT, StargateDelegation, NodeManagement) and standard (erc20, erc721).
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter entries by category |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds value by explaining that the full ABI is intentionally omitted to keep context small, and provides category details that aid decision-making.
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?
Efficient and well-structured: starts with purpose, then details output contents, mentions omission of ABI and referral to getContractAbi, then lists categories. Every sentence adds value without redundancy.
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 task (listing contracts with one optional filter) and the presence of an output schema, the description fully equips the agent to decide when to call this tool and what to expect. References sibling tool getContractAbi for further needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one optional parameter (category) with schema coverage 100%. The description goes beyond the schema by listing the enum values and giving examples of contracts within each category (e.g., vebetterdao includes B3TR, VOT3, etc.), which helps the agent understand the parameter's effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the purpose: list contracts available for use with callContract/buildContractTransaction. Specifies returned fields (registry name, on-chain addresses, fragment counts, address requirement) and differentiates from getContractAbi by noting that full ABI is excluded.
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?
Explains when to use (to see available contracts before using generic tools) and mentions getContractAbi as the tool for full ABI. Does not explicitly state when not to use, but context implies it's for overview, not for fetching ABI.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchDiscourseForumSearch Discourse Forum (Optional)ARead-onlyIdempotent
Search the VeBetterDAO Discourse forum (vechain.discourse.group) for topics, discussions, and community posts. Returns 10 results by default. OPTIONAL FEATURE: Requires Discourse MCP server running separately: npx -y @discourse/mcp@latest --transport http --site https://vechain.discourse.group. If not available, propose manually visiting forum links found in proposal descriptions. USE CASE: If a proposal's IPFS description doesn't contain a direct Discourse link, search by proposal ID or title to find related forum discussions.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for the forum | |
| max_results | No | Optional: Override default to get more/fewer results (1-50, default: 10) | |
| with_private | No | Optional: Include private topics (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral context beyond annotations: default 10 results, max 50, optional private topics, and server requirement. Annotations cover safety (readOnlyHint, etc.) and description enhances transparency without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is reasonably concise but includes setup instructions and use case. Front-loaded with main purpose. Could be slightly more compact but all sentences are 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?
For a search tool with 3 parameters, no output schema, and rich annotations, the description is highly complete: it explains purpose, usage scenario, setup requirements, and parameter defaults, leaving no significant 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?
Input schema covers all 3 parameters with descriptions. Description adds the default of 10 results for max_results and usage context for with_private, providing value beyond the schema's static 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?
Description clearly states it searches the VeBetterDAO Discourse forum for topics, discussions, and community posts. It specifies the site and default returns, distinguishing from sibling tools like getDiscoursePost or getDiscourseTopic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use: if a proposal's IPFS description lacks a direct Discourse link, search by proposal ID or title. Also provides setup instructions and fallback suggestion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchDocsStargateSearch Stargate DocumentationCRead-onlyIdempotent
Search the Stargate documentation
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for documentation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds no behavioral context (e.g., result format, pagination, scope) beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacking in useful information. It could be expanded slightly to add value 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?
Given the tool's simplicity and the presence of annotations, the description is minimal and does not explain the scope of documentation, search behavior, or return format. Incomplete for an agent unfamiliar with the system.
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 a single required 'query' parameter described. Description adds no extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches Stargate documentation (verb+resource). However, it does not distinguish from sibling tools like searchDocsVechain, searchDocsVechainKit, etc., which have similar descriptions.
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 similar searchDocs tools. No exclusions or alternative suggestions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchDocsVebetterDaoSearch VeBetterDao DocumentationBRead-onlyIdempotent
Search the VeBetterDao documentation
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for documentation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds no behavioral details beyond the imperative 'search', such as what is returned or how results are formatted. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the purpose without any redundancy or unnecessary 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?
While the tool is simple with one parameter and no output schema, the description is marginally complete. It could mention that it returns relevant documentation snippets or links, but the simplicity and annotations make it adequate.
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 full coverage (100%) for the single parameter 'query', with a description 'Search query for documentation'. The tool description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and the specific resource 'VeBetterDao documentation'. The title reinforces this, and among sibling tools like searchDocsVechain and searchDocsStargate, this tool is uniquely identifiable for VeBetterDao documentation.
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 other documentation search tools (e.g., searchDocsVechain, searchDocsStargate) or searchDiscourseForum. 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.
searchDocsVechainSearch VeChain DocumentationARead-onlyIdempotent
Search the VeChain documentation
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for documentation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds no behavioral details beyond stating the basic function, which is acceptable given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is direct and contains no extraneous information. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with one parameter and rich annotations, the description is complete enough. It could mention output format but is not required; current clarity suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description in the schema. The tool 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 'Search the VeChain documentation' clearly states the verb (search) and the resource (VeChain documentation), distinguishing it from sibling search tools like searchDocsVechainKit, searchDocsVevote, 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 explicit guidance on when to use this tool versus alternatives such as searchDocsVechainKit or searchDocsVevote. Usage is implied by the resource name, but 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.
searchDocsVechainKitSearch VeChain Kit DocumentationBRead-onlyIdempotent
Search the VeChain Kit documentation
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for documentation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds no additional behavioral context such as authentication needs, rate limits, or result handling beyond what annotations convey.
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, front-loaded with the essential action and resource, with no unnecessary 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 description is minimally adequate for a simple search tool with one parameter and output schema absent. However, it lacks details about search scope, result format, or pagination, which could improve completeness.
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% (one parameter with description 'Search query for documentation'). The description does not add extra meaning about the parameter's format, constraints, or expected content, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Search the VeChain Kit documentation' clearly states the verb (search) and resource (VeChain Kit documentation), and it distinguishes from sibling tools like searchDocsVechain by specifying 'Kit'.
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 specify when to use this tool versus alternatives, nor does it 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.
searchDocsVevoteSearch VeVote DocumentationBRead-onlyIdempotent
Search the VeVote documentation
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for documentation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds no additional behavioral context (e.g., rate limits, result format, pagination), so it provides no value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is front-loaded and perfectly concise for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, annotations present), the description is adequate but does not mention the nature of results or any other context, which would be helpful since there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'query', and the description does not add any meaning beyond the schema's description. 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 'Search the VeVote documentation' clearly states the verb (search) and the resource (VeVote documentation), distinguishing it from sibling searchDocs tools for other documentation sets.
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 description does not mention when to choose searchDocsVevote over searchDocsVechain, searchDocsStargate, etc.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thorDecodeEventThor Decode EventBRead-onlyIdempotent
Decode an event emitted by a contract on Thor network
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The data to decode as hex string starting with 0x | |
| topics | Yes | The topics to decode as hex string starting with 0x | |
| address | Yes | The address of the contract that emitted the event |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds no additional behavioral context, e.g., what if data is invalid or how ABI is resolved.
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, 10 words, no fluff. 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?
Output schema exists, so return value documentation is covered. However, description lacks context on decoding process, ABI requirement, or edge cases, making it minimally adequate.
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 descriptions cover 100% of parameters. Tool description does not add extra meaning beyond what schema already provides; baseline score 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?
Description clearly states the action (decode), the resource (event emitted by a contract), and the network (Thor). It is specific and distinct from sibling tools like callContract or getContractAbi.
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 vs alternatives. Does not specify prerequisites (e.g., need ABI) or context for decoding events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thorGetAccountThor Get AccountARead-only
Get account details from Thor network
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Thor address (0x...) or VNS (.vet) name |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description's claim of 'Get account details' is consistent but adds no new behavioral insight. With annotations, the burden is lower, and the description does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence (6 words) that efficiently conveys the tool's purpose. It is front-loaded with the verb and resource, with no unnecessary 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?
Given the presence of both input schema and output schema, the description need not explain return values. The simple getter operation is adequately covered for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the 'address' parameter with patterns and types (100% coverage). The description adds no further meaning beyond 'Get account details', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'account details' from the Thor network. It is specific and distinguishable from sibling tools which retrieve different entities (e.g., thorGetBlock, thorGetTransaction).
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 thorGetBlock or getHistoryOfAccount. The description does not mention prerequisites or scenarios, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thorGetBlockThor Get BlockCRead-onlyIdempotent
Get block details from Thor network
| Name | Required | Description | Default |
|---|---|---|---|
| blockRevision | Yes | The block number, label or id to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds no additional behavioral context, such as response structure or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one sentence) but under-informative. It front-loads the core purpose but lacks necessary details, giving a neutral score.
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 getter with an output schema and comprehensive annotations, the description is minimally adequate but misses opportunities to explain usage context or distinctions from similar tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with a clear description for blockRevision. The tool description adds no extra 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 verb 'Get' and resource 'block details' from 'Thor network', distinguishing it from sibling tools like thorGetTransaction. However, it is somewhat generic about what 'details' entails.
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 thorGetTransaction or getTransactions. The description lacks any context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thorGetTransactionThor Get TransactionCRead-onlyIdempotent
Get transaction details from Thor network
| Name | Required | Description | Default |
|---|---|---|---|
| transactionId | Yes | The transaction hash to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds no additional behavioral context such as error handling, authentication needs, or rate limits, providing minimal extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no fluff. However, it is slightly too brief and omits useful context that could fit without harming 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?
The tool is simple with one parameter and annotations, so the description is partially adequate. However, missing usage guidelines and behavioral details make it incomplete for an agent to confidently select it from many similar siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the parameter 'transactionId' is well-described in the schema. The tool description does not add extra meaning beyond what the schema already provides, earning a baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the clear verb 'Get' and identifies the resource as 'transaction details from Thor network'. It is specific but does not differentiate from sibling tools like 'getTransactionById' or 'getTransactions', which could cause 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?
The description provides no guidance on when to use this tool versus alternatives. Given the many sibling tools with similar purposes (e.g., 'getTransactionById', 'getTransactions'), the lack of usage context is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with detailed descriptions that prevent ambiguity. Even similar tools like getTransfersOfAccount, getTransfersFrom, getTransfersTo are explicitly differentiated by direction. The high number of tools is manageable because each targets a unique endpoint or action.
Naming follows a consistent verb_noun pattern (e.g., getStargateNftHoldersTotal, callContract). Minor deviations exist such as thorGetBlock using a 'thor' prefix and 'getHistoryOfAccount' not matching the 'historic' pattern used elsewhere, but overall it's predictable.
With 76 tools, the server is excessively large for a typical MCP server. While it covers many subdomains, the count overwhelms the purpose and could be consolidated (e.g., many Stargate time-series tools could be combined with parameters). This makes it harder for agents to navigate.
The server covers almost all aspects of the VeChain ecosystem: on-chain queries, staking, governance, token transfers, validators, and documentation. Minor gaps include lack of proposal creation tools and reliance on optional Discourse tools, but core workflows are well-supported.
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
Search VeChain documentation, query on-chain data, and fetch fee suggestions with direct links to…
Provide AI agents and automation tools with contextual access to blockchain data including balance…
Carbon Voice MCP serves as a bridge that connects AI assistants like ChatGPT, Claude, and Cursor to a user's Carbon Voice account, turning voice messages and conversations into a private, on-demand knowledge base. It provides 28 specialized tools for comprehensive voice messaging management, including creating and sending messages, accessing conversation history with instant transcription, running AI actions (summarization, TLDR generation, meeting notes), and managing workspace collaboration through folders, contacts, and team communications.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with the Hive blockchain through the Model Context Protocol, allowing for account info retrieval, content reading/creation, cryptocurrency transfers, and cryptographic operations.17215ISC
- AlicenseBqualityDmaintenanceEnables interaction with the VeChain blockchain network, providing access to documentation search, Thor REST API queries for accounts/transactions/blocks, and wallet management with cryptographic signing capabilities for both Mainnet and Testnet.205MIT
- FlicenseNot gradedqualityDmaintenanceProvides AI assistants with up-to-date Vue ecosystem documentation through the Model Context Protocol, enabling semantic search, API lookup, and cross-framework references.11
- FlicenseCqualityDmaintenanceEnables Claude Desktop to interact with the VeChain blockchain through natural language commands for token transfers, DEX trading, cross-chain bridges, NFT management, and VeBetter DAO operations.934
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/vechain/vechain-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server