Skip to main content
Glama

Corvus

Solana DeFi Intelligence — Dual Interface (MCP Server + CLI)

Natural language interface for querying wallets, DeFi positions, protocol metrics, and token prices on Solana blockchain.

Two Deployment Modes:

  • šŸ¤– MCP Server: Integrate with Archestra/Claude Desktop for AI-powered analysis

  • ⚔ CLI Tool: Standalone terminal commands for direct queries


Table of Contents


Related MCP server: Solana Model Context Protocol (MCP) Server

Features

Wallet Intelligence

  • SOL Balance: Get native SOL balance with real-time USD valuation

  • Token Holdings: Complete SPL token portfolio with prices and values

  • Transaction History: Human-readable transaction descriptions (powered by Helius Enhanced Transactions)

DeFi Market Data

  • Token Pricing: Batch price lookups for up to 50 tokens (symbols or mint addresses)

  • Protocol TVL: Detailed Total Value Locked metrics for 358+ Solana protocols

  • Protocol Rankings: Top protocols by TVL with category filtering

Advanced Analytics (The Differentiator)

  • DeFi Position Analysis: Intelligent 3-bucket classification system

    • Known DeFi: Registry-based identification (jupSOL, mSOL, JLP, etc.)

    • Likely DeFi: Heuristic detection (LP tokens, vault tokens, protocol patterns)

    • Unclassified: Regular tokens and assets

  • Dust Filtering: Automatically filters tokens < $1 USD or < 0.01 balance

  • Telegram Alerts: Send formatted notifications with severity levels


Quick Start

Prerequisites

  • Node.js 18+

  • Helius API key (free tier: 100k credits/day)

  • Optional: Telegram Bot Token (for alerts)

Installation

# Clone repository
git clone https://github.com/Allen-Saji/corvus.git
cd corvus

# Install dependencies
npm install

# Configure environment
cp .env.example .env
# Edit .env and add your HELIUS_API_KEY

# Build
npm run build

# Run
npm start
  1. Navigate to MCP Registry in Archestra UI

  2. Click "Self-hosted (orchestrated by Archestra in K8s)"

  3. Fill in the form:

    • Name: Corvus

    • Command: node

    • Docker Image: corvus-mcp:latest

    • Arguments: dist/index.js

    • Environment Variables:

      • HELIUS_API_KEY: Your Helius API key

      • TELEGRAM_BOT_TOKEN: Your Telegram bot token (optional)

  4. Click "Add Server"

  5. Assign to an Agent and test via Chat UI

Docker Deployment

# Build Docker image
docker build -t corvus-mcp:latest .

# Run with environment variables
docker run -d \
  -e HELIUS_API_KEY=your-key \
  -e TELEGRAM_BOT_TOKEN=your-token \
  corvus-mcp:latest

Claude Desktop Integration

Note: This configuration follows standard MCP server patterns but has not been tested with Claude Desktop.

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "corvus": {
      "command": "node",
      "args": ["/path/to/corvus/dist/index.js"],
      "env": {
        "HELIUS_API_KEY": "your-helius-api-key",
        "TELEGRAM_BOT_TOKEN": "your-telegram-token"
      }
    }
  }
}

CLI Mode (Terminal)

Corvus can also run as a standalone command-line tool for direct wallet and DeFi analysis.

Global Installation

# Install globally
npm install -g .

# Or use npm link for development
npm link

CLI Commands

Direct Commands (No AI required):

# Get SOL balance
corvus balance <wallet>

# Get all token holdings
corvus tokens <wallet>

# Get token prices (comma-separated)
corvus price SOL,USDC,JitoSOL

# Get recent transactions
corvus tx <wallet> --limit 20

# Analyze DeFi positions
corvus analyze <wallet>

# Get protocol TVL
corvus protocol jito

# Get top protocols
corvus top --limit 10 --category "Liquid Staking"

# Send Telegram alert
corvus alert <chat_id> "Alert message" --severity warning

# Output raw JSON for any command
corvus balance <wallet> --json

Agentic Chat Mode (AI-powered):

# Start interactive AI chat (auto-detects available provider)
corvus chat

# Use specific provider
corvus chat --provider anthropic
corvus chat --provider openai
corvus chat --provider google

# Use local LLM (free, private)
corvus chat --local

# Example conversation:
You: What are my DeFi positions in wallet 7xKXtg...?
Corvus: [AI analyzes wallet and presents results]

