Celo 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., "@Celo MCP Serverget the current gas fee"
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.
Celo MCP Server
A Model Context Protocol (MCP) server for interacting with the Celo blockchain. This server provides comprehensive access to Celo blockchain data, token operations, NFT management, smart contract interactions, transaction handling, and governance operations.
Installation
Clone the repository:
git clone https://github.com/celo-org/celo-mcp
cd celo-mcpInstall dependencies:
pip install -e .Set up environment variables (optional):
export CELO_RPC_URL="https://forno.celo.org" # Default: Celo mainnet
export CELO_TESTNET_RPC_URL="https://alfajores-forno.celo-testnet.org" # Alfajores testnetRelated MCP server: onchainos MCP Server
MCP Integration
Cursor IDE Integration
To use this MCP server with Cursor IDE, add the following configuration to your MCP settings file (~/.cursor/mcp.json):
{
"mcpServers": {
"celo-mcp": {
"command": "uvx",
"args": ["--refresh", "celo-mcp"]
}
}
}The --refresh flag ensures that the latest code is always loaded when the MCP server starts.
Claude Desktop Integration
For Claude Desktop, add this configuration to your MCP settings file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"celo-mcp": {
"command": "uvx",
"args": ["--refresh", "celo-mcp"]
}
}
}Connect remotely (Streamable HTTP)
The server can also run as a remote MCP endpoint over Streamable HTTP, so clients connect with a single URL — no local Python install. The stdio setup above is unchanged; this is an additional transport.
Run it in HTTP mode:
celo-mcp-server --transport http --port 3000
# or via env:
MCP_TRANSPORT=http PORT=3000 celo-mcp-serverThen point any remote-capable MCP client at the URL:
{
"mcpServers": {
"celo": { "url": "https://<your-host>/mcp" }
}
}Configuration (environment variables):
Var | Purpose | Default |
|
|
|
| HTTP bind host / port |
|
| Hostnames accepted by the SDK's DNS-rebinding check, comma-separated. Set to your public hostname(s), or | localhost only |
| Comma-separated allowed origins (or |
|
| Requests per client per window (seconds); |
|
| Number of | unset |
| If set, requires | unset (open) |
| Celo RPC endpoint | (existing default) |
GET /health returns 200 for hosting health checks. See
docs/DEPLOYMENT.md for container/hosting instructions.
Usage
Running the Server
# Run the MCP server
python -m celo_mcp.server
# Or use the CLI entry point
celo-mcp-serverAvailable Tools
Blockchain Data Operations
get_network_status
Get current network status and connection information
No parameters required
get_block
Fetch block information by number, hash, or "latest"
Parameters:
block_identifier,include_transactions(optional)
get_transaction
Get transaction details by hash
Parameters:
tx_hash
get_account
Get account information including balance and nonce
Parameters:
address
get_latest_blocks
Get information about recent blocks
Parameters:
count(optional, default: 10, max: 100)
Token Operations
get_token_info
Get detailed token information (name, symbol, decimals, supply)
Parameters:
token_address
get_token_balance
Get token balance for a specific address
Parameters:
token_address,address
get_celo_balances
Get CELO and stable token balances for an address
Parameters:
address
NFT Operations
get_nft_info
Get NFT information including metadata and collection details
Parameters:
contract_address,token_id
get_nft_balance
Get NFT balance for an address (supports ERC721 and ERC1155)
Parameters:
contract_address,address,token_id(optional for ERC1155)
Smart Contract Operations
call_contract_function
Call a read-only contract function
Parameters:
contract_address,function_name,abi,function_args(optional),from_address(optional)
estimate_contract_gas
Estimate gas for a contract function call
Parameters:
contract_address,function_name,abi,from_address,function_args(optional),value(optional)
Transaction Operations
estimate_transaction
Estimate gas and cost for a transaction
Parameters:
to,from_address,value(optional),data(optional)
get_gas_fee_data
Get current gas fee data including EIP-1559 fees
No parameters required
Governance Operations
get_governance_proposals
Get Celo governance proposals with pagination support
Parameters:
include_inactive(optional),include_metadata(optional),page(optional),page_size(optional),offset(optional),limit(optional)
get_proposal_details
Get detailed information about a specific governance proposal including content and voting history
Parameters:
proposal_id
Staking Operations
get_staking_balances
Get staking balances for an address, including active and pending stakes broken down by validator group
Parameters:
address
get_activatable_stakes
Get information about pending stakes that can be activated for earning rewards
Parameters:
address
get_validator_groups
Get information about all validator groups, including their members, votes, capacity, and performance metrics
No parameters required
get_validator_group_details
Get detailed information about a specific validator group including its members and performance data
Parameters:
group_address
get_total_staking_info
Get network-wide staking information including total votes and participation metrics
No parameters required
Key Features
Token Support
ERC20 Standard: Full support for ERC20 tokens
Celo Stable Tokens: Built-in support for cUSD, cEUR, and cREAL
Balance Queries: Get token balances with proper decimal formatting
Token Information: Retrieve name, symbol, decimals, and total supply
NFT Support
Multi-Standard: Support for both ERC721 and ERC1155 standards
Automatic Detection: Automatically detects NFT standard using ERC165
Metadata Fetching: Retrieves and parses NFT metadata from URIs
IPFS Support: Built-in IPFS gateway support for metadata
Collection Information: Get collection-level information
Smart Contract Interactions
Function Calls: Call read-only contract functions
Gas Estimation: Estimate gas costs for contract interactions
ABI Management: Parse and manage contract ABIs
Event Handling: Retrieve and decode contract events
Transaction Building: Build contract transactions
Transaction Management
Gas Estimation: Accurate gas estimation for transactions
EIP-1559 Support: Modern fee structure with base fee and priority fee
Transaction Simulation: Simulate transactions before execution
Fee Calculation: Dynamic fee calculation based on network conditions
Governance Support
Proposal Management: Retrieve and analyze Celo governance proposals
Voting Data: Access proposal voting history and results
Metadata Integration: Fetch proposal metadata from GitHub repositories
Pagination Support: Efficiently browse through large sets of proposals
Staking Support
Staking Balances: View active and pending stakes by validator group
Activation Tracking: Check which pending stakes can be activated
Validator Information: Comprehensive validator and validator group data
Performance Metrics: Validator scores, election status, and capacity
Network Statistics: Total voting power and staking participation
Development
Running Tests
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=celo_mcpCode Quality
# Format code
black src/
isort src/
# Lint code
flake8 src/
mypy src/Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests for new functionality
Ensure all tests pass
Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
For questions, issues, or contributions, please:
Check the existing issues on GitHub
Create a new issue with detailed information
Join the community discussions
Acknowledgments
Built on the Model Context Protocol (MCP) framework
Uses Web3.py for Ethereum/Celo blockchain interactions
Supports the Celo ecosystem and its stable token infrastructure
Available Tools
15 toolsget_activatable_stakesA
Get information about pending stakes that can be activated for earning rewards.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The address to check activatable stakes for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully disclose behavioral traits. It correctly indicates read-only behavior ('Get information'), but does not mention authentication needs, rate limits, or other constraints. For a simple query, this is minimally adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately conveys the tool's purpose. No wasted words, and the structure is front-loaded with the key action.
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 parameter, no output schema, and no annotations, the description provides enough context to understand its basic function. However, it could benefit from mentioning the return format or any prerequisites.
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% (only parameter 'address' with description). The tool description does not add any additional meaning beyond what the input schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves information about pending stakes that can be activated for earning rewards. The verb 'Get' and resource 'pending stakes' are specific, and the purpose is distinct from sibling tools like get_staking_balances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The context suggests it's a simple query, but no exclusions or conditions are provided. Usage is implied but not differentiated from other staking-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blockA
Fetch detailed information about a specific block on the Celo blockchain using its number or hash. Optionally include full transaction details within the block.
| Name | Required | Description | Default |
|---|---|---|---|
| block_identifier | Yes | The unique identifier for the block, which can be a block number, hash, or the keyword 'latest' to get the most recent block. | |
| include_transactions | No | Flag to determine whether to include detailed transaction information for each transaction in the block. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the basic action without disclosing behavioral traits such as idempotency, rate limits, or response characteristics. Minimal behavioral context is provided beyond the obvious.
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 with no wasted words. It is front-loaded with the action and resource, making it efficient 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?
For a simple tool with two well-documented parameters and no output schema, the description is complete enough for basic use. It covers the main purpose and optional flag. More details on response format or edge cases are not critical given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters well. The description adds context ('using its number or hash' and 'optionally include full transaction details') but does not provide additional meaning beyond what the schema states. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch detailed information'), the resource ('block on the Celo blockchain'), and the identification method ('using its number or hash'). It also mentions the optional inclusion of transaction details. This distinguishes it from sibling tools like get_transaction or get_latest_blocks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (for a specific block) but does not explicitly state when not to use it or compare it to alternatives. Given distinct sibling tools, the guidance is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_celo_balancesB
Get CELO and stable token balances for an address.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The address to check balances for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It does not mention units (e.g., wei), whether balances include pending transactions, error cases, or rate limits. This leaves the agent guessing about important behavioral aspects.
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 (one sentence) and front-loaded with the verb and resource. No unnecessary words or redundant 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?
For a simple tool with one parameter, the description might seem adequate, but it omits crucial context: no output schema, no mention of response format (e.g., list of balances with token identifiers). Given multiple sibling tools, the description does not help the agent fully understand what is returned.
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 is 3. The description adds no additional meaning beyond the schema's parameter description. It does not clarify address format (e.g., checksum) or any constraints.
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) and the resource (CELO and stable token balances for an address). It distinguishes from siblings like get_stable_token_balance (only stable token) and get_token_balance (generic token) by specifying both CELO and stable tokens.
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 guidance is provided on when to use this tool versus related siblings such as get_stable_token_balance, get_token_balance, or get_staking_balances. Given several siblings with overlapping functionality, this is a significant omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gas_fee_dataB
Get current gas fee data including EIP-1559 fees.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the behavioral burden. It indicates 'current' data but omits details on update frequency, rate limits, or whether the call is read-only. For a parameterless tool, this is minimally acceptable.
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?
Single sentence, 9 words, front-loading the purpose. No wasted 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?
With no parameters and no output schema, the description is minimal. It mentions EIP-1559 fees but does not specify the exact data returned (e.g., base fee, priority fee, gas price categories). This is adequate for a simple tool but could be more informative.
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?
There are zero parameters, so the baseline score is 4. The description adds no parameter info, but it is unnecessary since the schema is empty.
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 gets current gas fee data with EIP-1559 fees. However, it does not differentiate from sibling tools that also retrieve data (e.g., get_block, get_network_status), leading to potential confusion.
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 guidance on when to use this tool versus alternatives. The description does not specify context, prerequisites, or exclusions, requiring the agent to infer appropriateness from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_governance_proposalsC
Get Celo governance proposals with pagination support.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based). If provided, overrides offset/limit | |
| limit | No | Maximum number of proposals to return (alternative to page_size) | |
| offset | No | Number of proposals to skip (alternative to page-based pagination) | |
| page_size | No | Number of proposals per page | |
| include_inactive | No | Whether to include inactive/expired proposals | |
| include_metadata | No | Whether to fetch metadata from GitHub repository (slower - only use when needed) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full disclosure burden. It only says 'Get... with pagination support,' omitting traits like read-only nature, side effects, performance implications (e.g., include_metadata slows down), or any error handling. The description is insufficient for behavioral understanding.
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 sentence, front-loading the core action and resource. It is concise and free of fluff, though it could benefit from additional context without becoming overly long.
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 6 parameters, no output schema, and no annotations, the description is insufficiently complete. It does not explain return values, pagination behavior in detail, or differentiate from similar tools. The omission of behavioral and output details leaves the agent under-informed.
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%, and the description adds no meaningful parameter context beyond 'with pagination support.' The description does not clarify parameter interplay (e.g., page vs offset/limit precedence) or provide usage hints. Baseline score applied.
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 retrieves Celo governance proposals with pagination, using a specific verb and resource. It implicitly distinguishes from sibling 'get_proposal_details' (which likely returns a single proposal) but does not explicitly differentiate.
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 guidance on when to use this tool versus alternatives (e.g., 'get_proposal_details'), no usage context or exclusions provided. The description only states its function without clarifying optimal invocation scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_blocksB
Get information about the most recent blocks on the Celo blockchain, with the ability to specify the number of blocks to retrieve and starting offset.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | The number of latest blocks to retrieve information for, with a default of 10 and a maximum of 100. | |
| offset | No | Number of blocks to skip from the latest block. For example, offset=0 gets the very latest blocks, offset=10 gets blocks starting from 10 blocks ago. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states that information about blocks is retrieved, but does not specify what fields are returned (e.g., block number, timestamp, hash). No information about rate limits, authentication, or other behavioral traits is given.
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, well-structured sentence that front-loads the main purpose and includes the key optional parameters. No extraneous information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool lacks an output schema and has no annotations. The description does not explain the structure of the returned information (e.g., list of block objects with properties), leaving the agent without enough context to effectively use the result.
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%, and the description summarizes the parameters ('number of blocks' and 'starting offset'), but adds no additional semantic meaning beyond what is already in the schema. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'blocks', and the context 'Celo blockchain', with additional detail about specifying count and offset. This distinguishes it from sibling tools like 'get_block' which retrieves a single block.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving recent blocks but does not explicitly state when to use it versus alternatives such as 'get_block' for a specific block, or when not to use it. No guidance on exclusions or prerequisites is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_statusA
Retrieve the current status and connection information of the Celo network, including network health and connectivity details.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should fully disclose behavioral traits. It indicates return of status and connectivity details but is vague (e.g., does not specify if real-time, any side effects, or permissions needed). Minimal additional context beyond the name.
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 sentence with no superfluous words. It is front-loaded and efficient, earning its place by being 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?
For a zero-parameter tool with no output schema, the description is somewhat complete but lacks details on the exact output format (e.g., object structure, data types). It covers the basic purpose but leaves ambiguity about what 'status and connection information' entails.
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 exist, so schema coverage is 100%. The description adds no parameter info, which is acceptable. Baseline 4 applies as there is no need for parameter explanations.
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 the current status and connection information of the Celo network, including health and connectivity. This distinguishes it from sibling tools like get_block or get_transaction which target specific data.
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 guidance is provided on when to use this tool versus alternatives such as get_gas_fee_data or get_latest_blocks. The description implies it is for general network health, but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_proposal_detailsB
Get detailed information about a specific governance proposal including its content and voting history.
| Name | Required | Description | Default |
|---|---|---|---|
| proposal_id | Yes | The governance proposal ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states it returns 'detailed information' and 'voting history', but no side effects, auth needs, rate limits, or data freshness. Lacks depth for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 13 words, front-loaded with purpose. No wasted words or redundant 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?
No output schema, so description should detail return values. Only mentions 'content and voting history' vaguely, insufficient for an agent to understand output structure.
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%, and description adds identical meaning ('The governance proposal ID') to existing schema. No additional semantics 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 verb 'get', resource 'governance proposal', and scope 'details including content and voting history'. Distinguishes from sibling 'get_governance_proposals' (list) and other detail 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?
Implies use for specific proposal via proposal_id, but no explicit guidance on when to use vs alternatives or exclusions. Context signals show many siblings, but no differentiation provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stable_token_balanceA
Get balances of all major stable tokens and CELO for an address using multicall.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The address to check token balances for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It mentions 'using multicall' hinting at efficient batch fetching, but does not disclose whether the operation is read-only, requires authentication, or has rate limits. The description adds some value but lacks full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core functionality without extraneous words. It is front-loaded and 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?
For a simple tool with one parameter and no output schema, the description provides enough context to understand the tool's purpose. It could be more explicit about which stable tokens are included, but overall it is 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 coverage is 100% (single parameter 'address' described in schema). The description adds context about which tokens are checked but does not enhance parameter semantics beyond the schema. 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 retrieves balances of all major stable tokens and CELO for an address using multicall. This specific verb-resource combination distinguishes it from siblings like get_token_balance (single token) and get_celo_balances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies the tool is for bulk stablecoin balance checks, it does not explicitly state when to use it versus alternatives (e.g., get_token_balance for a single token). No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_staking_balancesA
Get staking balances for an address, including active and pending stakes broken down by validator group.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The address to check staking balances for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It discloses that it returns active and pending stakes per validator group, but does not mention read-only nature, rate limits, or any side effects. Adequate but not detailed.
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?
Single sentence, no filler, front-loaded with key information. Every word 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?
Given the simplicity of the tool (one parameter, no nested objects, no output schema), the description is complete enough. Could mention return format, but not critical for a straightforward query.
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 only parameter 'address' is already described in the schema (100% coverage). The description adds no additional meaning beyond what the schema provides, achieving baseline of 3.
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 staking balances), the resource (an address), and the scope (active and pending stakes broken down by validator group). It distinguishes itself from siblings like get_total_staking_info and get_activatable_stakes.
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 guidance on when to use this tool versus alternatives such as get_total_staking_info or get_activatable_stakes. Missing when-not conditions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_balanceC
Get the token balance for a specific address.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The address to check the balance for. | |
| token_address | Yes | The contract address of the token. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears full burden. It only states the basic read operation but fails to disclose behavior on invalid inputs, error states, or any potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise but lacking additional context that could be useful. It earns its place but is somewhat under-specified.
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 no output schema or annotations, the description is too minimal. It lacks context on error scenarios, return format, or comparison with similar tools, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The description adds no extra meaning beyond the schema, achieving the baseline of 3.
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), resource (token balance), and target (specific address). It distinguishes itself from sibling 'get_stable_token_balance' by omission of 'stable', though not explicitly differentiated.
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 guidance is provided on when to use this tool versus alternatives like get_stable_token_balance or get_celo_balances. No prerequisites, conditions, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_total_staking_infoA
Get network-wide staking information including total votes and participation metrics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions the tool returns 'total votes and participation metrics', which implies a read operation, but lacks details on data freshness, computational cost, or aggregation method.
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, concise sentence that front-loads the core purpose. No redundant information; every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema or annotations, the description should more thoroughly specify return fields. 'Participation metrics' is vague, and the format or additional details are missing, leaving room for interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so baseline is 4. The description adds value by specifying the scope ('network-wide') and examples of included data ('total votes and participation metrics'), enhancing the empty 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 uses the specific verb 'Get' and resource 'network-wide staking information', clearly indicating aggregate data. It distinguishes from sibling tools like get_activatable_stakes and get_staking_balances by emphasizing the network-wide scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving overall staking metrics, but provides no explicit guidance on when to use it versus alternatives (e.g., for per-user data) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactionA
Obtain detailed information about a specific transaction on the Celo blockchain using its transaction hash.
| Name | Required | Description | Default |
|---|---|---|---|
| tx_hash | Yes | The unique hash of the transaction to retrieve details for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the tool is a read operation implicitly but fails to mention any behavioral traits such as existence of rate limits, idempotency, or error scenarios. Minimal disclosure.
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?
Single sentence front-loaded with verb and resource, no redundant words. Every part 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 tool with one parameter and no output schema, the description is mostly complete. It could be improved by hinting at the return format (e.g., 'returns transaction details such as sender, receiver, value, and status'), but currently it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter 'tx_hash' with a description, achieving 100% coverage. The description adds no further meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'obtain', the resource 'detailed information about a specific transaction', and the context 'on the Celo blockchain using its transaction hash'. It distinguishes from siblings like get_block or get_latest_blocks which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when a transaction hash is available and details are needed, but lacks explicit when-to-use or when-not-to-use guidance. No sibling comparisons or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_validator_group_detailsB
Get detailed information about a specific validator group including its members and performance data.
| Name | Required | Description | Default |
|---|---|---|---|
| group_address | Yes | The validator group address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication needs, or potential side effects. It mentions 'performance data' but not what that entails or the response size.
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 sentence with 14 words, front-loaded with the verb and resource, and contains no redundant 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?
There is no output schema, so the description should compensate by detailing the return structure. It mentions 'members and performance data' but lacks specifics on fields or formats. Given the tool's single parameter and simple purpose, it is adequate but incomplete.
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 a single parameter 'group_address' described as 'The validator group address.' The description adds context that the tool returns members and performance data, but no further parameter details like format or validation. 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 'Get detailed information about a specific validator group' which distinguishes it from the sibling tool 'get_validator_groups' that lists groups. However, it could be more precise by specifying performance metrics.
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 guidance on when to use this tool versus alternatives. The agent must infer from the description that it is for details of a single group, but no explicit context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_validator_groupsA
Get information about all validator groups, including their members, votes, capacity, and performance metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based). If provided, overrides offset/limit | |
| limit | No | Maximum number of validator groups to return (alternative to page_size) | |
| offset | No | Number of validator groups to skip (alternative to page-based pagination) | |
| page_size | No | Number of validator groups per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description partially discloses behavior by listing returned fields, but it fails to mention pagination behavior or default page size. The input schema suggests pagination but the description does not explain how parameters interact or what the return structure looks like.
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 with a clear verb and resource. No unnecessary words, highly efficient.
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 4 optional parameters and no output schema, the description provides a general overview but lacks specifics on return format, pagination behavior, and how parameters like page/offset/limit interact. It is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented. The description adds no further meaning beyond mentioning result content, meeting baseline expectation but not exceeding it.
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 information about all validator groups, listing the types of data included (members, votes, capacity, performance metrics). It distinguishes from sibling 'get_validator_group_details' by implying it returns all groups rather than a single one.
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. The description does not mention when not to use it or suggest sibling tools like 'get_validator_group_details' for individual group queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, but there is some overlap among balance-related tools (get_celo_balances, get_stable_token_balance, get_token_balance) that could cause agent confusion. The staking tools also have slightly overlapping scopes.
All tools follow a consistent 'get_' prefix with snake_case naming, making them predictable and easy to understand.
15 tools cover a well-scoped domain (blocks, transactions, balances, governance, staking, validators) without being excessive or too sparse.
The tool set covers key read operations for the Celo blockchain, but minor gaps exist such as missing token metadata, exchange rates, or account history.
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
Query real-time blockchain token data across EVM and Solana networks. Access token balances, transfers, prices, holders, NFT ownership, DEX swaps, and liquidity pools. Supports Ethereum, Base, Arbitrum, BSC, Polygon, Solana, and more.
Connect to the COTI blockchain to manage accounts, transfer native tokens, and deploy and operate…
Safety-first EVM and Bitcoin RPC tools for balances, contracts, blocks, and transactions
Deploy and manage blockchain nodes across 70+ protocols, search docs, request testnet funds.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with the Etherlink blockchain, including balance checks, transactions, smart contract interactions, and token operations.1274MIT

onchainos MCP Serverofficial
FlicenseNot gradedqualityBmaintenanceEnables on-chain operations including token search, market data, wallet management, swap execution, and DApp interactions across 20+ blockchains.328- FlicenseNot gradedqualityDmaintenanceEnables blockchain transactions on BSC including balance checks, transfers, token swaps, and reward claims.3
- FlicenseNot gradedqualityCmaintenanceEnables querying native and ERC-20 balances, checking allowances, retrieving DEX swap quotes, estimating gas costs, and managing Real World Assets and ERC-8004 agent identities on the Mantle Network.1
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/celo-org/celo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server