Skip to main content
Glama
Octav-Labs

Octav API MCP Server

Official
by Octav-Labs
 ██████╗  ██████╗████████╗ █████╗ ██╗   ██╗
██╔═══██╗██╔════╝╚══██╔══╝██╔══██╗██║   ██║
██║   ██║██║        ██║   ███████║██║   ██║
██║   ██║██║        ██║   ██╔══██║╚██╗ ██╔╝
╚██████╔╝╚██████╗   ██║   ██║  ██║ ╚████╔╝
 ╚═════╝  ╚═════╝   ╚═╝   ╚═╝  ╚═╝  ╚═══╝

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-mcp

Or install globally:

npm install -g octav-api-mcp
# or
pnpm add -g octav-api-mcp

For 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 build

Configuration

Create a .env file in the project root:

OCTAV_API_KEY=your-api-key-here

Get 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.js

Available 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 chain

  • type (optional): Filter by transaction type

  • startDate (optional): Start date (YYYY-MM-DD)

  • endDate (optional): End date (YYYY-MM-DD)

  • offset (optional): Pagination offset. Default: 0

  • limit (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: 0x followed by 40 hex characters (Ethereum, Polygon, Arbitrum, Base, etc.)

  • Solana addresses: 32-44 character base58 strings

Response Format

All tools return dual-format responses:

  1. Markdown Summary: Human-readable overview with key metrics

  2. Full JSON: Complete API response data for programmatic access

API Costs & Rate Limits

  • Most endpoints cost 1 credit per address

  • octav_get_status and octav_get_credits are FREE

  • Transaction 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 build

Watch Mode

pnpm dev

Testing

pnpm test

Example 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

Support

For API issues or questions, visit octav.fi or check the API documentation.

Available Tools

14 tools
octav_agent_portfolioGet Portfolio (x402 Payment)A
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressesYesArray of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)A
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressesYesArray of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 EligibilityA
Read-only

Check airdrop eligibility for Solana address. Shows eligible airdrops with claim links. Solana addresses only. Costs 1 credit.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesSolana wallet address (base58 format)

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 BalanceA
Read-only

Check API credit balance, usage, and remaining credits. FREE - no credits required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 PortfolioA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate for historical snapshot (YYYY-MM-DD format)
addressesYesArray of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_navGet Net Asset ValueA
Read-only

Get total net worth (NAV) in specified currency. Supports USD, EUR, GBP, JPY, CNY, ETH, BTC. Costs 1 credit per address.

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoCurrency for NAV calculation. Defaults to USD.USD
addressesYesArray of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint and destructiveHint, and the description adds useful context about credit cost per address, which goes beyond the schema and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded purpose, no filler. Slightly redundant currency list already in schema, but overall compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so description should clarify return value; it doesn't. Also doesn't explicitly mention aggregate vs per-address NAV, though 'total net worth' implies aggregate. Lacks potential error handling details, but annotations cover safety.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has full coverage with descriptions and enum. The description attempts to add currency info but contradicts schema by listing ETH and BTC which are not in the enum, creating misleading parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Get' with resource 'total net worth (NAV)' and scope (currency). Distinguishes from siblings like get_portfolio and get_wallet by focusing on NAV valuation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage for obtaining NAV in a currency, but no explicit guidance on when to prefer this tool over sibling tools or any exclusions. No alternatives named.

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 PositionsA
Read-only

Get Polymarket prediction market positions for address. Shows active positions, values, and P&L. Costs 1 credit.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesEthereum wallet address (0x...)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 PortfolioA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressesYesArray of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 StatusA
Read-only

Check synchronization status of addresses across all chains. Shows which chains are synced and last sync time. FREE - no credits required.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressesYesArray of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 DistributionA
Read-only

Get aggregated token distribution across all chains. Shows which tokens you hold, their values, and percentage breakdown. Costs 1 credit per address.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate for token overview snapshot (YYYY-MM-DD format)
addressesYesArray of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 HistoryA
Read-only

Query transaction history with filtering and pagination. Filter by chain, type, date range. Max 250 transactions per request. Costs 1 credit per address.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by transaction type (e.g., transfer, swap, stake)
chainNoFilter by specific chain (e.g., ethereum, solana, arbitrum)
limitNoNumber of transactions to return (default: 50, max: 250)
offsetNoPagination offset (default: 0)
endDateNoEnd date for filtering (YYYY-MM-DD)
addressesYesArray of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses.
startDateNoStart date for filtering (YYYY-MM-DD)

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 HoldingsA
Read-only

Get wallet holdings only (excludes DeFi protocols). Returns token balances and values across all chains. Costs 1 credit per address.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressesYesArray of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressesYesArray of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses.
descriptionNoOptional description for the subscription

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressesYesArray of wallet addresses (EVM: 0x... or Solana base58). Max 10 addresses.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 14 tool updatesv1.1.0
    • First observedoctav_agent_portfolio
    • First observedoctav_agent_wallet
    • First observedoctav_get_airdrop
    • First observedoctav_get_credits
    • First observedoctav_get_historical
    • First observedoctav_get_nav
    • First observedoctav_get_polymarket
    • First observedoctav_get_portfolio
    • First observedoctav_get_status
    • First observedoctav_get_token_overview
    • First observedoctav_get_transactions
    • First observedoctav_get_wallet
    • First observedoctav_subscribe_snapshot
    • First observedoctav_sync_transactions

TDQS

A3.9/5.0

Scored across 14 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count5/5

14 tools is well-scoped for a portfolio tracking API, covering multiple data views and payment methods without feeling bloated.

Completeness4/5

Covers core portfolio, wallet, transactions, historical, and status/credits. Missing subscription management (e.g., cancel/update) but not critical.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers