MCP server for Algorand blockchain integration with comprehensive tools for transactions, smart contracts, DeFi, NFTs and more
This server has 19 tools with basic input schemas and descriptions, but significant quality gaps prevent a higher score. All tools have descriptions (good), but most descriptions are generic and under 100 chars, lacking the LLM-optimized detail needed to disambiguate similar tools. Parameter descriptions are present but minimal. Output schemas are undocumented, the server provides no visibility into what fields are returned, forcing LLMs to reason about response structure. Critical security issue: tools like sendPayment, createAsset, deployContract, callContract, and mintNFT accept private keys as parameters, violating secret-injection patterns. The server is STDIO-only, capping protocol readiness at 50. Tool naming follows verb_noun conventions (good), but descriptions lack actionable context about when to use each tool vs. similar ones. No error handling guidance is visible. Composition is generally sound, each tool has a single concern, but chaining IDs are not documented in response schemas.
Call a smart contract method
Create a new Algorand Standard Asset (ASA)
Deploy a smart contract (application) to Algorand
Generate a new Algorand account with address, private key, and mnemonic
Get all assets held by an account with balances
Get detailed information about an Algorand account. If no address provided, uses configured account from environment
Get balance of a specific asset for an account
CRITICAL: Private keys exposed as tool parameters (sendPayment, createAsset, deployContract, callContract, mintNFT). Secrets in parameters are logged, traced, and risk exposure in agent prompt history. This violates the secret-injection pattern and creates a direct security vulnerability.
Output schemas are not documented. No visibility into what fields are returned by any tool (e.g., getAccountInfo returns what? An object with which properties?). LLMs cannot reason about chaining results to downstream tools without this documentation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | 2024-11-05+ | v1 |
Get asset information by symbol (e.g., USDC, USDT, ALGO). Includes 40+ popular Algorand assets
Get detailed information about an asset
Get list of all available asset symbols with their IDs
Get information about a specific block
Get the current state of a smart contract
Get information about the latest block
Get current Algorand network status including last round, supply, and chain info
Get details of a specific transaction by its ID
Import an Algorand account from a mnemonic phrase
Mint a new NFT on Algorand
Search for transactions with various filters
Send ALGO payment from one account to another. If privateKey not provided, uses test account from environment
Descriptions are generic and under-optimized for LLM selection. Most descriptions (12-65 chars) lack context on WHEN to use the tool vs. similar ones. Example: 'Get information about a specific block' vs. 'Get current Algorand network status', LLMs cannot differentiate without more detail. Target 50-200 chars with selection guidance.
No error handling guidance. Tools provide no recovery hints (e.g., 'Account not found. Try importAccount() or generateAccount().'). LLMs receive raw errors and cannot self-correct.
Missing parameter constraints. Numeric parameters (round, assetId, amount, limit, decimals, total) lack min/max bounds. An LLM could pass round=-1, amount=1e15, limit=1000000. Unbounded inputs risk API failures and timeouts.
Parameters with context-dependent behavior not documented. Example: sendPayment accepts 'from: "test"' as a magic value to use test account, but this is not stated in the description. LLMs cannot infer this without explicit documentation.
Mutually exclusive parameters not documented. getAssetBalance accepts EITHER assetId OR symbol, but the description does not state this exclusivity. LLMs may pass both or neither, causing failures.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot determine which tools are safe to retry or which modify state without explicit hints. This is a current pattern in the 2026-07-28 spec.
No confirmation or dry-run for irreversible operations. sendPayment, createAsset, deployContract, callContract, and mintNFT modify blockchain state irreversibly. No dry-run option or confirmation-request pattern to prevent accidental execution.