Octav API MCP Server
OfficialAllows querying portfolio data, transaction history, net worth, and token distributions for wallets on BNB Chain.
Allows querying portfolio data, transaction history, net worth, and token distributions for wallets on Ethereum.
Allows querying portfolio data, transaction history, net worth, and token distributions for wallets on Fantom.
Allows querying portfolio data, transaction history, net worth, and token distributions for wallets on Optimism.
Allows querying portfolio data, transaction history, net worth, and token distributions for wallets on Polygon.
Allows querying portfolio data, transaction history, net worth, and token distributions for wallets on Solana, including airdrop eligibility checks.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Octav API MCP ServerWhat's my net worth in USD?"
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.
██████╗ ██████╗████████╗ █████╗ ██╗ ██╗
██╔═══██╗██╔════╝╚══██╔══╝██╔══██╗██║ ██║
██║ ██║██║ ██║ ███████║██║ ██║
██║ ██║██║ ██║ ██╔══██║╚██╗ ██╔╝
╚██████╔╝╚██████╗ ██║ ██║ ██║ ╚████╔╝
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═══╝Octav API MCP Server
MCP (Model Context Protocol) server for the Octav cryptocurrency portfolio tracking API. This server enables LLM agents to query portfolio data, transaction history, net worth, and historical snapshots across 20+ blockchains.
Features
🔗 20+ Blockchain Support: Ethereum, Solana, Arbitrum, Base, Polygon, and more
💼 Complete Portfolio Tracking: Wallets + DeFi protocol positions
📊 Transaction History: Advanced filtering and pagination
💰 Multi-Currency NAV: USD, EUR, GBP, JPY, CNY, ETH, BTC
📸 Historical Snapshots: Track portfolio value over time
🎯 Token Distribution: Aggregated token holdings across chains
🎁 Airdrop Tracking: Solana airdrop eligibility
📈 Polymarket Positions: Prediction market tracking
🤖 x402 Payment Protocol: AI agent-friendly endpoints
Related MCP server: CoinStats MCP Server
Installation
For End Users
The easiest way to use this MCP server is with npx (no installation required):
npx octav-api-mcpOr install globally:
npm install -g octav-api-mcp
# or
pnpm add -g octav-api-mcpFor Development
Clone the repository and build from source:
git clone https://github.com/Octav-Labs/octav-api-mcp.git
cd octav-api-mcp
pnpm install
pnpm buildConfiguration
Create a .env file in the project root:
OCTAV_API_KEY=your-api-key-hereGet your API key from octav.fi.
Usage
With Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"octav": {
"command": "npx",
"args": ["-y", "octav-api-mcp"],
"env": {
"OCTAV_API_KEY": "your-api-key-here"
}
}
}
}The -y flag automatically confirms package installation if not already cached.
Alternative (if installed globally):
{
"mcpServers": {
"octav": {
"command": "octav-api-mcp",
"env": {
"OCTAV_API_KEY": "your-api-key-here"
}
}
}
}With MCP Inspector
For testing and debugging:
pnpm build
pnpm dlx @modelcontextprotocol/inspector node build/index.jsAvailable Tools
All tools use the octav_ prefix for namespace clarity.
Portfolio & Holdings (4 tools)
1. octav_get_portfolio
Get complete portfolio including wallet holdings and DeFi protocol positions.
Parameters:
addresses(required): Array of wallet addresses (max 10)
Cost: 1 credit per address
2. octav_get_wallet
Get wallet holdings only (excludes DeFi protocols).
Parameters:
addresses(required): Array of wallet addresses (max 10)
Cost: 1 credit per address
3. octav_get_nav
Get total net worth (NAV) in specified currency.
Parameters:
addresses(required): Array of wallet addresses (max 10)currency(optional): Currency code (usd, eur, gbp, jpy, cny, eth, btc). Default: usd
Cost: 1 credit per address
4. octav_get_token_overview
Get aggregated token distribution across all chains.
Parameters:
addresses(required): Array of wallet addresses (max 10)
Cost: 1 credit per address
Transactions (2 tools)
5. octav_get_transactions
Query transaction history with filtering and pagination.
Parameters:
addresses(required): Array of wallet addresses (max 10)chain(optional): Filter by specific chaintype(optional): Filter by transaction typestartDate(optional): Start date (YYYY-MM-DD)endDate(optional): End date (YYYY-MM-DD)offset(optional): Pagination offset. Default: 0limit(optional): Number of results (1-250). Default: 50
Cost: 1 credit per address
6. octav_sync_transactions
Manually trigger transaction synchronization.
Parameters:
addresses(required): Array of wallet addresses (max 10)
Cost: 1 credit per address
Historical & Snapshots (2 tools)
7. octav_get_historical
Get portfolio snapshot for a specific date in the past.
Parameters:
addresses(required): Array of wallet addresses (max 10)date(required): Date for snapshot (YYYY-MM-DD)
Cost: 1 credit per address
8. octav_subscribe_snapshot
Subscribe to automatic portfolio snapshots.
Parameters:
addresses(required): Array of wallet addresses (max 10)frequency(required): Snapshot frequency (daily, weekly, monthly)
Cost: 1 credit per address
Metadata (2 tools)
9. octav_get_status
Check synchronization status across all chains.
Parameters:
addresses(required): Array of wallet addresses (max 10)
Cost: FREE
10. octav_get_credits
Check API credit balance and usage.
Parameters: None
Cost: FREE
Specialized (4 tools)
11. octav_get_airdrop
Check airdrop eligibility (Solana only).
Parameters:
address(required): Solana wallet address
Cost: 1 credit
12. octav_get_polymarket
Get Polymarket prediction market positions.
Parameters:
address(required): Ethereum wallet address
Cost: 1 credit
13. octav_agent_wallet
Get wallet holdings via x402 payment protocol (for AI agents).
Parameters:
addresses(required): Array of wallet addresses (max 10)
Cost: Paid via HTTP 402 payment protocol
14. octav_agent_portfolio
Get full portfolio via x402 payment protocol (for AI agents).
Parameters:
addresses(required): Array of wallet addresses (max 10)
Cost: Paid via HTTP 402 payment protocol
Address Formats
The server accepts two address formats:
EVM addresses:
0xfollowed by 40 hex characters (Ethereum, Polygon, Arbitrum, Base, etc.)Solana addresses: 32-44 character base58 strings
Response Format
All tools return dual-format responses:
Markdown Summary: Human-readable overview with key metrics
Full JSON: Complete API response data for programmatic access
API Costs & Rate Limits
Most endpoints cost 1 credit per address
octav_get_statusandoctav_get_creditsare FREETransaction queries have a max limit of 250 per request
Max 10 addresses per request
Purchase credits at octav.fi
Error Handling
The server provides clear error messages for:
Validation errors: Invalid address formats, parameter constraints
Authentication errors: Invalid API key
Insufficient credits: Low balance with purchase link
Rate limiting: Retry suggestions
Network errors: Connection issues
Development
Build
pnpm buildWatch Mode
pnpm devTesting
pnpm testExample Usage
Once configured with Claude Desktop, you can ask questions like:
"What's in my Ethereum wallet 0x..."
"Show me my complete crypto portfolio for addresses X, Y, Z"
"What was my net worth on 2024-01-01?"
"Get my transaction history for the last month"
"Am I eligible for any Solana airdrops?"
"What are my Polymarket positions?"
Supported Chains
Ethereum, Solana, Arbitrum, Base, Polygon, Optimism, BNB Chain, Avalanche, Fantom, Cronos, Gnosis, Celo, Moonbeam, Moonriver, Harmony, Aurora, Metis, Boba, Fuse, Evmos, Kava, and more.
License
MIT
Links
Support
For API issues or questions, visit octav.fi or check the API documentation.
Available Tools
14 toolsoctav_agent_portfolioGet Portfolio (x402 Payment)ARead-only
Get full portfolio using x402 payment protocol. For AI agents with automatic payment. Returns wallet + DeFi positions. Costs paid via HTTP 402 payment protocol.
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | Array of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses. |
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 valuable behavioral context about the payment mechanism ('Costs paid via HTTP 402 payment protocol') and the automatic payment requirement, which are not present in 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 only two sentences, front-loaded with the core function, and contains no redundant or filler content. Each sentence contributes essential information about purpose, audience, and payment behavior.
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 well-documented parameter and strong annotations. The description covers purpose, usage context, and output summary, but it does not mention the alternative octav_get_portfolio for non-payment scenarios, leaving slight ambiguity for agents comparing 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?
The input schema already provides full coverage of the 'addresses' parameter, including accepted formats (EVM: 0x... or Solana base58) and limits (max 10 addresses). The description does not add parameter-specific meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Get full portfolio' via x402 payment protocol and specifies the return content (wallet + DeFi positions). It distinguishes from the sibling octav_get_portfolio by noting it is intended for 'AI agents with automatic payment'.
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 usage context: 'For AI agents with automatic payment' and mentions that costs are paid via HTTP 402. However, it does not explicitly name alternatives or state when not to use this tool, falling short of the highest rating.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
octav_agent_walletGet Wallet (x402 Payment)ARead-only
Get wallet holdings using x402 payment protocol. For AI agents with automatic payment. Returns wallet balances and values. Costs paid via HTTP 402 payment protocol.
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | Array of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds valuable context about payment costs via HTTP 402, which is not covered by annotations, enhancing behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and front-loaded with the core action. Each sentence serves a purpose: defining the action, identifying the target user, and clarifying the output and cost mechanism.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with a single well-described parameter and no output schema, the description covers the essential aspects: purpose, payment requirement, and return type. It could be more explicit about alternative tools but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the 'addresses' parameter, including format and limits. The description adds no additional parameter-specific meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Get wallet holdings' and specifies the unique x402 payment protocol, distinguishing it from sibling tools like octav_get_wallet. It also explicitly mentions the output ('Returns wallet balances and values').
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 context: 'For AI agents with automatic payment.' This indicates the intended audience but does not mention alternatives or exclusions (e.g., when to use a non-payment tool like octav_get_wallet).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
octav_get_airdropGet Airdrop EligibilityARead-only
Check airdrop eligibility for Solana address. Shows eligible airdrops with claim links. Solana addresses only. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Solana wallet address (base58 format) |
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. The description adds useful behavioral context: it mentions the cost ('Costs 1 credit') and the outcome ('Shows eligible airdrops with claim links'). 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 concise and front-loaded, with four short sentences each adding distinct information: purpose, output, constraint, and cost. There is minimal redundancy, and 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?
For a simple single-parameter tool with good annotations and no output schema, the description adequately covers what the tool does, the input requirement, the output/behavior (eligible airdrops and claim links), and cost. It is complete enough for an agent to use it correctly without needing additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full coverage (100%) for the single parameter 'address' with a clear description ('Solana wallet address (base58 format)'). The description reinforces this with 'Solana addresses only' but does not add significant new meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb 'Check' and resource 'airdrop eligibility', and distinguishes it from sibling tools by focusing on airdrops specifically. It also specifies the input type (Solana address) and output (eligible airdrops with claim links).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: to check airdrop eligibility for a Solana address. It also includes an exclusion ('Solana addresses only'), which helps the agent avoid using it for non-Solana addresses. However, it does not explicitly mention alternatives or when not to use it compared to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
octav_get_creditsGet Credit BalanceARead-only
Check API credit balance, usage, and remaining credits. FREE - no credits required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds the behavioral detail 'FREE - no credits required', which is not captured by annotations. This provides useful cost-related context beyond the structured metadata.
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 only two short sentences with no filler. The key purpose is front-loaded, and the 'FREE' note adds valuable context 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 no parameters, no output schema, and simple read-only semantics, the description fully covers what an agent needs to know: what it checks and that it costs no credits. No additional context is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is trivially 100% covered. The description needs no parameter detail; the baseline of 4 applies as there are no parameters to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Check' plus the resource 'API credit balance, usage, and remaining credits', making the tool's purpose unambiguous. It clearly distinguishes itself from siblings since none of the sibling tools relate to credit balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for checking credit balance and is FREE (no credits required), implying safe usage. It does not explicitly mention alternatives, but no sibling tool serves the same function, so the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
octav_get_historicalGet Historical PortfolioARead-only
Get portfolio snapshot for a specific date in the past. Shows holdings and values at that point in time. Costs 1 credit per address.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date for historical snapshot (YYYY-MM-DD format) | |
| addresses | Yes | Array of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses. |
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 known. The description adds useful context: 'Costs 1 credit per address,' which is a rate/pricing detail not present in annotations. It does not disclose other behaviors (e.g., response format), but the annotation coverage lowers the bar.
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 short sentences, front-loaded with the core purpose. Every sentence adds value: purpose, output content, and cost. No redundant or vague wording.
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 explains what the tool returns (holdings and values) and notes the credit cost, which is helpful since there is no output schema. It does not mention data availability limitations or chain specifics, but the schema already covers address formats. Overall, it is adequately complete for a relatively simple read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'date' and 'addresses' fully described in the input schema. The description does not add parameter-level detail beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get portfolio snapshot for a specific date in the past.' It names the specific resource (portfolio snapshot) and the temporal scope, distinguishing it from siblings like octav_get_portfolio (current) and octav_get_nav.
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 conveys when to use it (for past dates) and what it shows, but it does not explicitly name alternatives or state when not to use it. The context is clear enough for an agent to infer the historical use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
octav_get_polymarketGet Polymarket PositionsARead-only
Get Polymarket prediction market positions for address. Shows active positions, values, and P&L. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Ethereum wallet address (0x...) |
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 only needs to add value beyond that. It discloses a credit cost ('Costs 1 credit') and describes the return contents ('active positions, values, and P&L'), which are useful behavioral 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 two short sentences, front-loaded with the core purpose, and every sentence adds value (what is returned and the credit cost). 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's simplicity (one parameter, no output schema) and the presence of annotations, the description provides sufficient context: it states the resource, the output, and cost. Minor gaps like return format or pagination are not critical for this low-complexity tool, but a bit more detail could make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'address' is fully documented in the schema with its format ('Ethereum wallet address (0x...)'). The description adds no additional semantic detail beyond referencing 'address,' so the schema bears the responsibility, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' with a clear resource: 'Polymarket prediction market positions for address.' It further specifies the output ('active positions, values, and P&L'), making it distinct from sibling tools like octav_get_portfolio.
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 the tool is for Polymarket-specific positions but does not explicitly state when to use it over alternatives or provide exclusions. Context is clear for the intended use case, but no direct comparison to sibling tools is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
octav_get_portfolioGet Full PortfolioARead-only
Get complete portfolio including wallet holdings and DeFi protocol positions across 20+ blockchains. Returns token balances, values, and protocol positions. Costs 1 credit per address.
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | Array of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and non-destructive annotations, the description adds critical operational context: it costs 1 credit per address, aggregates across 20+ blockchains, and returns specific data types (token balances, values, protocol positions). This enriches the agent's understanding of cost and scope 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?
Three concise sentences with no filler. The first sentence states the purpose, the second lists return data, and the third discloses cost. All sentences earn their place and the content is 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 simple single-parameter schema, strong annotations, and no output schema, the description sufficiently explains what the tool returns and its cost model. It is complete for an agent to decide when to use it and what to expect, covering all essential operational 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?
The schema already describes the 'addresses' parameter thoroughly (EVM/Solana formats, max 10). The description adds the meaningful detail that cost scales per address, which is not in the schema, providing additional semantic value beyond the 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 returns a complete portfolio including wallet holdings and DeFi protocol positions across 20+ blockchains, with specific outputs like token balances and values. This specific verb+resource scope distinguishes it from siblings such as octav_get_wallet, which likely focuses only on wallet holdings.
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 a comprehensive portfolio view across many blockchains, with no explicit exclusions or named alternatives. However, the phrase 'complete portfolio' and mention of DeFi positions provides clear context that this is broader than sibling tools, and the credit cost per address offers practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
octav_get_statusGet Sync StatusARead-only
Check synchronization status of addresses across all chains. Shows which chains are synced and last sync time. FREE - no credits required.
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | Array of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive. The description adds that it returns per-chain sync state and last sync time, and clearly states the tool requires no credits, which is useful context beyond the schema/annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver purpose and key detail without redundancy. The 'FREE' note is a distinctive benefit and not 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?
With no output schema, the description partially covers return contents (chains synced, last sync time). Combined with the schema's clear parameter documentation and simple read-only nature, the description is sufficient, though it lacks explicit mention of address count limits (already in 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 covers 100% of the one parameter with a description. The tool description adds no additional parameter semantics beyond the schema, so baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks synchronization status of addresses across all chains, distinguishing it from sibling tools like get_portfolio or get_transactions. It also specifies output (sync state and last sync time), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is used to check sync status, but does not explicitly specify when to prefer it over siblings like sync_transactions or get_transactions. It provides context (across chains, free) 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.
octav_get_token_overviewGet Token DistributionARead-only
Get aggregated token distribution across all chains. Shows which tokens you hold, their values, and percentage breakdown. Costs 1 credit per address.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date for token overview snapshot (YYYY-MM-DD format) | |
| addresses | Yes | Array of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive behavior, lowering the burden. The description adds the credit cost per address and the aggregated data scope, which are useful behavioral context 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 concise sentences, front-loaded with the core purpose, followed by output summary and cost. 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?
For a simple read-only tool with fully documented parameters, the description covers the output concept. However, it does not mention potential limitations or alternatives, leaving slight gaps given the number of sibling 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?
Schema coverage is 100% with clear parameter descriptions for addresses and date. The description does not add additional semantics beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns aggregated token distribution across all chains, including token values and percentage breakdown. The resource is specific, but it does not explicitly differentiate from sibling tools like octav_get_portfolio or octav_get_wallet.
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 tool's purpose implies when to use it, but there is no explicit guidance on when to choose it over sibling tools or any exclusions. The credit cost note is a practical caveat but not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
octav_get_transactionsGet Transaction HistoryARead-only
Query transaction history with filtering and pagination. Filter by chain, type, date range. Max 250 transactions per request. Costs 1 credit per address.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by transaction type (e.g., transfer, swap, stake) | |
| chain | No | Filter by specific chain (e.g., ethereum, solana, arbitrum) | |
| limit | No | Number of transactions to return (default: 50, max: 250) | |
| offset | No | Pagination offset (default: 0) | |
| endDate | No | End date for filtering (YYYY-MM-DD) | |
| addresses | Yes | Array of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses. | |
| startDate | No | Start date for filtering (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive. The description adds useful behavioral details beyond annotations: the maximum of 250 transactions per request and the credit cost per address. It does not describe the response format, but the annotation coverage lowers the burden.
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, consisting of four short sentences: core action, filtering options, max limit, and cost. Each sentence adds distinct value, and the main verb is 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?
The tool has 7 parameters, no output schema, and moderate complexity. The description covers filtering, pagination, limit, and cost, but does not explain the return value structure or any prerequisites. Given the missing output schema, this is a notable 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?
The input schema provides 100% coverage for all 7 parameters with descriptions, so the description does not need to repeat parameter-level details. It mentions filtering by chain/type/date and the max limit, which are already in the schema, 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 'Query transaction history with filtering and pagination', specifying the verb and resource. It adds scope details like filtering by chain, type, and date range, but does not explicitly differentiate from sibling tools such as octav_get_historical.
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 transaction history with filtering and pagination, but provides no explicit guidance on when to prefer this tool over alternatives like octav_sync_transactions or octav_get_historical. The cost and limit information offer some decision context, but no direct comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
octav_get_walletGet Wallet HoldingsARead-only
Get wallet holdings only (excludes DeFi protocols). Returns token balances and values across all chains. Costs 1 credit per address.
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | Array of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and non-destructive behavior. The description adds valuable context: it returns token balances and values across chains, excludes DeFi, and costs 1 credit per address. This goes beyond the structured annotations, providing operational cost and scope 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 two sentences, front-loaded with the primary purpose, and the second sentence adds cost context. No filler or redundant text; every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, good annotations, and no output schema, the description covers purpose, scope, return content, and cost. It does not detail the return structure (e.g., token symbols, chain identifiers), but that is acceptable given the absence of an output schema and the tool's relative simplicity.
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 'addresses' parameter, so the baseline is 3. The description adds a cost-per-address semantic ('Costs 1 credit per address'), which clarifies how the array parameter is consumed and incurrs fees. This goes beyond the schema's format description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get wallet holdings only (excludes DeFi protocols). Returns token balances and values across all chains.' The verb 'Get' is specific, the resource 'wallet holdings' is well-defined, and the exclusion of DeFi protocols distinguishes it from siblings like octav_get_portfolio.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool by explicitly stating 'only (excludes DeFi protocols)', signaling that it should be used for wallet token balances when DeFi positions are not needed. However, it does not name alternative tools or provide explicit when-not-to-use conditions, so it falls short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
octav_subscribe_snapshotSubscribe to SnapshotsA
Subscribe to automatic portfolio snapshots. Enables historical tracking. Costs 1200 credits. API expects addresses with optional descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | Array of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses. | |
| description | No | Optional description for the subscription |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds key behavioral context beyond annotations: 'Costs 1200 credits' and 'automatic' imply ongoing side effects and cost. This is valuable given the annotations only indicate non-read-only and open-world hints. 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 extremely concise, using four short sentences that each convey essential information: purpose, benefit, cost, and parameter expectation. No filler or redundant phrasing beyond what schema requires.
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 subscription tool with only two parameters, the description covers the main points: what it does, why use it, cost, and parameter types. It lacks details about the return value or how to cancel, but given the absence of an output schema, the description is reasonably complete for the tool's simplicity.
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 documents both parameters with descriptions (100% coverage). The description's 'addresses with optional descriptions' merely restates the schema without adding deeper meaning (e.g., formats, constraints, or relationships). 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 action: 'Subscribe to automatic portfolio snapshots.' It identifies the resource (snapshots) and the purpose (historical tracking). This distinguishes it from sibling tools, which are all get_ or sync_ 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 clear context for when to use this tool: 'Enables historical tracking.' This implies the tool is for setting up ongoing snapshots. However, it does not explicitly contrast with octav_get_historical or other alternatives, nor does it state 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.
octav_sync_transactionsSync TransactionsA
Manually trigger transaction synchronization for addresses. Forces immediate indexing of latest transactions. Costs 1 credit per address.
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | Array of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate write/non-destructive behavior, and the description adds important context: it costs 1 credit per address and forces indexing. This goes beyond what annotations provide, disclosing a rate-limiting cost and the tool's triggering nature, which is valuable for an agent to anticipate side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and includes essential behavioral and cost information. There is no redundancy or filler; every word contributes to understanding.
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 trigger tool, the description covers what it does, when it matters, and its cost. It does not explain return values or error behavior, but since there is no output schema and the tool likely returns a status, this is a minor gap. Overall, it is adequately complete for the tool's simplicity.
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 describes the 'addresses' parameter fully (array of wallet addresses, max 10). The description does not add further parameter-level detail; the cost per address is a behavioral note rather than parameter semantics. Since schema coverage is 100%, 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 tool's function: manually triggering transaction synchronization for addresses and forcing immediate indexing of latest transactions. The verb 'trigger' and resource 'transaction synchronization' are specific and distinguish it from sibling read-only tools like octav_get_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it—when you want to force an immediate sync rather than relying on automatic updates—but does not explicitly contrast it with alternatives or state when not to use it. The 'manually' and 'Forces immediate' phrasing provides context but no exclusionary guidance.
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.
14 tool updates
v1.1.0- First observed
octav_agent_portfolio - First observed
octav_agent_wallet - First observed
octav_get_airdrop - First observed
octav_get_credits - First observed
octav_get_historical - First observed
octav_get_nav - First observed
octav_get_polymarket - First observed
octav_get_portfolio - First observed
octav_get_status - First observed
octav_get_token_overview - First observed
octav_get_transactions - First observed
octav_get_wallet - First observed
octav_subscribe_snapshot - First observed
octav_sync_transactions
TDQS
Scored across 14 tools
Portfolio-related tools overlap: get_portfolio, get_wallet, get_nav, and get_token_overview all return different views of the same data, and agent_wallet/agent_portfolio duplicate the get_* equivalents. However, each has a distinct purpose and descriptions clarify the differences.
Most tools follow octav_get_<object> pattern, but octav_agent_wallet and octav_agent_portfolio break the verb-first convention. Still, all use snake_case with octav_ prefix, making them predictable.
14 tools is well-scoped for a portfolio tracking API, covering multiple data views and payment methods without feeling bloated.
Covers core portfolio, wallet, transactions, historical, and status/credits. Missing subscription management (e.g., cancel/update) but not critical.
Maintenance
Related MCP Connectors
Unlock the power of real-time cryptocurrency data with our Crypto Price Insights MCP server.
Query your real net worth, spending, transactions, budgets and portfolio from any MCP client.
Crypto market intelligence, token rug-checks, and wallet verification in one MCP server.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server for tracking and managing cryptocurrency portfolio allocations, enabling AI agents to query and optimize portfolio strategies in real time.10MIT

CoinStats MCP Serverofficial
AlicenseBqualityCmaintenanceMCP Server for the CoinStats API. Provides access to cryptocurrency market data, portfolio tracking, and news.3038 npm16MIT
Desk3 MCP Serverofficial
AlicenseBqualityDmaintenanceCryptocurrency MCP Server! Free! This powerful tool is designed for blockchain enthusiasts, providing comprehensive, real-time cryptocurrency information at your fingertips. Whether you're an experienced trader or just starting your journey into the crypto world.163MIT- AlicenseAqualityBmaintenanceMCP server with 43 tools for blockchain data — token lookups, wallet balances, live chain queries across 10+ networks, and full API documentation search.27120 npmApache 2.0