You: Now show me the top 5 lending protocols
Corvus: [AI fetches and displays top lending protocols]

Examples

# Check your wallet balance
corvus balance 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU

# Analyze DeFi positions with pretty formatting
corvus analyze 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU

# Get current SOL and USDC prices
corvus price SOL,USDC

# View top 5 lending protocols
corvus top --limit 5 --category Lending

# Get last 25 transactions
corvus tx <wallet> --limit 25

# Pipe to other tools using --json flag
corvus balance <wallet> --json | jq '.balance_sol'

CLI Features:

  • šŸŽØ Colored terminal output for better readability

  • šŸ“Š Formatted tables for structured data

  • šŸ” --json flag for raw JSON output (scripting-friendly)

  • ⚔ Direct access to all Corvus tools

  • šŸ› ļø Cross-platform (Linux, macOS, Windows)

  • šŸ¤– Agentic chat mode with multi-LLM support (5 providers)

  • šŸŽÆ Custom model selection - use any model from any provider


Agentic Chat Mode

Corvus now supports natural language queries through an interactive AI chat interface. Ask questions in plain English and let the AI orchestrate tool calls automatically.

Supported LLM Providers

Provider

Default Model

Cost Range

Custom Models

Anthropic

Claude 3.5 Sonnet

$3-75/1M tokens

āœ… All Claude models supported

OpenAI

GPT-4o

$0.15-30/1M tokens

āœ… All GPT models supported

Google

Gemini 1.5 Flash

$0.075-5/1M tokens

āœ… All Gemini models supported

Groq

Llama 3.3 70B

$0.05-0.24/1M tokens

āœ… All Groq models supported

Ollama (Local)

Llama 3.2

FREE

āœ… Any locally installed model

šŸ’” Use corvus models to see all available models | Full Model Guide →

Setup

  1. Add API key to .env (choose at least one):

    ANTHROPIC_API_KEY=sk-ant-...  # Recommended
    OPENAI_API_KEY=sk-...
    GOOGLE_API_KEY=...
    GROQ_API_KEY=gsk-...
  2. Or use local Ollama (no API key needed):

    # Install Ollama
    curl -fsSL https://ollama.com/install.sh | sh
    
    # Pull a model
    ollama pull llama2
    
    # Use with Corvus
    corvus chat --local
  3. šŸ†• Custom Model Selection (choose any model from any provider):

    # View all available models
    corvus models              # List all providers
    corvus models anthropic    # Filter by provider
    
    # Use custom model via CLI flag
    corvus chat --provider openai --model gpt-4o-mini
    corvus chat --provider anthropic --model claude-3-5-haiku-20241022
    corvus chat --local --model mistral
    
    # Or set default in config
    corvus config set llm.model gpt-4o-mini
    corvus chat  # Uses config default

    šŸ“– See CUSTOM_MODELS.md for full model list and recommendations

Usage Examples

Basic Chat:

$ corvus chat

šŸ¤– Corvus AI Chat
Provider: anthropic | Model: claude-3-5-sonnet-20241022

You: What's the SOL price?
Corvus: The current SOL price is $79.17 USD.

You: Analyze wallet 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
Corvus: [Analyzes wallet and shows DeFi positions]

You: exit
šŸ“Š Session Summary:
  Turns: 2
  Estimated cost: $0.0023

Advanced Options:

# Use specific provider
corvus chat --provider openai

# Use specific model
corvus chat --provider anthropic --model claude-3-opus-20240229

# Use local LLM (private, free)
corvus chat --local

# Skip privacy warning
corvus chat --no-privacy-warning

Chat Commands

During a chat session:

  • exit or quit - End session and show summary

  • clear - Reset conversation history

  • Any natural language query - Ask questions about Solana/DeFi

Security & Privacy

  • āš ļø Data Privacy: Queries (including wallet addresses) are sent to the selected LLM provider

  • šŸ”’ Private Mode: Use --local flag for Ollama to keep all data on your machine

  • šŸ’° Cost Limits: Sessions auto-terminate after 15 turns or $0.50 estimated cost

  • šŸ›”ļø Input Validation: All tool parameters are validated before execution

  • 🚫 Safety: AI cannot execute destructive actions without confirmation


Available Tools

Tool

Description

Parameters

get_sol_balance

Get SOL balance with USD value

wallet (required)

get_token_balances

Get all SPL token holdings

wallet (required)

get_recent_transactions

Get transaction history

wallet (required), limit (default: 10, max: 50)

