Datai MCP Server
Enables AI agents to retrieve a wallet's token balances and DeFi positions on the Binance Smart Chain (BSC).
Enables AI agents to retrieve a wallet's token balances and DeFi positions on the Ethereum blockchain.
Enables AI agents to retrieve a wallet's token balances and DeFi positions on the Optimism network.
Enables AI agents to retrieve a wallet's token balances and DeFi positions on the Polygon (Matic) network.
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., "@Datai MCP Servershow all DeFi positions for 0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
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.
Datai MCP Server

Datai MCP lets your AI agent understand a wallet’s DeFi, token, and NFT holdings in seconds.
Whether you're building with Eliza OS, Cursor, or any local agent stack — simply plug in a wallet address, and the MCP server delivers clean, real-time context powered by the Datai API.
Perfect for AI agents, LLM plugins, and devs needing agentic access to wallet data.
Datai MCP is a TypeScript-based MCP server that enables seamless interaction with a wallet's portfolio data through AI-powered interfaces, powered by the same API behind Datai Network's analytics engine.
Features
8 Comprehensive DeFi Tools: Complete coverage of a wallet's DeFi positions and token balance analysis
Multi-Chain Support: Ethereum, Arbitrum, Polygon, Avalanche, BSC, Base, Optimism, and more to come
Multi-Protocol Support – Hundreds of DeFi protocols
Fast Setup – Just plug in your wallet address, and the MCP delivers fresh on-chain data
Built for AI Devs – Integrates with any MCP-ready agent framework (Eliza, Cursor, Claude)
Real-Time Data – Powered by Datai’s API wallet data pipeline
Debug-Friendly – Truncated responses for dev testing and memory-safe exploration
Error Handling: Comprehensive error management and validation
Performance Monitoring: Request timing and execution tracking
Related MCP server: Zerion Hosted MCP
Example Use Case: Building an AI Wallet Copilot
You're creating an AI agent that helps users understand their crypto portfolio. With Datai MCP:
Your user connects their wallet.
Your agent uses
get_all_defi_positionsto fetch their DeFi strategy.The agent summarizes key holdings, flags risk exposure, and recommends actions.
All without you needing to build a blockchain indexer.
Tools Available
Retrieve a wallet's portfolio data using the following tools:
Tool | Description | Parameters |
| Get all DeFi positions across all supported chains |
|
| Get DeFi positions for a specific blockchain |
|
| Get DeFi positions across multiple chains |
|
| Get DeFi positions for a specific protocol |
|
| Get DeFi protocol balances by chain |
|
| Get overall balance across all chains |
|
| Get overall balance for a specific chain |
|
| Get token balances for a specific chain |
|
Tip: Use
get_all_defi_positionsfor a full portfolio scan, or chain/protocol-specific tools for targeted prompts.
Supported Chains
eth- Ethereumarb- Arbitrummatic- Polygonavax- Avalanchebsc- Binance Smart Chainbase- Baseop- OptimismAnd more to come... access Datai's supported chains list
Supported Protocols
Uniswap (V2, V3, V4)
Aave (V2, V3)
Compound
Balancer
SushiSwap
Curve
MakerDAO
And many more... access Datai's supported protocols list
Integration with Cursor
To connect to the MCP server from Cursor:
Open Cursor and go to Settings (gear icon in the top right)
Click on "MCP" in the left sidebar
Click "Add new global MCP server"
Enter the following configuration:
Local Development Configuration
{
"mcpServers": {
"datai-fastmcp-server-local": {
"command": "node",
"args": ["/path/to/your/datai-mcp/dist/index.js"],
"env": {
"DATAI_API_KEY": "your_api_key_here",
"DATAI_LIMIT": "1",
"DATAI_DEBUG_TRUNCATE": "true",
"DATAI_CONNECTION_TIMEOUT": "130000",
"DATAI_RESPONSE_TIMEOUT": "90000",
"PORT": "3099",
"DEBUG": "true",
"NODE_ENV": "production",
"MCP_DISABLE_PINGS": "true"
}
}
}
}Production Configuration (NPX - Coming Soon)
{
"mcpServers": {
"datai-fastmcp-server": {
"command": "npx",
"args": ["-y", "datai-mcp-server@1.0.3"],
"env": {
"DATAI_API_KEY": "your_api_key_here",
"DATAI_LIMIT": "1",
"DATAI_DEBUG_TRUNCATE": "true",
"DATAI_CONNECTION_TIMEOUT": "130000",
"DATAI_RESPONSE_TIMEOUT": "90000",
"PORT": "3099",
"DEBUG": "true",
"NODE_ENV": "production",
"MCP_DISABLE_PINGS": "true"
}
}
}
}Environment Variables
Variable | Description | Default | Required |
| Your Datai API key | - | ✅ Yes |
| API response limit (1-100) |
| No |
| Enable data truncation for debugging |
| No |
| Connection timeout in ms |
| No |
| Response timeout in ms |
| No |
| Enable debug logging |
| No |
| Server port |
| No |
Debug Mode
When DATAI_DEBUG_TRUNCATE is set to "true", the server will intelligently truncate API responses to prevent memory issues during development and testing. This provides:
Minimal Output: Reduces 1000+ line responses to ~15 lines
Structure Preservation: Shows data types, array lengths, object keys
Sample Data: First few items/values for verification
Clear Status: Indicates when truncation is active
Example truncated output:
{
"__debug_truncated": true,
"__summary": {
"type": "array",
"length": 25,
"item_types": ["object"],
"first_item_keys": ["chain", "name", "commonName", "logo", "site"]
},
"__sample_data": {
"chain": "eth",
"name": "uniswap3",
"commonName": "Uniswap V3"
},
"__message": "✅ Tool working - data truncated for debugging"
}Integration with Claude Desktop
To connect to the MCP server from Claude Desktop:
Open Claude Desktop and go to Settings
Click on "Developer" in the left sidebar
Click the "Edit Config" Button
Add the configuration to the
claude_desktop_config.jsonfileSave the file and restart Claude Desktop
Local Development
Prerequisites
Node.js v18 or higher
Datai API key - sign up here to obtain your API key, email address required
Quick Start
Clone the repository:
git clone https://github.com/Datai-Network/datai-fastmcp-server.git
cd datai-fastmcp-serverInstall dependencies:
npm installBuild the project:
npm run buildConfigure your MCP client with the local configuration shown above
Start using the tools in your MCP-compatible client!
Available Scripts
npm run build: Build the TypeScript projectnpm run dev: Build and watch for changesnpm run test: Run test suite (coming soon)
API Integration
This server integrates with the Datai API to provide real-time wallet portfolio data:
Base URL:
https://api-v1.mymerlin.ioAuthentication: API key-based
Rate Limiting: Configurable via
DATAI_LIMITTimeout Handling: Configurable connection and response timeouts
Error Handling: Comprehensive error transformation and logging
Sign up here to obtain your Datai API Key, email address required.
Security Considerations
API Key Protection: Never commit API keys to version control
Environment Variables: Use secure environment variable management
Input Validation: All inputs are validated using Zod schemas
Error Sanitization: Sensitive information is filtered from error messages
Timeout Protection: Prevents hanging requests with configurable timeouts
Important Note on Response Size and Agent Compatibility
The Datai MCP is designed to enrich AI agents with real-time wallet portfolio data (token balances, DeFi positions). However, certain wallets can generate very large responses, especially when:
Holding dozens or hundreds of tokens
Engaging with multiple DeFi protocols
Using many chains simultaneously
Potential Issues for AI Agents
As of this version, responses are not summarized. The full dataset is returned by default, unless truncated. This may lead to issues in agent environments, such as:
Exceeding LLM context limits (resulting in cut-off or ignored data)
Slower performance or longer reasoning time
Memory or token quota overruns in hosted environments
Confusing or degraded agent behavior due to input overload
Recommendations
Until summarization and modular querying are available, we recommend:
Using lightweight wallets for testing and debugging
Manually filtering or summarizing MCP responses before injecting into your agent
Keeping response size in mind when designing prompts or managing memory
Opening an issue or contacting us if you'd like early access to summary endpoints
We are actively improving the agent compatibility layer - including modular endpoints and data summarization options in upcoming releases.
Contributing
We welcome contributions! Please ensure:
All code follows TypeScript best practices
Comprehensive error handling is implemented
Input validation is present for all tools
Logging is FastMCP compliant
Tests are included for new features
License
This project is licensed under the MIT License - see the LICENSE file for details.
About Datai
Datai is building the agentic data layer for Web3. We provide high-quality, real-time data pipelines powering agents, AI copilots, and smart protocols. The Datai MCP is one step in our journey to make wallet data accessible, actionable, and agent-ready.
Explore more: https://datai.network
Feedback or Support?
We’re building this for the agent dev community and highly appreciate your input:
Create an issue in the GitHub repository
Check the documentation for common solutions
Review the debug output when
DATAI_DEBUG_TRUNCATE=true
Available Tools
8 toolsget_all_defi_positionsA
Get comprehensive DeFi positions for a wallet across ALL supported blockchain networks and protocols. Provides complete portfolio overview including lending, liquidity pools, yield farming, staking, and other DeFi activities across 10+ chains and 15+ protocols.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Ethereum wallet address (42-character hex string starting with 0x) to get comprehensive DeFi positions for. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden of behavioral disclosure. While it mentions the scope ('across ALL supported blockchain networks and protocols') and types of positions included, it doesn't disclose important behavioral traits like rate limits, authentication requirements, response format, pagination, or error conditions. The description provides some context but leaves significant gaps for a tool that presumably makes complex external API calls.
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 appropriately sized and front-loaded with the core purpose in the first sentence. The second sentence adds valuable context about scope and coverage. Both sentences earn their place by providing distinct information, though some phrasing could be slightly more 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 complexity (querying multiple chains/protocols), lack of annotations, and no output schema, the description is moderately complete but has significant gaps. It explains the comprehensive scope well but doesn't address behavioral aspects, return format, or limitations. For a complex DeFi query tool with no structured safety/behavior annotations, the description should do more to guide the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single 'wallet' parameter with format examples and validation patterns. The description adds no additional parameter semantics beyond what's in the schema - it doesn't clarify edge cases, multiple wallet formats, or how different address types affect results. Baseline 3 is appropriate when schema does all the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get comprehensive DeFi positions') and resources ('for a wallet across ALL supported blockchain networks and protocols'). It distinguishes from siblings by emphasizing comprehensiveness across all chains/protocols, unlike tools like 'get_defi_by_chain' or 'get_defi_by_protocol' which are more limited in 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 provides clear context about when to use this tool ('complete portfolio overview across 10+ chains and 15+ protocols'), but doesn't explicitly state when NOT to use it or name specific alternatives. It implies usage for comprehensive overviews vs. more targeted sibling tools, but lacks explicit exclusions or named comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_defi_balances_by_chainARead-onlyIdempotent
Get DeFi protocol balances for a wallet on a specific blockchain network. Provides aggregated balance information grouped by protocol for diversification analysis and risk assessment.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Ethereum wallet address (42-character hex string starting with 0x) to get DeFi protocol balances for | |
| chain | Yes | Blockchain network to query. Supported: 'eth' (Ethereum), 'arb' (Arbitrum), 'matic' (Polygon), 'avax' (Avalanche), 'bsc' (BSC), 'base' (Base), 'op' (Optimism) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true. The description adds valuable context about the output structure ('aggregated balance information grouped by protocol') and purpose ('for diversification analysis and risk assessment'), which helps the agent understand what kind of data to expect beyond the safety profile already covered 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?
Two concise sentences with zero waste. The first sentence states the core functionality, and the second explains the output format and use case. Every word contributes meaningful 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 tool's moderate complexity (2 parameters, no output schema), rich annotations covering safety and behavior, and 100% schema coverage, the description provides good contextual completeness. It explains the output structure and purpose, though it could benefit from mentioning limitations like supported protocols or data freshness.
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 both parameters fully documented in the schema. The description doesn't add any parameter-specific details beyond what's already in the schema (e.g., wallet format specifics or chain enum values), so it meets the baseline of 3 when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get DeFi protocol balances'), target resource ('for a wallet on a specific blockchain network'), and scope ('aggregated balance information grouped by protocol'). It distinguishes from siblings by focusing on per-chain protocol grouping rather than multi-chain, overall balances, or protocol-specific 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 implies usage context ('for diversification analysis and risk assessment') but doesn't explicitly state when to use this tool versus alternatives like 'get_defi_multi_chains' or 'get_overall_balance_by_chain'. No explicit exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_defi_by_chainARead-onlyIdempotent
Get DeFi positions for a wallet on a specific blockchain network. Provides detailed information about lending, liquidity pools, yield farming, and other DeFi activities on the specified chain.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Ethereum wallet address (42-character hex string starting with 0x) to get DeFi positions for | |
| chain | Yes | Blockchain network to query. Supported: 'eth' (Ethereum), 'arb' (Arbitrum), 'matic' (Polygon), 'avax' (Avalanche), 'bsc' (BSC), 'base' (Base), 'op' (Optimism) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide excellent behavioral coverage (readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true). The description adds useful context about what information is returned ('detailed information about lending, liquidity pools, yield farming, and other DeFi activities'), but doesn't disclose additional behavioral traits like rate limits, authentication needs, or response format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place. The first sentence states the core purpose, and the second sentence elaborates on what information is provided. There's zero wasted language 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 rich annotations (covering safety, idempotency, and open-world nature) and complete parameter documentation in the schema, the description provides adequate context. However, without an output schema, the description could benefit from more detail about the return format or structure of the DeFi position data.
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 description coverage, the input schema already fully documents both parameters. The description doesn't add any parameter-specific semantics beyond what's in the schema descriptions, so it meets the baseline of 3. It doesn't explain parameter interactions or provide usage examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('Get') and resource ('DeFi positions for a wallet on a specific blockchain network'). It distinguishes from siblings by specifying it's for a single chain (vs. multi-chain tools like get_defi_multi_chains) and focuses on positions rather than just balances (vs. get_defi_balances_by_chain).
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 when to use this tool ('for a wallet on a specific blockchain network'), which implicitly distinguishes it from multi-chain alternatives. However, it doesn't explicitly state when NOT to use it or name specific alternative tools, keeping it from a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_defi_by_protocolARead-onlyIdempotent
Get DeFi positions for a wallet filtered by a specific protocol across all chains. Provides detailed analysis of exposure to a particular DeFi protocol for risk assessment and yield optimization.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Ethereum wallet address (42-character hex string starting with 0x) to get DeFi positions for | |
| protocol | Yes | DeFi protocol to filter by. Examples: 'uniswap', 'aave', 'compound', 'makerdao', 'curve', 'balancer', 'sushiswap', 'quickswap', 'traderjoe', 'pancakeswap' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent, and open-world behavior. The description adds valuable context beyond annotations by specifying that it provides 'detailed analysis of exposure' and works 'across all chains', which helps the agent understand the tool's scope and output nature. No contradictions with annotations are present.
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 front-loaded with the core functionality in the first sentence and uses a second sentence to explain the purpose without redundancy. Every sentence adds value (filtering details and use cases), and there is no wasted text, making it efficient and 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?
Given the tool's complexity (multi-chain DeFi analysis), annotations cover safety and behavior well, and the schema fully describes parameters. However, the lack of an output schema means the description could benefit from more details on return values (e.g., types of positions, metrics provided). It adequately covers the tool's purpose and usage but leaves output specifics ambiguous.
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 both parameters (wallet and protocol). The description adds some semantic context by mentioning 'filtered by a specific protocol' and 'for a wallet', but does not provide additional details beyond what the schema already covers, such as specific protocol examples or wallet format nuances. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get DeFi positions', 'filtered by a specific protocol across all chains') and distinguishes it from siblings by emphasizing protocol-specific filtering rather than chain-based or comprehensive position retrieval. It explicitly mentions the resource (DeFi positions) and scope (wallet, protocol, all chains).
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 ('for risk assessment and yield optimization') and implies when to use this tool (when focusing on a specific protocol across chains). However, it does not explicitly state when not to use it or name alternatives among the sibling tools, such as 'get_all_defi_positions' for unfiltered results or 'get_defi_by_chain' for chain-specific filtering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_defi_multi_chainsARead-onlyIdempotent
Get DeFi positions for a wallet across multiple specified blockchain networks. Allows targeted multi-chain analysis by selecting specific chains of interest for comparison and portfolio analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Ethereum wallet address (42-character hex string starting with 0x) to get DeFi positions for | |
| chains | Yes | Array of blockchain networks to query. Example: ['eth', 'arb', 'base']. Supported: eth, arb, matic, avax, bsc, base, op |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide strong behavioral hints (readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true). The description adds useful context about the tool's purpose for 'comparison and portfolio analysis' but doesn't disclose additional behavioral traits like rate limits, authentication needs, or what specific data is returned. With comprehensive annotations, the bar is lower, and the description adds some value without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place. The first sentence states the core functionality, and the second sentence explains the value proposition and use case. No wasted words, and information is front-loaded appropriately.
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 comprehensive annotations (covering safety, idempotence, and open-world nature) and 100% schema coverage, the description provides adequate context for a read-only query tool. The main gap is the lack of output schema, but the description hints at what will be returned ('DeFi positions' for 'comparison and portfolio analysis'). For a tool with good structured metadata, this description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters well-documented in the schema. The description adds minimal semantic context beyond the schema - it mentions 'selecting specific chains of interest' which aligns with the 'chains' parameter, but doesn't provide additional meaning about parameter usage or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get DeFi positions'), target resource ('for a wallet'), and scope ('across multiple specified blockchain networks'). It distinguishes from sibling tools by emphasizing multi-chain analysis rather than single-chain or protocol-specific queries, which helps differentiate from tools like 'get_defi_by_chain' or 'get_defi_by_protocol'.
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 about when to use this tool: for 'targeted multi-chain analysis by selecting specific chains of interest for comparison and portfolio analysis.' It implies this is for focused multi-chain queries rather than comprehensive scans, but doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_overall_balance_all_cARead-onlyIdempotent
Get overall balance for a wallet across ALL supported blockchain networks in multiple currencies. Provides complete portfolio valuation including USD, EUR, AUD, and other major currencies for comprehensive wealth tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Ethereum wallet address (42-character hex string starting with 0x) to get overall balance for across all chains |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover key behavioral traits (read-only, open-world, idempotent, non-destructive), so the bar is lower. The description adds valuable context by specifying the scope ('across ALL supported blockchain networks') and output details ('multiple currencies...for comprehensive wealth tracking'), which enhances understanding beyond annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by additional details in a second sentence. Both sentences earn their place by clarifying scope and output without redundancy. It is appropriately sized and efficiently 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?
Given the tool's complexity (multi-network balance retrieval), annotations provide good behavioral coverage, and the schema fully documents the single parameter. However, there is no output schema, and the description does not detail return values (e.g., structure of balance data). It is mostly complete but could benefit from more output 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 description coverage is 100%, providing full details on the 'wallet' parameter (Ethereum or Solana address formats). The description adds minimal semantics by mentioning 'wallet' in context but does not provide additional meaning beyond the schema. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
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 with specific verbs ('Get overall balance') and resources ('wallet across ALL supported blockchain networks'), and distinguishes it from sibling tools by emphasizing 'ALL' networks versus the sibling 'get_overall_balance_by_chain' which is chain-specific. It specifies the output includes multiple currencies for portfolio valuation.
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 implicitly suggests usage for comprehensive wealth tracking across all networks, but does not explicitly state when to use this tool versus alternatives like the sibling 'get_overall_balance_by_chain' or other DeFi-focused tools. It provides clear context but lacks explicit exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_overall_balance_by_chainARead-onlyIdempotent
Get comprehensive overall balance for a wallet on a specific blockchain network in multiple currencies (USD, EUR, AUD, GBP, JPY, CAD, CHF). Provides aggregated portfolio valuation across all assets held on the specified chain.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Ethereum wallet address (42-character hex string starting with 0x) to get overall balance for. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 | |
| chain | Yes | Blockchain network identifier to query. Supported values: 'eth' (Ethereum), 'arb' (Arbitrum), 'matic' (Polygon), 'avax' (Avalanche), 'bsc' (Binance Smart Chain), 'base' (Base), 'op' (Optimism) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: it specifies the output includes 'multiple currencies (USD, EUR, AUD, GBP, JPY, CAD, CHF)' and that it provides 'aggregated portfolio valuation', which clarifies the return format and scope. No contradictions with annotations exist.
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 efficiently structured in two sentences: the first states the core functionality and output currencies, the second clarifies the aggregated valuation scope. Every phrase adds value (e.g., listing currencies, specifying 'across all assets'), with no redundant or vague language. It's 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 tool's moderate complexity (2 parameters, no output schema), the description is largely complete: it covers purpose, behavioral traits (currency outputs, aggregation), and usage context. Annotations provide safety and idempotency info. The main gap is lack of explicit guidance on when to use versus siblings, but overall it's sufficient for an agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for both parameters (wallet address formats and chain enum values). The description doesn't add parameter-specific semantics beyond what's in the schema, but it reinforces the purpose of querying 'a wallet on a specific blockchain network', aligning with the parameters. Baseline 3 is appropriate given the schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get comprehensive overall balance'), target resource ('for a wallet on a specific blockchain network'), and scope ('aggregated portfolio valuation across all assets held on the specified chain'). It distinguishes from siblings like 'get_wallet_balances_by_chain' by emphasizing overall/aggregated valuation rather than individual asset balances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'on a specific blockchain network' and 'across all assets held on the specified chain', suggesting this tool is for chain-specific aggregated valuation. However, it doesn't explicitly state when to use this versus alternatives like 'get_overall_balance_all_c' (which might cover multiple chains) or 'get_wallet_balances_by_chain' (which might provide per-asset details). No explicit exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wallet_balances_by_chainARead-onlyIdempotent
Get token balances for a wallet on a specific blockchain network. Provides detailed information about all token holdings including amounts, USD values, and token metadata for portfolio analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Ethereum wallet address (42-character hex string starting with 0x) to get token balances for | |
| chain | Yes | Blockchain network to query. Supported: 'eth' (Ethereum), 'arb' (Arbitrum), 'matic' (Polygon), 'avax' (Avalanche), 'bsc' (BSC), 'base' (Base), 'op' (Optimism) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true. The description adds valuable context beyond annotations by specifying what information is returned ('detailed information about all token holdings including amounts, USD values, and token metadata') and the purpose ('for portfolio analysis'), though it doesn't mention rate limits or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences: the first states the core functionality, and the second elaborates on the returned data and purpose. Every sentence adds value without redundancy, and key information is front-loaded appropriately.
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 (2 parameters, read-only operation), rich annotations, and 100% schema coverage, the description provides good contextual completeness. It explains what data is returned and the use case, though without an output schema, it could benefit from more detail on response format or pagination. The annotations cover safety and idempotency 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 description coverage is 100%, with both parameters well-documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema (e.g., it doesn't clarify parameter interactions or provide examples). With complete schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get token balances'), target resource ('for a wallet on a specific blockchain network'), and scope ('all token holdings including amounts, USD values, and token metadata'). It distinguishes itself from sibling tools like 'get_all_defi_positions' or 'get_defi_balances_by_chain' by focusing specifically on token balances rather than broader DeFi positions.
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 context ('for portfolio analysis') but doesn't explicitly state when to use this tool versus alternatives like 'get_defi_balances_by_chain' or 'get_overall_balance_by_chain'. It mentions the specific blockchain requirement but doesn't provide guidance on tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v1.0.3- First observed
get_all_defi_positions - First observed
get_defi_balances_by_chain - First observed
get_defi_by_chain - First observed
get_defi_by_protocol - First observed
get_defi_multi_chains - First observed
get_overall_balance_all_c - First observed
get_overall_balance_by_chain - First observed
get_wallet_balances_by_chain
TDQS
Multiple tools have unclear boundaries and overlapping purposes, causing potential confusion. For example, 'get_defi_balances_by_chain' and 'get_wallet_balances_by_chain' both retrieve balances on a specific chain, while 'get_defi_by_chain' and 'get_defi_multi_chains' overlap in multi-chain analysis. The descriptions help somewhat, but the distinctions are not clearly defined.
The naming follows a mostly consistent verb_noun pattern with 'get_' prefix throughout, making tools readable and predictable. However, there are minor deviations like 'get_all_defi_positions' (adjective before noun) and 'get_overall_balance_all_c' (abbreviated 'all_c'), which slightly break the pattern but do not severely impact usability.
With 8 tools, the count is reasonable for a DeFi portfolio analysis server, but it feels borderline due to the significant overlap and redundancy among tools. The server could benefit from consolidation, as some tools (e.g., 'get_defi_by_chain' and 'get_defi_multi_chains') serve similar purposes, making the set feel slightly heavy for its scope.
The tool surface covers the domain of DeFi and wallet portfolio analysis well, with tools for overall balances, DeFi positions, and chain/protocol-specific queries. Minor gaps exist, such as no tools for historical data or transaction analysis, but agents can work around these for core tasks like portfolio overview and risk assessment.
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
Blockchain analytics API for AI agents. Smart Money signals, wallet profiling, token analytics.
Blockchain analytics API for AI agents. Smart Money signals, wallet profiling, token analytics.
Provide AI agents and automation tools with contextual access to blockchain data including balance…
Crypto yield data for AI agents: lending, savings, staking, borrowing & stablecoin rates. 18 tools.
Related MCP Servers
- FlicenseAqualityCmaintenanceConnects AI agents to Real World Asset (RWA) data, enabling queries about tokenized assets, market trends, TVL analytics, token holders, and portfolio tracking across multiple blockchains.181-

Zerion Hosted MCPofficial
AlicenseNot gradedqualityBmaintenanceZerion MCP let's your agent analyze EVM and Solana wallets and summarize total portfolio value, top holdings, DeFi positions, recent transactions, PnL and more.60-- AlicenseAqualityCmaintenanceProvides AI agents with real-time financial market intelligence including stock quotes, crypto data, technical analysis, and portfolio insights. Enables natural language queries for current prices, technical indicators, asset comparisons, and portfolio analysis.176MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to manage and analyze personal investment portfolios, including fund and stock holdings, net value tracking, XIRR calculations, penetration analysis, and backtesting.Apache 2.0
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/Datai-Network/datai-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server