Algorand developer toolkit — wallets, funding, batch transactions, ASA management, contract interactions, and transaction inspection. Built for testnet developers.
algotool has 23 tools with consistent naming conventions and decent descriptions. All tools start with action verbs (wallets_, send_, asa_, app_, inspect_, get_, list_) which is strong. Descriptions are present for all tools and generally informative (average ~100 chars). However, there are critical gaps: (1) NO output schemas are documented anywhere, LLMs cannot know what fields to expect from results; (2) Many parameter descriptions are terse (e.g., 'Wallet index' lacks context on valid range or what wallet indices mean); (3) No error handling guidance visible in any tool, failures will leave agents without recovery paths; (4) No tool annotations (readOnlyHint/destructiveHint) despite obvious risk categories visible in the spec sheet; (5) Several high-risk tools (wallets_clear, wallets_export, send_algo, batch_send) lack confirmation/dry-run patterns. Parameter schemas are present and properly typed for most tools, which is a strength. The server exposes sensitive operations (wallet mnemonics, destructive clears, batch fund transfers) without documented safeguards.
Get recent transaction history for an address or wallet index
Get the escrow/application address for an app ID
Call a smart contract method
Read global state of a smart contract
Create a new ASA (Algorand Standard Asset / token)
Get details about an ASA (name, total supply, decimals, creator)
List all ASA holdings for a wallet
No output schemas documented for any tool, LLMs cannot predict response structure, forcing them to guess and improvise when chaining tools or extracting results.
Destructive operations (wallets_clear, wallets_export exporting mnemonics, send_algo, batch_send) lack confirmation patterns or dry-run support. Agents can accidentally destroy wallets or drain funds without safeguards.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 37 | - | v1 |
Opt a wallet into an ASA (required before receiving)
Transfer ASA tokens from a wallet to an address
Send ALGO from ALL wallets to a single address
Returns wallet addresses and the Lora faucet URL for manual funding. No programmatic faucet is available.
Distribute ALGO from one wallet to all other wallets
Get the ALGO balance for an address or wallet index
Get the currently configured network (testnet or mainnet)
Inspect all transactions in an atomic group (given any txID from the group)
Inspect a transaction by its ID. Shows sender, receiver, amount, type, fees, notes, etc.
Send ALGO from a wallet to an address
Switch between testnet and mainnet
Delete all stored wallets. This is destructive!
Create new Algorand wallets. Returns addresses. Wallets are stored locally in ~/.algotool/
Export all wallets with their mnemonics (sensitive!)
Import a wallet from a 25-word Algorand mnemonic
List all wallets with their balances
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite explicit risk categories in spec. The MCP protocol (2026-07-28) supports these annotations to help agents reason about side effects, they should be present.
Parameter descriptions lack actionable detail. E.g., 'Wallet index (0-based)' does not explain what happens if the index is out of bounds, whether indices are stable across sessions, or what 'wallet index' means to a user who only knows wallet addresses.
No error handling guidance visible. Tools provide no recovery hints for common failures (e.g., insufficient balance, wallet not found, network timeout). LLMs will get raw errors with no actionable next steps.
Sensitive data exposure risk: wallets_export returns mnemonics (plaintext private keys). No documentation of how this secret is protected, no audit trail visible, and no confirmation pattern. This is a major security risk.
Tool names could be ambiguous in composition: 'send_algo' vs 'batch_send' are similar but distinct (single vs bulk). 'fund_wallets' distributes from one to many; unclear if it is different from batch_send. LLM may conflate them.
'address' parameter in account_history and get_balance accepts both 'Algorand address or wallet index number', a polymorphic parameter that is error-prone. Should be split into address and wallet_index variants.