get_token_price

Get token prices

tokens (comma-separated, max: 50)

get_protocol_tvl

Get protocol TVL metrics

protocol (name or slug)

get_top_solana_protocols

Get top protocols by TVL

limit (default: 10, max: 50), category (optional)

analyze_wallet_defi_positions

Analyze DeFi positions

wallet (required)

send_telegram_alert

Send Telegram notification

chat_id, message, severity (info/warning/critical)


Architecture

Three-layer design with deterministic tool execution:

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│   Tools (MCP Interface)         │  8 production-ready tools
│   src/tools/*.ts                │  Input validation, response formatting
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
              │
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│   Libraries (API Clients)       │  Helius, DeFiLlama clients
│   src/lib/*.ts                  │  Error handling, retries, sanitization
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
              │
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│   Data (Static Registries)      │  Known DeFi tokens, token symbols
│   src/data/*.ts                 │  Registry-based classification
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

Design Principle: All data fetching, validation, formatting, and error handling happens inside the tools. The LLM only selects which tool to use.


Testing

Comprehensive test suite with 210 passing tests (~6 seconds execution):

# Run all tests
npm test

# Run with coverage
npm run test:coverage

# Run in watch mode
npm run test:watch

Test Coverage:

  • Input validation (11 tests)

  • DeFi classifier (10 tests)

  • Token registry (7 tests)

  • Helius API client (24 tests)

  • DeFiLlama API client (24 tests)

  • Tool implementations (113 tests)

  • MCP server integration (12 tests)

  • Integration tests (9 tests)

All tests are mock-based (no external API dependencies) for fast, deterministic execution.


Example Usage

Get Wallet Balance

User: "Get the SOL balance for wallet 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"

Response:
{
  "balance_sol": 5.5,
  "balance_usd": 550.00,
  "price_per_sol": 100.00
}

Analyze DeFi Positions

User: "Analyze DeFi positions in wallet 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"

Response:
Known DeFi Positions:
  - jupSOL: 2.5 tokens ($250 USD) - Jito Liquid Staking
  - mSOL: 1.0 tokens ($100 USD) - Marinade Staking

Likely DeFi Positions:
  - SOL-USDC-LP: 0.5 tokens ($50 USD) - LP token detected

Summary:
  - Total DeFi Value: $400 USD
  - Protocols: Jito, Marinade, Unknown DEX

Get Protocol Rankings

User: "What are the top 5 Solana DeFi protocols by TVL?"

Response:
1. Kamino Lend - $1.65B (Lending)
2. Jito - $1.07B (Liquid Staking)
3. Marinade - $850M (Liquid Staking)
4. Jupiter - $600M (DEX)
5. Drift - $400M (Perpetuals)

Security

  • API Key Management: Environment variables, never hardcoded

  • Input Validation: Solana SDK PublicKey validation for wallet addresses

  • Error Sanitization: Generic error messages, no internal details leaked

  • Request Timeouts: 5-second default with AbortController

  • Rate Limiting: Built-in limits (50 tokens max for pricing, 50 transactions max)

  • Authorization Headers: Proper API authentication


Data Sources

Source

Purpose

API Key Required

Rate Limits

Helius

Blockchain data (balances, transactions)

Yes (free tier)

100k credits/day

DeFiLlama

Protocol TVL, token prices

No

Public API


The Differentiator: 3-Bucket Classification

Corvus uses a unique dual-strategy approach to identify DeFi positions:

1. Known DeFi (Registry-Based)

Hardcoded registry of verified receipt tokens:

  • Liquid Staking: jupSOL, mSOL, bSOL, stSOL

  • Governance: JUP, JTO, MNDE, RAY, ORCA

  • LP Tokens: JLP, USDC-USDT-LP

2. Likely DeFi (Heuristic-Based)

Pattern detection for unknown tokens:

  • LP Tokens: Contains "LP" or hyphen (SOL-USDC)

  • Vault Tokens: k-prefix (kUSDC = Kamino vault)

  • Protocol Names: Contains known protocol names

  • No Market Price: Receipt tokens typically not traded

Requires 2+ signals to classify as "Likely DeFi"

3. Unclassified

Everything else (regular tokens, base assets, stablecoins)

Why This Matters: Users can instantly see their staking positions, lending deposits, and LP tokens across all protocols without manual tracking.


Contributing

Contributions are welcome! Here's how to help:

Adding DeFi Tokens to Registry

Edit src/data/defi-registry.ts:

{
  mint: "token-mint-address",
  symbol: "TOKEN",
  name: "Token Name",
  protocol: "Protocol Name",
  category: "Liquid Staking" | "Governance" | "LP Token",
  underlying_asset: "SOL", // optional
  description: "Brief description"
}

Adding New Tools

  1. Create src/tools/your-tool.ts

  2. Implement with validation, API calls, structured response

  3. Register in src/index.ts (ListTools and CallTool handlers)

  4. Add tests in tests/unit/tools/your-tool.test.ts

  5. Run npm test to verify

Code Standards

  • TypeScript strict mode

  • All responses include _meta field (data source, timestamp)

  • Input validation before API calls

  • Error handling with sanitized messages

  • Mock-based unit tests (no real API calls)


License

MIT License - see LICENSE for details


Acknowledgments

Built with:


Contact


Built for the 2 Fast 2 MCP Hackathon

Available Tools

8 tools
analyze_wallet_defi_positionsA

Analyze a Solana wallet's DeFi positions in depth. Identifies staking positions, lending deposits, LP tokens, and idle assets. Categorizes each position by protocol and type, calculates USD values, and flags tokens it cannot classify. This is the most comprehensive wallet analysis tool - use it when the user wants to understand their DeFi exposure, portfolio breakdown, or position details.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletYesBase58 Solana wallet address (32-44 characters)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description bears full burden. It discloses that the tool identifies, categorizes, calculates USD values, and flags unclassifiable tokens. It does not mention performance or error handling but provides sufficient behavioral context for a safe read operation.

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 concise sentences: purpose, capabilities, usage guidance. No redundant or wasted words; every sentence adds value.

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 simple parameter and no output schema, the description covers input, capabilities, and usage context adequately. It could mention output format but is sufficient overall.

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 one parameter 'wallet' having a clear description. The tool description does not add further meaning beyond the schema's parameter description, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool analyzes Solana wallet DeFi positions in depth, listing specific actions (staking, lending, LP tokens, idle assets) and positioning it as the most comprehensive wallet analysis tool, distinguishing it from siblings like get_token_balances and get_sol_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 explicitly says to use it when the user wants to understand DeFi exposure, portfolio breakdown, or position details. It implies it's the comprehensive option but does not explicitly exclude or name alternatives for simpler queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_protocol_tvlA

Get detailed TVL and metrics for a specific Solana DeFi protocol. Returns current TVL, TVL by chain, category, and recent changes. Use this when the user asks about a specific protocol's health or TVL.

ParametersJSON Schema
NameRequiredDescriptionDefault
protocolYesProtocol name (e.g., 'kamino', 'jito', 'marinade', 'raydium')

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden of behavioral disclosure. It describes the return data (current TVL, by chain, category, recent changes) but does not mention error handling (e.g., invalid protocol), data freshness, or whether it requires special permissions. As a read-only query, it is adequately transparent for most scenarios but lacks depth.

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, both front-loaded with essential information. Every sentence adds value: the first explains what the tool does, the second explains when to use it. No filler or redundancies.

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 no output schema, the description provides a reasonable outline of return fields (current TVL, TVL by chain, category, recent changes). It could be more complete by specifying units (e.g., USD) or data freshness, but it covers the key aspects for the agent to understand the tool's output.

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% with a single parameter described as 'Protocol name'. The description adds valuable context by listing examples (kamino, jito, marinade, raydium) and clarifying it is Solana DeFi protocols, which goes beyond the raw schema.

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 it returns detailed TVL and metrics for a specific Solana DeFi protocol, listing specific data points (current TVL, by chain, etc.). It distinguishes itself from sibling tools like 'get_top_solana_protocols' which lists multiple protocols, and 'analyze_wallet_defi_positions' which is wallet-specific.

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 explicitly says 'Use this when the user asks about a specific protocol's health or TVL.' This provides clear context for when to invoke the tool. It does not provide explicit when-not-to-use statements, but the sibling tools cover alternative use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_transactionsA

Get recent transaction history for a Solana wallet. Returns parsed transactions with human-readable descriptions, timestamps, and token transfer details. Note: USD values shown are current prices, not prices at time of transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of transactions to return (default 10, max 50)
walletYesBase58 Solana wallet address

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses output details (parsed transactions, timestamps, token transfers) and notes that USD values are current prices, not historical. This provides good behavioral context.

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

Conciseness5/5

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

The description is two sentences plus a note—efficient and front-loaded. Every sentence adds value without 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?

For a tool with no output schema, the description covers return content well (parsed transactions, descriptions, timestamps, token transfers) and adds a note on USD pricing. It is moderately complete for its complexity.

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%, so baseline is 3. The description adds no additional meaning to the parameters beyond what the schema already provides (wallet address, limit).

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 gets recent transaction history for a Solana wallet. It uses specific verbs and resources, and the context of sibling tools (balances, prices) distinguishes its purpose.

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 implicitly indicates when to use this tool (for transaction history) versus siblings (balances, prices). While no explicit when-not is given, the context is clear enough for an AI agent to differentiate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sol_balanceA

Get the SOL balance of a Solana wallet address. Returns the balance in SOL and its current USD value. Use this when the user asks specifically about SOL balance, not other tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletYesBase58 Solana wallet address (32-44 characters)

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It describes the return value (balance in SOL and USD value), which is useful. However, it does not disclose any additional behavioral traits such as network dependencies, error conditions, or whether it is read-only.

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 with two sentences. It is front-loaded with the core function and includes usage guidance. No extraneous words.

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 balance-checking tool with one parameter and no output schema, the description adequately explains what it returns (balance in SOL and USD value). The context signals and sibling tools provide additional orientation. No gaps.

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% (the 'wallet' parameter is described as 'Base58 Solana wallet address (32-44 characters)'). The description adds no additional parameter meaning beyond what the schema provides, which is sufficient. 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 gets the SOL balance of a Solana wallet and returns balance in SOL and USD value. It explicitly distinguishes from siblings by noting 'Use this when the user asks specifically about SOL balance, not other tokens.'

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 on when to use ('when the user asks specifically about SOL balance') and implies when not to use ('not other tokens'). However, it does not explicitly name alternative tools or provide detailed when-not scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_token_balancesA

Get ALL token holdings for a Solana wallet address. Returns every SPL token the wallet holds with mint address, symbol, name, balance, and USD value where available. Use this when the user asks what tokens a wallet holds or wants a general overview of wallet contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletYesBase58 Solana wallet address (32-44 characters)

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool returns every SPL token and fields including USD value where available. However, it does not mention error handling (e.g., invalid wallet), potential pagination, or rate limits, which slightly reduces transparency. Still mostly adequate for a simple read tool.

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 sentences: the first states purpose and scope, the second adds return fields and usage guidance. No fluff, front-loaded with key information. Every part earns its place.

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 low complexity (single parameter, no output schema, no annotations), the description covers the essential points: what it does, when to use it, and what it returns. It lacks details on return format or error behavior, but for this straightforward tool, it is sufficient.

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 description coverage is 100%, with the 'wallet' parameter already well-described in the schema. The tool description reaffirms the parameter's purpose but does not add new semantic details beyond the tool's overall function. Slight extra value in contextualizing the parameter within the broader task.

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 verb ('Get') and resource ('ALL token holdings for a Solana wallet address'). It lists the return fields (mint address, symbol, name, balance, USD value) and distinguishes itself from siblings like get_sol_balance (SOL only) and get_token_price (specific token price).

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

Usage Guidelines5/5

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

The description explicitly says 'Use this when the user asks what tokens a wallet holds or wants a general overview of wallet contents.' This provides clear usage context and implicitly excludes siblings (e.g., get_sol_balance for SOL, analyze_wallet_defi_positions for DeFi positions).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_token_priceA

Get current prices for one or more Solana tokens. Accepts token symbols (SOL, USDC, JitoSOL, etc.) or mint addresses. Returns price in USD with confidence score. Use this for spot price checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokensYesComma-separated list of token symbols or mint addresses (e.g., 'SOL,USDC,JitoSOL' or mint addresses)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that it returns USD price with confidence score, but lacks detail on error handling, rate limits, or data source. For a simple price query, this is adequate but not thorough.

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 sentences, no unnecessary words. The action is front-loaded and every sentence adds value.

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 tool with one parameter and no output schema, the description covers inputs, action, and return value. It could explicitly mention that output is a mapping from token to price/confidence, but the description is sufficient for an agent to understand the tool's purpose and usage.

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%, so baseline is 3. The description largely repeats the schema's parameter description ('Accepts token symbols or mint addresses'), adding minimal new meaning.

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 current prices'), the resource ('Solana tokens'), and the output ('price in USD with confidence score'). It distinguishes from siblings like 'get_token_balances' which focuses on balances rather than prices.

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 explicitly states 'Use this for spot price checks', providing direct usage guidance. It does not explicitly list when not to use, but the sibling context makes alternatives clear. Minor improvement would be to mention that for historical prices a different tool is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_solana_protocolsA

Get the top Solana DeFi protocols ranked by Total Value Locked. Returns protocol name, TVL, category, and percentage changes. Use this when the user asks about the overall Solana DeFi landscape or wants to compare protocols.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of protocols to return (default 10, max 50)
categoryNoOptional filter: 'Lending', 'DEX', 'Liquid Staking', 'Yield', 'CDP'

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, but description is transparent about return data and purpose. For a read-only tool, no further behavioral details are necessary.

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 sentences with no redundancy. Each sentence adds value: first defines the tool, second gives usage guidance.

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?

No output schema, but description enumerates returned fields. Tool is simple and well-documented for its purpose.

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 covers both parameters with descriptions. The description adds context by stating the ranking basis (TVL) and output fields, which complements the schema.

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 retrieves top Solana DeFi protocols ranked by TVL, specifies the returned fields (name, TVL, category, percentage changes), and distinguishes from siblings like get_protocol_tvl by focusing on overall landscape comparison.

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?

Explicitly says to use when user asks about overall Solana DeFi landscape or wants to compare protocols. Does not explicitly state when not to use it, but siblings are listed for inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_telegram_alertA

Send a formatted message to a Telegram chat. Use this when the user explicitly asks to send information to Telegram, get an alert, or be notified. Requires the user's Telegram chat ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYesTelegram chat ID (numeric ID or @username)
messageYesMessage content (supports Markdown formatting)
severityNoMessage severity level - affects emoji prefix (default: info)

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description must cover behavior. It mentions Markdown support and severity emoji prefix, but omits details like whether the call is synchronous, rate limits, or if the action is idempotent. It adequately indicates this is a write operation but lacks depth.

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 sentences, front-loaded with the core purpose, no filler. Every sentence adds distinct value: action, usage guidance, prerequisite.

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 3-param tool with no output schema, the description covers purpose, usage, parameter details, and basic behavior. Missing return value or error info, but that is acceptable given the tool's 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%, but the description adds valuable context: chat_id format ('numeric ID or @username') and severity's effect ('affects emoji prefix'). This provides meaning beyond the schema's enum descriptions.

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 ('Send a formatted message to a Telegram chat') and the resource ('Telegram'). It distinguishes itself from siblings, which are all data retrieval tools, by being a write/notification tool.

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 explicitly tells when to use the tool ('when the user explicitly asks to send... get an alert, or be notified') and includes a prerequisite ('Requires the user's Telegram chat ID'). It does not list alternatives, but the sibling context makes the usage scope clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 8 tool updatesv1.0.0
    • First observedanalyze_wallet_defi_positions
    • First observedget_protocol_tvl
    • First observedget_recent_transactions
    • First observedget_sol_balance
    • First observedget_token_balances
    • First observedget_token_price
    • First observedget_top_solana_protocols
    • First observedsend_telegram_alert

TDQS

A4.3/5.0
Disambiguation5/5

Each tool targets a distinct aspect of Solana data: token balances, SOL balance, price, transactions, protocol TVL, top protocols, wallet DeFi analysis, and Telegram alerts. No two tools have overlapping functionality.

Naming Consistency4/5

All tools follow snake_case with verb_noun pattern. Minor inconsistency: 'get_token_balances' uses plural while 'get_sol_balance' uses singular, but overall pattern is clear and predictable.

Tool Count5/5

8 tools is well-scoped for the Solana data domain. Covers essential wallet queries, protocol data, and alerting without being excessive or too sparse.

Completeness4/5

Covers core use cases: wallet holdings, prices, transactions, protocol TVL, wallet DeFi analysis, and alerts. Minor gaps like NFT holdings or historical prices, but still robust for informational queries.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server enabling AI agents to interact with the Solana blockchain for DeFi operations like checking balances, transferring tokens, executing swaps, and fetching price data.
    29
    22
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Solana blockchain interaction server that allows AI tools to query blockchain data using natural language, access structured token information, and generate human-readable explanations of complex blockchain concepts.
    6
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides read-only access to Solana on-chain data, enabling natural language queries for wallet balances, token holdings, prices, transactions, and more via MCP-compatible clients.
    8
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Allen-Saji/corvus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server