Klever MCP Server
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Klever MCP Servershow me best practices for Klever token contracts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Klever MCP Server
A Model Context Protocol (MCP) server tailored for Klever blockchain smart contract development. This server maintains and serves contextual knowledge including code patterns, best practices, and runtime behavior for developers working with the Klever VM SDK.
Features
š Triple Mode Operation: Run as HTTP API server, MCP stdio server, or public hosted MCP server
š¾ Flexible Storage: In-memory or Redis backend support
š Smart Context Retrieval: Query by type, tags, or contract type
š Automatic Pattern Extraction: Parse Klever contracts to extract examples and patterns
šÆ Relevance Ranking: Intelligent scoring and ranking of context
š Live Updates: Add and update context in real-time
š”ļø Type Safety: Full TypeScript with Zod validation
š Comprehensive Knowledge Base: Pre-loaded with Klever VM patterns, best practices, and examples
š§ Contract Validation: Automatic detection of common issues and anti-patterns
š Deployment Scripts: Ready-to-use scripts for contract deployment, upgrade, and querying
Related MCP server: code-graph-rag-mcp
Quick Start
Install and run instantly via npx ā no cloning required:
npx -y @klever/mcp-serverOr connect to the hosted public server:
claude mcp add -t http klever-vm https://mcp.klever.org/mcpSee MCP Client Integration for client-specific configuration.
Architecture
mcp-klever-vm/
āāā src/
ā āāā api/ # HTTP API routes with validation
ā āāā context/ # Context management service layer
ā āāā mcp/ # MCP protocol server implementation
ā āāā parsers/ # Klever contract parser and validator
ā āāā storage/ # Storage backends (memory/Redis)
ā ā āāā memory.ts # In-memory storage with size limits
ā ā āāā redis.ts # Redis storage with optimized queries
ā āāā types/ # TypeScript type definitions
ā āāā utils/ # Utilities and ingestion tools
ā āāā knowledge/ # Modular knowledge base (95+ entries)
ā āāā core/ # Core concepts and imports
ā āāā storage/ # Storage patterns and mappers
ā āāā events/ # Event handling and rules
ā āāā tokens/ # Token operations and decimals
ā āāā modules/ # Built-in modules (admin, pause)
ā āāā tools/ # CLI tools (koperator, ksc)
ā āāā scripts/ # Helper scripts
ā āāā examples/ # Complete contract examples
ā āāā errors/ # Error patterns
ā āāā best-practices/ # Optimization and validation
ā āāā documentation/ # API reference
āāā tests/ # Test files
āāā docs/ # DocumentationKey Improvements Made
Storage Layer
Added memory limits to prevent OOM in InMemoryStorage
Optimized Redis queries to avoid O(N) KEYS command
Added atomic transactions for Redis operations
Improved error handling and validation
API Security
Added input validation for all endpoints
Batch operation size limits
Proper error responses without leaking internals
Environment-aware error messages
Type Safety
Centralized schema validation
Proper TypeScript interfaces for options
Runtime validation of stored data
Performance
Batch operations using Redis MGET
Index-based queries instead of full scans
Optimized count operations
Installation
Clone the repository:
git clone https://github.com/klever-io/mcp-klever-vm.git
cd mcp-klever-vmInstall dependencies:
pnpm installCopy environment configuration:
cp .env.example .envInstall Klever SDK tools (required for transactions):
chmod +x scripts/install-sdk.sh && ./scripts/install-sdk.shBuild the project:
pnpm run buildConfiguration
Edit .env file to configure the server:
# Server Mode (http, mcp, or public)
MODE=http
# HTTP Server Port (only for http mode)
PORT=3000
# Storage Backend (memory or redis)
STORAGE_TYPE=memory
# Maximum contexts for in-memory storage (default: 10000)
MEMORY_MAX_SIZE=10000
# Redis URL (only if STORAGE_TYPE=redis)
REDIS_URL=redis://localhost:6379
# Node environment (development or production)
NODE_ENV=developmentMCP Client Integration
Claude Code
# Add via npx (recommended)
claude mcp add klever-vm -- npx -y @klever/mcp-server
# Or connect to the public hosted server
claude mcp add -t http klever-vm https://mcp.klever.org/mcpClaude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"klever-vm": {
"command": "npx",
"args": ["-y", "@klever/mcp-server"]
}
}
}For detailed setup, see the Claude Desktop Installation Guide.
Cursor
Add to your Cursor MCP settings (.cursor/mcp.json):
{
"mcpServers": {
"klever-vm": {
"command": "npx",
"args": ["-y", "@klever/mcp-server"]
}
}
}VS Code (GitHub Copilot)
Add to .vscode/mcp.json in your project:
{
"servers": {
"klever-vm": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@klever/mcp-server"]
}
}
}For detailed setup, see the VS Code Installation Guide.
Public MCP Server
The Klever MCP Server can be hosted as a public shared service, allowing any developer to connect without running it locally.
Connecting to the Public Server
# Add permanently (user-level)
claude mcp add -t http klever-vm https://mcp.klever.org/mcp
# Add for current project only
claude mcp add -t http -s project klever-vm https://mcp.klever.org/mcpAvailable Tools (Public Mode)
The public server exposes a read-only subset of tools for security:
Tool | Description |
| Search the Klever VM knowledge base |
| Retrieve a specific context by ID |
| Find contexts similar to a given context |
| Get knowledge base statistics |
| Enhance queries with relevant Klever VM context |
Write operations (add_context) and shell-based tools (init_klever_project, add_helper_scripts) are disabled in public mode.
Self-Hosting with Docker
# Build and run
docker build -t mcp-klever-vm .
docker run -p 3000:3000 mcp-klever-vm
# Or using docker compose
docker compose up -dThen connect:
claude mcp add -t http klever-vm-local http://localhost:3000/mcpSelf-Hosting without Docker
pnpm install
pnpm run build
pnpm run start:publicEnvironment Variables (Public Mode)
Variable | Default | Description |
|
| Set to |
|
| Server port |
| (unset) | Comma-separated allowed origins. Unset or |
|
| MCP endpoint requests/min per IP |
|
| API endpoint requests/min per IP |
|
| Max request body size |
Deployment Notes
For production at mcp.klever.org:
Deploy Docker container behind a reverse proxy (nginx/Caddy/cloud LB) for TLS termination
Ensure proxy passes
mcp-session-idheader and supports SSE (disable response buffering)Single instance is sufficient as the server is read-only with an in-memory knowledge base
Consider Cloudflare for DDoS protection (SSE is supported)
Usage
Knowledge Base Loading
The server automatically loads the Klever knowledge base based on your storage type:
Memory Storage (Default)
Knowledge is automatically loaded when the server starts
No need to run
pnpm run ingestseparatelyData exists only while server is running
Best for development and testing
Redis Storage
# First, ingest the knowledge base (one time)
pnpm run ingest
# Then start the server
pnpm run devKnowledge persists in Redis database
Survives server restarts
Best for production use
This will load:
Smart contract templates and examples
Annotation rules and best practices
Storage mapper patterns and comparisons
Deployment and query scripts
Common errors and solutions
Testing patterns
API reference documentation
Running as HTTP Server
# Development mode
pnpm run dev
# Production mode
pnpm run build && pnpm startThe HTTP API will be available at http://localhost:3000/api
Running as MCP Server
MODE=mcp pnpm startUse with any MCP-compatible client.
API Endpoints
POST /api/context
Ingest new context into the system.
{
"type": "code_example",
"content": "contract code here",
"metadata": {
"title": "Token Contract Example",
"description": "ERC20-like token implementation",
"tags": ["token", "fungible"],
"contractType": "token"
}
}GET /api/context/:id
Retrieve specific context by ID.
POST /api/context/query
Query contexts with filters.
{
"query": "transfer",
"types": ["code_example", "best_practice"],
"tags": ["token"],
"contractType": "token",
"limit": 10,
"offset": 0
}PUT /api/context/:id
Update existing context.
DELETE /api/context/:id
Delete context.
GET /api/context/:id/similar
Find similar contexts.
POST /api/context/batch
Batch ingest multiple contexts.
MCP Tools
When running as MCP server, the following tools are available:
query_context: Search for relevant Klever development contextadd_context: Add new context to the knowledge baseget_context: Retrieve specific context by IDfind_similar: Find contexts similar to a given contextget_knowledge_stats: Get statistics about the knowledge baseinit_klever_project: Initialize a new Klever smart contract project with helper scriptsenhance_with_context: Automatically enhance queries with relevant Klever VM context
Context Types
code_example: Working code snippets and examples (Rust smart contract code)best_practice: Recommended patterns and practicessecurity_tip: Security considerations and warningsoptimization: Performance optimization techniquesdocumentation: General documentation and guideserror_pattern: Common errors and solutionsdeployment_tool: Deployment scripts and utilities (bash scripts, tools)runtime_behavior: Runtime behavior explanations
Pre-loaded Knowledge Base
The MCP server includes a comprehensive knowledge base with 95+ entries organized into 11 categories:
Critical Patterns
Payment handling and token operations
Decimal conversions and calculations
Event emission and parameter rules
CLI tool usage and best practices
Contract Patterns & Examples
Basic contract structure templates
Complete lottery game implementation
Staking contract with rewards
Cross-contract communication patterns
Remote storage access patterns
Token mapper helper modules
Development Tools
Koperator: Complete CLI reference with argument encoding
KSC: Build commands and project setup
Deployment, upgrade, and query scripts
Interactive contract management tools
Common utilities library (bech32, network management)
Storage & Optimization
Storage mapper selection guide with performance comparisons
Namespace organization patterns
View endpoints for efficient queries
Gas optimization techniques
OptionalValue vs Option patterns
Best Practices & Security
Input validation patterns
Error handling strategies
Admin and pause module usage
Access control patterns
Common mistakes and solutions
Ingesting Contracts
Use the built-in ingestion utilities to parse and import Klever contracts:
import { StorageFactory } from './storage/index.js';
import { ContextService } from './context/service.js';
import { ContractIngester } from './utils/ingest.js';
const storage = StorageFactory.create('memory');
const contextService = new ContextService(storage);
const ingester = new ContractIngester(contextService);
// Ingest a single contract
await ingester.ingestContract('./path/to/contract.rs', 'AuthorName');
// Ingest entire directory
await ingester.ingestDirectory('./contracts', 'AuthorName');
// Add common patterns
await ingester.ingestCommonPatterns();Development
# Run tests
pnpm test
# Lint code
pnpm run lint
# Format code
pnpm run format
# Watch mode
pnpm run dev
# Ingest/update knowledge base
pnpm run ingestContract Validation
The server can automatically validate Klever contracts and detect issues:
import { KleverValidator } from './parsers/validators.js';
const issues = KleverValidator.validateContract(contractCode);
// Returns array of detected issues with suggestionsValidation checks include:
Event annotation format (double quotes, camelCase)
Managed type API parameters
Zero address validation in transfers
Optimal storage mapper selection
Module naming conventions
Example Use Cases
1. Smart Contract Development Assistant
Integrate with your IDE to provide context-aware suggestions for Klever contract development.
2. Code Review Tool
Automatically check contracts against best practices and security patterns.
3. Learning Platform
Provide examples and explanations for developers learning Klever development.
4. Documentation Generator
Extract and organize contract documentation automatically.
Project Specifications and Examples
For complete project implementation examples and specifications, see:
Project Specification Template - A fill-in template for specifying Klever smart contract projects. Guides AI assistants through MCP knowledge discovery, task tracking, and phased implementation. Includes a KleverDice example.
Project Initialization
The MCP server includes a powerful project initialization tool that creates a new Klever smart contract project with all necessary helper scripts.
Using the init_klever_project Tool
When connected via MCP, use the init_klever_project tool:
{
"name": "my-token-contract",
"template": "empty",
"noMove": false
}Parameters:
name(required): The name of your contracttemplate(optional): Template to use (default: "empty")noMove(optional): If true, keeps project in subdirectory (default: false)
Generated Helper Scripts
The tool creates the following scripts in the scripts/ directory:
build.sh: Builds the smart contract
deploy.sh: Deploys to Klever testnet with auto-detection of contract artifacts
upgrade.sh: Upgrades existing contract (auto-detects from history.json)
query.sh: Query contract endpoints with proper encoding/decoding
test.sh: Run contract tests
interact.sh: Shows usage examples and available commands
Example Workflow
Initialize project:
# Via MCP tool init_klever_project({"name": "my-contract"})Build contract:
./scripts/build.shDeploy to testnet:
./scripts/deploy.shQuery contract:
./scripts/query.sh --endpoint getSum ./scripts/query.sh --endpoint getValue --arg myKeyUpgrade contract:
./scripts/upgrade.sh
All deployment history is tracked in output/history.json for easy reference.
Automatic Context Enhancement
The MCP server can automatically enhance queries with relevant Klever VM context. This ensures your MCP client always has access to the most relevant information.
Using Context Enhancement
Use the enhance_with_context tool to automatically add relevant context to any query:
{
"tool": "enhance_with_context",
"arguments": {
"query": "How do I create a storage mapper?",
"autoInclude": true
}
}This will:
Extract relevant keywords from the query
Search the knowledge base for matching contexts
Return an enhanced query with context included
Provide metadata about what was found
Integration Pattern
For MCP clients that want to always check Klever context first:
// Always enhance Klever-related queries
if (query.match(/klever|kvm|smart contract|endpoint/i)) {
const enhanced = await callTool('enhance_with_context', { query });
// Use enhanced.enhancedQuery for processing
}The context enhancement feature automatically enriches queries with relevant Klever VM knowledge from the comprehensive knowledge base.
Integration Examples
VS Code Extension
// Query for token transfer examples
const response = await fetch('http://localhost:3000/api/context/query', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: 'transfer',
types: ['code_example'],
contractType: 'token'
})
});CLI Tool
# Using curl to add context
curl -X POST http://localhost:3000/api/context \
-H "Content-Type: application/json" \
-d '{
"type": "security_tip",
"content": "Always check for zero address",
"metadata": {
"title": "Zero Address Check",
"tags": ["security", "validation"]
}
}'Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Make your changes
Add tests
Submit a pull request
License
MIT License - see LICENSE file for details
Acknowledgments
Inspired by Context7 by Upstash
Built for the Klever Blockchain
Uses the Klever VM SDK (Rust)
Available Tools
23 toolsadd_contextAInspect
Add a new knowledge entry to the Klever VM context store. Use this to save code examples, best practices, security tips, or documentation that can later be retrieved via query_context or search_documentation. Returns the generated ID of the new entry.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | The category of this knowledge entry. Choose the most specific type: "code_example" for Rust snippets, "best_practice" for recommended patterns, "security_tip" for vulnerability guidance, "error_pattern" for known error solutions. | |
| content | Yes | The main content body ā typically Rust source code, a CLI command, or a detailed explanation. For code, include the full working snippet. | |
| metadata | Yes | Entry metadata including title, tags, and categorization. At minimum, provide a title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false) indicate write operation; description confirms it adds an entry and returns an ID. Adds context about storage for later retrieval. Does not contradict annotations. Could mention potential limits or failure modes, but sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states action and resource, second gives usage context and return value. No fluff, well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, return value, and param details via schema. Lacks error handling or storage constraints, but for a simple add operation with complete schema, it's nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with detailed param docs (type enum, metadata nested fields). Description adds only return value info. Baseline score of 3 applies as schema handles semantics adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb ('add'), resource ('knowledge entry to Klever VM context store'), and purpose ('save code examples, best practices...'). Differentiates from sibling tools like query_context and search_documentation by noting retrieval. No tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases (saving various knowledge types) and hints at alternatives for retrieval. Lacks explicit when-not-to-use or distinction from siblings like add_helper_scripts, but context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_helper_scriptsAIdempotentInspect
Add build, deploy, upgrade, query, test, and interact automation scripts to an existing Klever smart contract project. Creates a scripts/ directory with bash scripts and updates .gitignore. Run this from the project root directory (where Cargo.toml is located). This tool generates scaffold files ā for koperator CLI syntax reference (correct flags like --args, --values for payments), use search_documentation instead.
| Name | Required | Description | Default |
|---|---|---|---|
| contractName | No | The contract name to embed in scripts (e.g. "my-token"). If omitted, auto-detected from the `name` field in Cargo.toml. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral context beyond annotations: it creates a scripts/ directory, updates .gitignore, and generates scaffold files. Annotations already mark it as idempotent and non-destructive. No contradictions. Slightly lacking details on overwrite behavior for existing files, but sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first lists script types, second gives prerequisite and alternative tool reference. No unnecessary words, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers purpose, prerequisites, and boundary with search_documentation. It is complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter contractName has full schema description coverage (100%). The schema already explains its purpose and auto-detection behavior. The tool description does not add further parameter details, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds automation scripts (build, deploy, upgrade, etc.) to an existing project. It uses a specific verb-resource combination and distinguishes itself from sibling tools like deploy_sc by clarifying it generates scaffold scripts, not performing deployments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to run from the project root directory and directs users to search_documentation for CLI syntax reference, providing clear when-to-use and when-not-to-use guidance. Also implies the tool is for existing projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_contractARead-onlyIdempotentInspect
Analyze Klever smart contract Rust source code for common issues. Checks for missing imports, missing #[klever_sc::contract] macro, missing endpoint annotations, payable handlers without call_value usage, storage mappers without #[storage_mapper], and missing event definitions. Returns findings with severity (error/warning/info) and links to relevant knowledge base entries.
| Name | Required | Description | Default |
|---|---|---|---|
| sourceCode | Yes | The full Rust source code of the Klever smart contract to analyze. Must be valid Rust code using klever_sc imports. | |
| contractName | No | Human-readable name for the contract (used in output labeling). Defaults to "contract" if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it as read-only and idempotent. The description adds that it returns findings with severity and links to knowledge base entries, providing useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused paragraph: it leads with purpose, enumerates specific checks, and ends with output format. Every sentence is valuable and efficiently conveys necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately describes the output structure (findings with severity and links). Parameters are fully documented in the input schema, and the tool's purpose is fully explained without gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The tool description does not add new meaning to parameters beyond what the schema already provides, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Analyze Klever smart contract Rust source code for common issues' and lists specific checks (missing imports, macros, endpoint annotations, etc.), clearly distinguishing it from sibling tools like deploy_sc or invoke_sc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool is for analyzing source code for common issues, implying use before deployment or to check code quality. It does not explicitly state when not to use or provide alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_sdk_statusARead-onlyIdempotentInspect
Check whether the Klever SDK is installed and report the status of each component. Returns JSON with installation state and versions for: ksc (smart contract compiler), koperator (blockchain CLI), VM library (libvmexeccapi), and wallet key file. Run this before init_klever_project or install_klever_sdk to verify prerequisites.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint; description adds useful detail about returned JSON with component status, beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose and actionable context, no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only check tool, description adequately covers purpose, return format, and usage context. Lacks error handling details but sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is trivial. Description does not need to add param info; baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states checking SDK installation and component status, listing specific components (ksc, koperator, etc.), distinguishing from sibling tools like init_klever_project and install_klever_sdk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises running before init_klever_project or install_klever_sdk to verify prerequisites, providing clear context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_scAInspect
Build an unsigned smart contract deployment transaction for the Klever blockchain. Provide either wasmPath (preferred ā reads the file server-side) or wasmHex. Returns the unsigned transaction for client-side signing. The MCP server NEVER handles private keys.
| Name | Required | Description | Default |
|---|---|---|---|
| sender | Yes | Deployer address (klv1... bech32 format). | |
| wasmPath | No | Absolute path to the compiled WASM file (preferred over wasmHex to avoid loading large binaries into AI context). | |
| wasmHex | No | Smart contract WASM bytecode as a hex-encoded string. Use wasmPath instead for large contracts. | |
| initArgs | No | Optional base64-encoded init arguments for the contract constructor. | |
| network | No | Network to use. Options: "mainnet", "testnet", "devnet", "local". Defaults to server default (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only behavior (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds critical behavioral context: the tool never handles private keys, returns an unsigned transaction for client-side signing, and reads files server-side. These details go beyond annotations and aid safe use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main purpose. Every sentence adds necessary information: action, parameter guidance, and security context. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and the tool's moderate complexity (5 params, 1 required), the description covers the core workflow adequately. It explains the transaction lifecycle (build unsigned ā sign client-side). It could improve by specifying the return format or error handling, but for an agent the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already describes each parameter. The description adds limited extra value: it explains the preference for wasmPath to avoid large context loads and mentions that network defaults to mainnet. However, it does not provide deeper semantics beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it builds an unsigned smart contract deployment transaction for the Klever blockchain. It distinguishes the tool by specifying the two input methods (wasmPath and wasmHex) and their preference. No sibling tool performs deployment, so differentiation is inherently clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (for deploying a smart contract) and gives guidance on parameter choice (prefer wasmPath). It does not explicitly exclude alternative tools like invoke_sc, but the purpose is specific enough that an agent can infer when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enhance_with_contextARead-onlyIdempotentInspect
Augment a natural-language query with relevant Klever VM knowledge base context. Extracts Klever-specific keywords, finds matching entries, and returns the original query combined with relevant code examples and documentation in markdown. Use this to enrich a user prompt before answering Klever development questions.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The user's natural-language question or prompt to enhance (e.g. "How do I handle KLV payments in my contract?"). | |
| autoInclude | No | When true (default), automatically appends the most relevant knowledge base entries to the response. Set to false to only return metadata without injecting context. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent behavior. The description adds value by detailing the process: keyword extraction, matching, returning combined markdown. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action, and every sentence provides essential information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return format (markdown with code examples). It covers the main behavior and parameters sufficiently for a simple enhancement tool, though lacks details on potential errors or edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The description does not add additional semantics beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it augments a natural-language query with KB context, extracting keywords and returning combined result with code examples. It distinguishes from siblings like get_context or query_context by focusing on enhancing a raw query for development questions, though could be more explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence explicitly directs use to enrich user prompts before answering Klever development questions, providing a clear use case. It does not mention when not to use or alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_similarARead-onlyIdempotentInspect
Find knowledge base entries similar to a given entry by comparing tags and content. Returns related contexts ranked by similarity score. Useful for discovering related patterns, examples, or documentation after finding one relevant entry.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The context ID to find similar entries for. Obtain from query_context or get_context results. | |
| limit | No | Maximum number of similar entries to return. Typical range is 1-20; higher values may be slower. Default: 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds that results are ranked by similarity score, which is not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with main action, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with full schema coverage and annotations, description covers purpose and use case adequately. No output schema but description mentions ranked contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameter descriptions. Description does not add extra meaning beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool finds similar entries via tags and content, returns ranked results. Distinguishes from siblings like query_context or get_context by focusing on similarity search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions it is useful after finding one relevant entry, implying a sequential use case. No explicit alternatives or when-not-to-use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
freeze_klvAInspect
Build an unsigned Freeze KLV transaction on the Klever blockchain. Freezing KLV provides energy/bandwidth for network operations and enables staking rewards. Returns the unsigned transaction for client-side signing.
| Name | Required | Description | Default |
|---|---|---|---|
| sender | Yes | Address to freeze from (klv1... bech32 format). | |
| amount | Yes | Amount of KLV to freeze in the smallest unit (1 KLV = 1,000,000 units). | |
| network | No | Network to use. Options: "mainnet", "testnet", "devnet", "local". Defaults to server default (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses that the tool builds an unsigned transaction for client-side signing, which is critical behavioral information beyond annotations. It also explains the staking and resource benefits. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey the action, purpose, and return type without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for this straightforward tool. It covers the action, purpose, return type, and parameter context. No output schema is needed as the return is described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all 3 parameters with descriptions (100% coverage). Description does not add additional per-parameter semantics beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool builds an unsigned Freeze KLV transaction on the Klever blockchain. It specifies the purpose (freezing KLV for energy/bandwidth and staking rewards) and differentiates from sibling tools like send_transfer or invoke_sc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains the benefit of freezing KLV (energy/bandwidth, staking rewards), implying when to use it. However, it does not explicitly state when not to use it or provide direct alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountARead-onlyIdempotentInspect
Get full account details for a Klever blockchain address including nonce, balance, frozen balance, allowance, and permissions. Use this when you need comprehensive account state beyond just the balance.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Klever address (klv1... bech32 format). | |
| network | No | Network to query. Options: "mainnet", "testnet", "devnet", "local". Defaults to server default (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, but description adds value by listing specific fields returned (nonce, balance, frozen balance, allowance, permissions). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load purpose and usage. No extraneous information; every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, annotations, and complete schema, the description provides all necessary context: what the tool does, what it returns, and when to use it. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with full descriptions for both parameters. Description does not add additional parameter meaning beyond what is already in the schema, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get full account details for a Klever blockchain address' and distinguishes from sibling 'get_balance' by saying 'beyond just the balance'. Specific verb and resource with sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this when you need comprehensive account state beyond just the balance', indicating when to use and implying when not to (use get_balance instead). Provides clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_infoARead-onlyIdempotentInspect
Get complete properties and configuration for any asset on the Klever blockchain (KLV, KFI, KDA tokens, NFT collections). Returns supply info, permissions (CanMint, CanBurn, etc.), roles, precision, and metadata. Note: string fields like ID, Name, Ticker are base64-encoded in the raw response.
| Name | Required | Description | Default |
|---|---|---|---|
| assetId | Yes | Asset identifier (e.g. "KLV", "KFI", "USDT-A1B2", "MYNFT-XY78"). | |
| network | No | Network to query. Options: "mainnet", "testnet", "devnet", "local". Defaults to server default (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds value by noting that string fields are base64-encoded in the raw response, a key behavioral trait. However, it could mention potential performance or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the purpose and immediately provide the necessary behavioral note. Every sentence is essential, with no redundant or verbose text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only nature (annotations) and high schema coverage, the description adequately covers the input, output content, and a behavioral edge case (base64 encoding). It is complete for a simple query tool, though it could mention error handling for missing assets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters having descriptions. The description provides example asset IDs (e.g., 'KLV', 'USDT-A1B2') that align with the schema, adding slight contextual value but no substantial new meaning beyond the existing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('asset on the Klever blockchain'), and enumerates specific properties returned (supply info, permissions, roles, precision, metadata). It distinguishes itself from siblings like get_account or get_balance by being the only asset-specific query tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives such as get_account, get_balance, or get_block. It implicitly defines its purpose but lacks any 'use this when' or 'don't use for' statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceARead-onlyIdempotentInspect
Get the KLV or KDA token balance for a Klever blockchain address. Returns the balance in the smallest unit (for KLV: 1 KLV = 1,000,000 units with 6 decimal places). Optionally specify an asset ID to query a specific KDA token balance instead of KLV.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Klever address (klv1... bech32 format). | |
| assetId | No | Optional KDA token ID (e.g. "USDT-A1B2", "LPKLVKFI-3I0N"). Omit for KLV balance. | |
| network | No | Network to query. Options: "mainnet", "testnet", "devnet", "local". Defaults to server default (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds useful behavioral details like returning the balance in smallest units with conversion context (1 KLV = 1,000,000 units), which helps the agent understand the output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences, front-loaded with the core purpose, no extraneous text. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return unit and decimal conversion. It could be more specific about the exact return structure (e.g., string or number), but for a simple balance read, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters already have descriptions in the schema. The description adds minimal extra meaning, mostly reinforcing the assetId usage. It does not significantly deepen understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves KLV or KDA token balances for a Klever blockchain address. It uses specific verbs and resources, and distinguishes from siblings like get_account or get_asset_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the optional assetId parameter to query a KDA token instead of KLV. It does not explicitly compare to sibling tools, but the context is clear and adequate for basic usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blockARead-onlyIdempotentInspect
Get block information from the Klever blockchain by nonce (block number). If no nonce is provided, returns the latest block. Returns hash, timestamp, proposer, number of transactions, and other block metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | No | Block number (nonce). Omit to get the latest block. | |
| network | No | Network to query. Options: "mainnet", "testnet", "devnet", "local". Defaults to server default (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. Description adds value by listing returned fields (hash, timestamp, proposer, transactions count, metadata). No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with verb and resource, no redundancy. Every sentence is informative and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with good annotations and schema, the description is complete enough. It mentions return fields despite no output schema. Could add detail about pagination or errors, but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description adds meaning: omitting nonce returns latest block; network defaults to mainnet. This provides context beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves block information from the Klever blockchain by nonce (block number). The verb 'get' and resource 'block' are specific. It distinguishes from sibling tools like get_transaction, get_account, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States when to use: to get block by nonce or latest if omitted. Does not explicitly mention when not to use, but context from sibling tools provides alternatives. Adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contextARead-onlyIdempotentInspect
Retrieve a single knowledge base entry by its unique ID. Returns the full entry including content, metadata, tags, and related context IDs. Use this after query_context or find_similar to get complete details for a specific entry.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The unique context ID (UUID format). Obtain IDs from query_context or find_similar results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, destructiveHint, idempotentHint. Description adds that it returns full entry including content, metadata, tags, and related context IDs. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second provides usage guidance. No unnecessary words. Front-loaded with core info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with no output schema, the description covers input source (ID from query_context/find_similar) and output contents (content, metadata, tags, related context IDs). No missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'id', with a clear description in the schema. The tool description does not add further parameter details beyond what is in the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a single knowledge base entry by ID, with a specific verb ('Retrieve') and resource ('knowledge base entry'). It distinguishes from siblings by mentioning it is used after query_context or find_similar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use this after query_context or find_similar to get complete details for a specific entry.' This provides clear context and excludes other uses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_knowledge_statsARead-onlyIdempotentInspect
Get summary statistics of the Klever VM knowledge base. Returns total entry count, counts broken down by context type (code_example, best_practice, security_tip, etc.), and a sample entry title for each type. Useful for understanding what knowledge is available before querying.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint true. Description adds concrete behavioral details: returns counts and sample titles, reinforcing safe read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words: first sentence states purpose and core output, second provides usage context. Perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless tool with no output schema, the description fully covers purpose, returns, and usage context. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters; schema coverage is 100%. Description adds value by explaining the output structure (context type breakdowns) that helps agents interpret results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states it gets summary statistics of the Klever VM knowledge base, specifying exact returns like total entry count, counts by context type, and sample titles. Clearly distinguishes from sibling query/search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Useful for understanding what knowledge is available before querying,' providing clear usage context. No exclusion or alternative guidance needed due to the tool's simplicity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactionARead-onlyIdempotentInspect
Get transaction details by hash from the Klever blockchain. Returns sender, receiver, status, block info, contracts, and receipts. Uses the API proxy for indexed data.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | Transaction hash (hex string). | |
| network | No | Network to query. Options: "mainnet", "testnet", "devnet", "local". Defaults to server default (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint false, idempotentHint. The description adds that it uses the API proxy for indexed data, providing useful context beyond annotations. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The first sentence states the main purpose, and the second adds return fields and implementation detail. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must compensate. It lists five return fields (sender, receiver, status, block info, contracts, receipts) which covers the main results. However, it omits error handling, pagination, or response structure details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, with both parameters adequately described in the schema. The description adds no extra semantic meaning beyond what the schema provides, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves transaction details by hash from the Klever blockchain. It lists specific return fields (sender, receiver, status, etc.), which distinguishes it from sibling tools like get_block or get_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., get_block or get_account). Usage is implied by the purpose, but the description lacks 'when not to use' or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
init_klever_projectAInspect
Scaffold a new Klever smart contract project using the SDK. Creates the Rust project structure via ksc new and generates automation scripts (build, deploy, upgrade, query, test, interact). Requires Klever SDK installed at ~/klever-sdk/. Run check_sdk_status first to verify.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The contract project name in kebab-case (e.g. "my-token", "nft-marketplace"). Used as the Cargo package name and directory name. | |
| template | No | Project template to scaffold from. "empty" creates a blank contract with just an init function. "adder" creates a simple counter example. Default: "empty". | empty |
| noMove | No | When true, keeps the project in the SDK output directory instead of moving it to the current working directory. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false and destructiveHint=false, but the description adds some behavioral context: it 'Creates the Rust project structure' and 'generates automation scripts.' It also specifies the SDK requirement. However, it does not disclose behavior on re-run (idempotency), potential overwrites, or error conditions. With no annotation contradiction, the description adds moderate value beyond the hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no fluff. The first sentence immediately states the primary action and resource. All sentences contribute useful information: purpose, what is created, and prerequisites. It is well-organized and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the tool's purpose and prerequisites but lacks details about the return value or success/failure signals. Since there is no output schema, the description should indicate what the tool returns (e.g., path to new project). It also does not mention error cases or behaviors when the project already exists. Given the tool's side effects, this gap reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions (100% coverage), so the description adds no extra meaning beyond what the schema already provides. The description does not elaborate on parameter usage, formatting, or constraints. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Scaffold a new Klever smart contract project using the SDK.' It specifies the resource (Klever smart contract project), the action (scaffold), and the method (via `ksc new` and automation scripts). It also mentions the prerequisite SDK location, distinguishing it from sibling tools like install_klever_sdk or check_sdk_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite: 'Requires Klever SDK installed at ~/klever-sdk/. Run check_sdk_status first to verify.' This guides the agent to verify SDK status before invoking the tool. However, it does not explicitly state when not to use this tool (e.g., if SDK is not installed) or mention alternatives beyond check_sdk_status. Still, the context is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_klever_sdkAIdempotentInspect
Download and install Klever SDK tools to ~/klever-sdk/. Fetches the latest versions from the Klever CDN, installs binaries, and downloads required VM library dependencies. Supports macOS (arm64/amd64) and Linux. Run check_sdk_status first to see what is already installed.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | Which SDK component to install. "ksc" = smart contract compiler only, "koperator" = blockchain operator CLI + VM library, "all" = both ksc and koperator. Default: "all". | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (idempotent, open-world), description adds detail on CDN downloads, installation of binaries and dependencies, and platform support. It does not mention side effects like PATH modifications, but idempotency and destructive hint false mitigate concerns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-structured sentences, front-loaded with main action, no fluff. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter tool with no output schema, the description covers purpose, parameter options, platform, dependencies, and prerequisite. Complete enough for effective selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the parameter 'tool' is fully described in schema with enum and default. Description does not add additional semantic meaning beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (download and install), resource (Klever SDK tools), and location (~/klever-sdk/). It specifies platforms and components, distinguishing it from siblings like check_sdk_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to run check_sdk_status first, providing clear contextual guidance. However, it doesn't explicitly state when not to use it (e.g., if already installed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_scAInspect
Build an unsigned smart contract invocation transaction on the Klever blockchain. Calls a state-changing endpoint on a deployed contract. Returns the unsigned transaction for client-side signing. For read-only calls, use query_sc instead.
| Name | Required | Description | Default |
|---|---|---|---|
| sender | Yes | Caller address (klv1... bech32 format). | |
| scAddress | Yes | Smart contract address (klv1... bech32 format). | |
| funcName | Yes | Endpoint function name to invoke. | |
| args | No | Optional base64-encoded arguments. | |
| callValue | No | Optional token amounts to send with the call, as a map of token ID to amount (e.g. {"KLV": 1000000}). Required for payable endpoints. | |
| network | No | Network to use. Options: "mainnet", "testnet", "devnet", "local". Defaults to server default (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false. Description adds value by clarifying transaction is unsigned and requires client-side signing, which is beyond what annotations provide. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary words, front-loaded with key information. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description states it returns unsigned transaction. For a transaction builder, this is sufficient. Could mention signing requirements or output format, but complete enough given simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive parameter text. Description does not add parameter-level details but contextualizes the tool purpose. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it builds an unsigned smart contract invocation transaction, calls a state-changing endpoint, and returns unsigned transaction. Distinguishes from query_sc for read-only calls, making the purpose very specific and distinct from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (state-changing calls) and points to alternative (query_sc for read-only). Does not include when-not scenarios beyond that, but sufficient guidance given the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_validatorsARead-onlyIdempotentInspect
List active validators on the Klever blockchain network. Returns validator addresses, names, commission rates, delegation info, and staking amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Network to query. Options: "mainnet", "testnet", "devnet", "local". Defaults to server default (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating safety. The description adds value by detailing the return content (addresses, names, commission rates, etc.), providing behavioral context beyond what annotations offer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates the tool's purpose and return data. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description is complete. It adequately covers what the tool does and what it returns, leaving no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with a clear description for 'network'. The tool description does not add additional semantic meaning beyond the schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists active validators on the Klever blockchain network, specifying the resource (validators) and action (list). It distinguishes itself from sibling tools like get_account or get_block, which deal with different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. It implies usage for querying validators but lacks contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_contextARead-onlyIdempotentInspect
Search the Klever VM knowledge base for smart contract development context. Returns structured JSON with matching entries, scores, and pagination. Use this for precise filtering by type or tags; use search_documentation for human-readable "how do I..." answers.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Free-text search query. Use Klever-specific terms for best results (e.g. "storage mapper SingleValueMapper", "payable endpoint KLV", "deploy contract testnet"). | |
| types | No | Filter results by context type. Omit to search all types. Common combinations: ["code_example", "documentation"] for learning, ["error_pattern"] for debugging, ["security_tip", "best_practice"] for reviews. | |
| tags | No | Filter by tags (e.g. ["storage", "mapper"], ["tokens", "KLV"], ["events"]). Tags are matched with OR logic ā any matching tag includes the entry. | |
| contractType | No | Filter by contract type (e.g. "token", "nft", "defi", "dao"). Only returns entries tagged for this contract category. | |
| limit | No | Maximum number of results to return (1-100). Default: 10. | |
| offset | No | Number of results to skip for pagination. Use with limit to page through results. Default: 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds that it returns structured JSON with matching entries, scores, and pagination, which is useful context beyond annotations. No contradictory information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences. The first sentence immediately conveys the core purpose and output format. The second sentence provides usage differentiation. Every sentence is essential and information-dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description mentions the return format (structured JSON with entries, scores, pagination). All 6 parameters are documented in the schema with additional context in the description. The tool's behavior is well-specified given its complexity. Missing details about output structure could be improved but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; each parameter is described. The description adds value with usage examples, such as 'Use Klever-specific terms for best results (e.g. "storage mapper SingleValueMapper")' and suggests common type combinations like '["code_example", "documentation"] for learning'. This helps an agent invoke the tool effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the Klever VM knowledge base for smart contract development context and returns structured JSON. It distinguishes from the sibling tool search_documentation by specifying this tool is for precise filtering by type or tags, while search_documentation is for human-readable answers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool versus search_documentation: 'Use this for precise filtering by type or tags; use search_documentation for human-readable "how do I..." answers.' This provides clear guidance on alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_scARead-onlyIdempotentInspect
Execute a read-only query against a Klever smart contract (VM view call). Returns the contract function result as base64-encoded return data. Arguments must be base64-encoded. Use this to read contract state without modifying it.
| Name | Required | Description | Default |
|---|---|---|---|
| scAddress | Yes | Smart contract address (klv1... bech32 format). | |
| funcName | Yes | Function name to call (must be a #[view] function on the contract). | |
| args | No | Optional base64-encoded arguments. For addresses, encode the hex-decoded bech32 bytes. For numbers, use big-endian byte encoding. | |
| caller | No | Optional caller address (klv1... bech32 format). Some view functions use the caller to look up address-keyed storage mappers. | |
| network | No | Network to query. Options: "mainnet", "testnet", "devnet", "local". Defaults to server default (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, etc. Description adds that result is base64-encoded, arguments must be base64-encoded, and specific encoding for addresses and numbers, which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: purpose, return format, and encoding guidance. No fluff, front-loaded with key information, and each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters (2 required), 100% schema coverage, and no output schema, the description covers the tool's behavior, encoding, and usage adequately. Could hint at decoding the result but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. Description adds value by explaining argument encoding in detail (hex-decoded bech32 for addresses, big-endian for numbers) and the purpose of the caller parameter, which is not in schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes a read-only query against a smart contract, using specific verb 'query' and resource 'smart contract (VM view call)'. It distinguishes from siblings like invoke_sc by emphasizing read-only nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to read contract state without modifying it', which guides when to use. Does not name alternatives, but sibling list includes invoke_sc for write operations, making usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_documentationARead-onlyIdempotentInspect
Search Klever VM documentation and knowledge base. Returns human-readable markdown with titles, descriptions, and code snippets. Covers koperator CLI syntax (sc invoke, sc create, sc upgrade), --args type prefixes, --values payment flags, contract metadata flags, ABI decoding, and all smart contract development topics. ALWAYS use this tool first when you need to know the correct flags or argument syntax for koperator commands. Use this instead of query_context when you need formatted developer documentation.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query in natural language (e.g. "how to use storage mappers", "koperator sc invoke payment values", "deploy contract to testnet", "--args type prefixes", "handle KDA token transfers"). | |
| category | No | Narrow results to a specific knowledge category. Available: core, storage, events, tokens, modules, tools, scripts, examples, errors, best-practices, documentation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that returns markdown and covers specific topics, but does not disclose additional behavioral traits beyond what annotations provide. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the main purpose and output format. Every sentence contributes useful information, and there is no extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only 2 parameters and no output schema, the description adequately covers what the tool does, what it returns (markdown), its scope (koperator CLI, smart contract topics), and provides usage guidance. It is complete for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description adds value by providing concrete example queries and listing the topics covered, which enriches the understanding of the 'query' parameter beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: searching Klever VM documentation and knowledge base, and specifies the output format (human-readable markdown). It also distinguishes itself from sibling tool 'query_context' by recommending its use for formatted developer documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'ALWAYS use this tool first when you need to know the correct flags or argument syntax for koperator commands' and 'Use this instead of query_context when you need formatted developer documentation.' This clearly states when to use and when not to use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_transferAInspect
Build an unsigned KLV or KDA token transfer transaction on the Klever blockchain. Returns the unsigned transaction data and hash for client-side signing. The MCP server NEVER handles private keys ā signing must be done externally.
| Name | Required | Description | Default |
|---|---|---|---|
| sender | Yes | Sender address (klv1... bech32 format). | |
| receiver | Yes | Receiver address (klv1... bech32 format). | |
| amount | Yes | Amount in the smallest unit. For KLV: 1 KLV = 1,000,000 units (6 decimals). Example: to send 10 KLV, use 10000000. | |
| assetId | No | Optional KDA token ID for non-KLV transfers (e.g. "USDT-A1B2"). Omit for KLV. | |
| network | No | Network to use. Options: "mainnet", "testnet", "devnet", "local". Defaults to server default (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds critical behavioral context beyond annotations: it confirms the tool only builds unsigned transactions and that signing must occur externally. This aligns with openWorldHint=true and destructiveHint=false, adding valuable detail about security and process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that are front-loaded with the core purpose and then add the critical security note. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the return value (unsigned transaction data and hash) and the need for external signing, which is sufficient for a tool with moderate complexity. No output schema is present, but the description covers the essential output. Minor gap: no error handling or edge cases are mentioned, but not critical for this use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with clear descriptions. The tool description provides a high-level purpose but does not add additional meaning for individual parameters beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds an unsigned KLV or KDA token transfer transaction on the Klever blockchain, specifying the output and the need for external signing. This distinguishes it from sibling tools like freeze_klv or invoke_sc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it (building an unsigned transaction for client-side signing) and that the server never handles private keys. It does not explicitly list when not to use it or alternative tools, but the context is clear enough for an AI agent to infer appropriate usage.
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.
23 tool updates
v1.3.0- First observed
add_context - First observed
add_helper_scripts - First observed
analyze_contract - First observed
check_sdk_status - First observed
deploy_sc - First observed
enhance_with_context - First observed
find_similar - First observed
freeze_klv - First observed
get_account - First observed
get_asset_info - First observed
get_balance - First observed
get_block - First observed
get_context - First observed
get_knowledge_stats - First observed
get_transaction - First observed
init_klever_project - First observed
install_klever_sdk - First observed
invoke_sc - First observed
list_validators - First observed
query_context - First observed
query_sc - First observed
search_documentation - First observed
send_transfer
TDQS
Tools have clearly distinct purposes. For example, query_context and search_documentation both search the knowledge base but differ in output format (structured JSON vs human-readable markdown). All other tools target different resources or actions.
All tool names follow a consistent verb_noun pattern with underscores, such as add_context, get_balance, deploy_sc. No mixing of conventions.
23 tools is on the higher end of the acceptable range. The server covers a broad domain including blockchain queries, smart contract lifecycle, and knowledge management, so the count is justified but some consolidation (e.g., reducing knowledge base tools) could improve coherence.
The tool set covers major workflows: SDK installation, project scaffolding, code analysis, deployment, invocation, queries, transfers, and knowledge base management. A minor gap is the lack of an explicit contract upgrade tool, though helper scripts include an upgrade script.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The OpenZeppelin Solidity Contracts MCP server integrates OpenZeppelin's security and style rules into AI-driven development workflows, enabling AI assistants to generate safe, correct, and production-ready smart contracts. It automatically validates generated code against OpenZeppelin standards (including imports, modifiers, naming conventions, and security checks) and supports various contract types including ERC-20, ERC-721, ERC-1155, Stablecoins, RWA, Governor, and Account contracts through prompt-driven workflows.
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
The OpenZeppelin Cairo Contracts MCP server generates secure smart contracts in the Cairo language for Starknet environments based on OpenZeppelin templates. It brings OpenZeppelin's proven security and style rules directly into AI-driven development workflows to create safe, production-ready contracts. Key capabilities include providing templates for ERC-20, ERC-721, ERC-1155, Multisig, Governor, and Vesting contracts.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for comprehensive code analysis, navigation, and quality assessment across 25+ programming languages.988MIT
- AlicenseNot gradedqualityFmaintenanceA powerful Model Context Protocol server that creates intelligent graph representations of your codebase with comprehensive semantic analysis capabilities, supporting 11 languages and 26 MCP methods.41121MIT
- AlicenseCqualityDmaintenanceAn MCP server that analyzes local or remote GitHub repositories, providing intelligent code context and structure to AI coding assistants.1013MIT
- AlicenseNot gradedqualityDmaintenanceMCP server providing AI assistants with tools for advanced EVM smart contract analysis, including proxy detection, implementation resolution, and security analysis.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/klever-io/mcp-klever-vm'
If you have feedback or need assistance with the MCP directory API, please join our Discord server