AlgorandBLOCK
Algorand Local Model Context Protocol (Server & Client)
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://www.npmjs.com/package/@goplausible/algorand-mcp) [](https://www.npmjs.com/package/@goplausible/algorand-mcp) [](https://opensource.org/licenses/MIT)
A comprehensive Model Context Protocol (MCP) server that gives AI agents and LLMs full access to the Algorand blockchain. Built by GoPlausible.
Algorand is a carbon-negative, pure proof-of-stake Layer 1 blockchain with instant finality, low fees, and built-in support for smart contracts (AVM), standard assets (ASAs), and atomic transactions.
What is MCP?
Model Context Protocol is an open standard that lets AI applications connect to external tools and data sources. This server exposes Algorand blockchain operations as MCP tools that any compatible AI client can use — Claude Desktop, Claude Code, Cursor, Windsurf, and others.
Features
- Agent wallet — mnemonics stored in a local SQLite database, used by the MCP server to sign on the agent's behalf (mnemonics never returned in tool responses)
- Wallet accounts with human-readable nicknames
- Account creation, key management, and rekeying
- Transaction building, signing, and submission (payments, assets, applications, key registration)
- Atomic transaction groups
- TEAL compilation and disassembly
- Full Algod and Indexer API access
- NFDomains (NFD) name service integration
- x402 HTTP micropayments — automatic discovery and one-call paid requests using the active wallet (USDC/ALGO)
- AP2 tooling for Algorand
- Tinyman AMM integration (pools, swaps, liquidity)
- Haystack Router DEX aggregation (best-price swaps across Tinyman, Pact, Folks)
- Alpha Arcade prediction market trading (browse markets, orderbooks, limit/m
dd3d03d1a1b2OBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add algorand-mcp --env ALGORAND_TOKEN=${ALGORAND_TOKEN} --env ALPHA_API_KEY=${ALPHA_API_KEY} --env HAYSTACK_API_KEY=${HAYSTACK_API_KEY} -- npx -y @goplausible/[email protected]{
"mcpServers": {
"algorand-mcp": {
"command": "npx",
"args": [
"-y",
"@goplausible/[email protected]"
],
"env": {
"ALGORAND_TOKEN": "${ALGORAND_TOKEN}",
"ALPHA_API_KEY": "${ALPHA_API_KEY}",
"HAYSTACK_API_KEY": "${HAYSTACK_API_KEY}"
}
}
}
}Exposed tools (172)
139 read · 27 write · 6 destructive. Blast radius: 6 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
alpha_amend_order | write | Edit an existing unfilled Alpha Arcade order in-place (change price, quantity, or slippage). Faster than cancel + recreate. |
alpha_cancel_order | write | Cancel an open Alpha Arcade order. Requires escrowAppId and orderOwner. Refunds USDC/tokens and ~0.957 ALGO collateral. |
alpha_claim | read | Claim USDC from a resolved Alpha Arcade market by redeeming outcome tokens. Winning = 1:1 USDC. |
alpha_create_limit_order | write | Place a limit order on an Alpha Arcade prediction market. Price and quantity in microunits (500000 = $0.50, 1000000 = 1 share). Locks ~0.957 ALGO collateral. Returns escrowAppId — save it for cancel_order. |
alpha_create_market_order | write | Place a market order with auto-matching on Alpha Arcade. Price, quantity, and slippage in microunits. Returns escrowAppId, matched quantity, and actual fill price. |
alpha_get_live_markets | read | Fetch all live Alpha Arcade prediction markets. Returns summary: id, title, marketAppId, prices, volume. Multi-choice markets have an options[] array — use options[].marketAppId for trading. |
alpha_get_market | read | Fetch full details for a single Alpha Arcade prediction market. Pass marketAppId (numeric, always required) and optionally marketId (UUID) for richer API data. |
alpha_get_open_orders | read | Fetch all open orders for a wallet on a specific Alpha Arcade market. Uses your active MCP wallet if walletAddress is not provided. |
alpha_get_orderbook | read | Fetch the on-chain orderbook as a unified YES-perspective view. Merges all 4 sides (YES bids/asks + NO bids/asks). Includes spread calculation. |
alpha_get_positions | read | Fetch all YES/NO token positions for a wallet across all Alpha Arcade markets. Uses your active MCP wallet if walletAddress is not provided. |
alpha_get_reward_markets | read | Fetch Alpha Arcade markets with liquidity rewards (totalRewards, rewardsPaidOut, etc.). Same shape as alpha_get_live_markets but includes reward info. Requires ALPHA_API_KEY. |
alpha_merge_shares | write | Merge equal YES and NO outcome tokens back into USDC on Alpha Arcade. 1 YES + 1 NO = 1 USDC. |
alpha_propose_match | write | Propose a match between an existing maker order and your wallet as taker on Alpha Arcade. |
alpha_split_shares | read | Split USDC into equal YES and NO outcome tokens on Alpha Arcade. 1 USDC (1000000 microunits) = 1 YES + 1 NO. |
api_algod_get_account_application_info | read | Get account-specific application information from algod |
api_algod_get_account_asset_info | read | Get account-specific asset information from algod |
api_algod_get_account_info | read | Get current account balance, assets, and auth address from algod |
api_algod_get_application_box | read | Get application box by name |
api_algod_get_application_boxes | read | Get all application boxes |
api_algod_get_application_by_id | read | Get application information |
api_algod_get_asset_by_id | read | Get current asset information from algod |
api_algod_get_node_status | read | Get current node status |
api_algod_get_node_status_after_block | read | Get node status after a specific round |
api_algod_get_pending_transaction | read | Get pending transaction information |
api_algod_get_pending_transactions | read | Get all pending transactions |
api_algod_get_pending_transactions_by_address | read | Get pending transactions for an address |
api_algod_get_transaction_params | read | Get suggested transaction parameters |
api_haystack_needs_optin | read | Check if an Algorand address needs to opt into an asset before swapping. Returns true if opt-in is needed, false otherwise. Always returns false for ALGO (ASA 0). Use before executing a swap to determine if wallet_optin_asset should be called first. |
api_indexer_lookup_account_created_applications | read | Get applications created by this account |
api_indexer_lookup_account_transactions | read | Get account transaction history |
api_indexer_lookup_application_logs | read | Get application log messages |
api_indexer_lookup_asset_balances | read | Get accounts holding this asset and their balances |
api_indexer_lookup_asset_transactions | read | Get transactions involving this asset |
api_indexer_lookup_transaction_by_id | read | Get transaction information by ID |
api_indexer_search_for_accounts | read | Search for accounts with various criteria |
api_indexer_search_for_applications | read | Search for applications with various criteria |
api_indexer_search_for_assets | read | Search for assets with various criteria |
api_indexer_search_for_transactions | read | Search for transactions with various criteria |
api_nfd_browse_nfds | read | Browse NFDs with various filters |
api_nfd_get_nfd | read | Get a specific NFD by name or by its application ID |
api_nfd_get_nfd_activity | read | Get activity/changes for NFDs |
api_nfd_get_nfd_analytics | read | Get analytics data for NFDs |
api_nfd_get_nfds_for_addresses | read | Get NFDs for specific addresses |
api_nfd_search_nfds | read | Search NFDs with various filters |
api_pera_asset_verification_status | read | Get the verification status of an Algorand mainnet asset from Pera Wallet. Returns verification tier (verified, trusted, suspicious, unverified) and explorer URL. |
api_pera_verified_asset_details | read | Get detailed information about an Algorand mainnet asset from Pera Wallet, including name, unit name, decimals, total supply, USD value, logo, verification tier, and collectible status. |
api_pera_verified_asset_search | read | Search Pera Wallet verified Algorand mainnet assets by name, unit name, or keyword. Returns matching assets with verification status, USD value, and logo. |
api_tinyman_get_asset_optin_quote | read | Get quote for opting into a Tinyman pool token |
api_tinyman_get_liquidity_quote | read | Get quote for adding liquidity to a pool |
api_tinyman_get_pool | read | Get Tinyman pool information by asset pair |
api_tinyman_get_pool_analytics | read | Get analytics for a Tinyman pool |
api_tinyman_get_pool_creation_quote | read | Get quote for creating a new Tinyman pool |
api_tinyman_get_remove_liquidity_quote | destructive | Get quote for removing liquidity from a pool |
api_tinyman_get_swap_quote | read | Get quote for swapping assets |
api_tinyman_get_validator_optin_quote | read | Get quote for opting into Tinyman validator app |
api_tinyman_get_validator_optout_quote | read | Get quote for opting out of Tinyman validator app |
api_ultrade_market_assets | read | Get trading assets |
api_ultrade_market_balances | read | Get account balances |
api_ultrade_market_cancel_order | write | Cancel open order |
api_ultrade_market_cancel_orders | read | Cancel multiple open orders |
api_ultrade_market_chains | read | Get blockchain chains |
api_ultrade_market_create_order | write | Create new order |
api_ultrade_market_create_orders | write | Create new orders |
api_ultrade_market_depth | write | Get order book depth |
api_ultrade_market_details | read | Get market details |
api_ultrade_market_fee_rates | read | Get fee rates |
api_ultrade_market_history | read | Get market history |
api_ultrade_market_last_trades | read | Get last trades |
api_ultrade_market_markets | read | Get markets |
api_ultrade_market_open_orders | read | Get open orders |
api_ultrade_market_operation_details | read | Get operation details |
api_ultrade_market_order_by_id | write | Get order by ID |
api_ultrade_market_order_message | write | Generate message from the order data |
api_ultrade_market_orders | read | Get orders |
api_ultrade_market_price | read | Get last market price by pair symbol |
api_ultrade_market_settings | read | Get market settings |
api_ultrade_market_symbols | read | Get market symbols |
api_ultrade_market_withdrawal_fee | read | Get withdrawal fee |
api_ultrade_system_maintenance | read | Get system maintenance status |
api_ultrade_system_time | read | Get current system time |
api_ultrade_system_version | read | Get system version |
api_ultrade_wallet_add_key | write | Add a trading key |
api_ultrade_wallet_key_message | read | Generate message from the trading key data |
api_ultrade_wallet_keys | read | Get trading keys |
api_ultrade_wallet_revoke_key | destructive | Revoke a trading key |
api_ultrade_wallet_signin | read | Sign in to trading account |
api_ultrade_wallet_signin_message | read | Generate message from the sign in data |
api_ultrade_wallet_trades | read | Get filtered wallet trades |
api_ultrade_wallet_transactions | read | Get filtered wallet transactions |
api_ultrade_wallet_withdraw | read | Withdraw token |
api_ultrade_wallet_withdraw_message | read | Generate message from the withdrawal data |
api_vestige_get_aggregator_stats | read | Get aggregator stats |
api_vestige_get_best_v4_swap_data | read | Get best V4 swap data |
api_vestige_get_v4_swap_data_transactions | read | Get V4 swap data transactions |
api_vestige_get_v4_swap_discount | read | Get V4 swap discount |
api_vestige_view_asset_candles | read | Get asset candles |
api_vestige_view_asset_composition | read | Get asset lockups based on protocol and pair |
api_vestige_view_asset_history | read | Get asset volume, swaps, total lockup, vwap and confidence history |
api_vestige_view_asset_notes_count | read | Get notes count for assets |
api_vestige_view_asset_price | read | Get asset prices |
api_vestige_view_assets | read | Get data about assets |
api_vestige_view_assets_list | read | Get asset list |
api_vestige_view_assets_search | read | Search assets by query |
api_vestige_view_balances | read | Get balances by network id, protocol id and asset id |
api_vestige_view_first_asset_notes | read | Get first note for assets |
api_vestige_view_network_by_id | read | Get network by id |
api_vestige_view_networks | read | Get all networks |
api_vestige_view_notes | read | Get notes by network id and optionally asset id |
api_vestige_view_pools | read | Get pools |
api_vestige_view_protocol_by_id | read | Get protocol by id |
api_vestige_view_protocol_volumes | read | Get protocol volumes at specific day. Defaults to current day. |
api_vestige_view_protocols | read | Get all protocols |
api_vestige_view_swaps | read | Get swaps |
api_vestige_view_vaults | read | Get all vaults |
assign_group_id | read | Assign a group ID to a list of transactions |
bazaar_get_resource_details | read | Fetch full details for a single Bazaar resource by its exact |
bazaar_list | read | Browse paid API resources cataloged in the Bazaar (the discovery directory hosted by the configured facilitator). Returns a compact summary per resource by default; pass |
bazaar_search | read | Search Bazaar paid API resources by keyword. Hits the same /discovery/resources endpoint as bazaar_list but with the |
bigint_to_bytes | read | Convert a BigInt to bytes |
bytes_to_bigint | read | Convert bytes to a BigInt |
compile_teal | read | Compile TEAL source code |
create_account | write | Create a new Algorand account |
decode_address | read | Decode an Algorand address to a public key |
decode_obj | read | Decode msgpack bytes to an object |
decode_signed_transaction | read | Decode base64 signed transaction bytes back into a transaction object with signature details. Accepts the blob from sign_transaction or wallet_sign_transaction. |
decode_uint64 | read | Decode bytes to a uint64 |
disassemble_teal | read | Disassemble TEAL bytecode back to source |
encode_address | read | Encode a public key to an Algorand address |
encode_obj | read | Encode an object to msgpack format |
encode_uint64 | read | Encode a uint64 to bytes |
encode_unsigned_transaction | read | Encode a transaction object into base64 unsigned transaction bytes (msgpack). Accepts output from make_*_txn or assign_group_id. |
generate_algorand_qrcode | read | Generate an Algorand URI and QR code according to ARC-26 specification |
get_application_address | read | Get the address for a given application ID |
get_knowledge_doc | read | Get markdown content for specified knowledge documents |
make_app_call_txn | write | Create an application call transaction |
make_app_clear_txn | destructive | Create an application clear state transaction |
make_app_closeout_txn | write | Create an application close out transaction |
make_app_create_txn | write | Create an application creation transaction |
make_app_delete_txn | destructive | Create an application delete transaction |
make_app_optin_txn | write | Create an application opt-in transaction |
make_app_update_txn | write | Create an application update transaction |
make_asset_config_txn | write | Create an asset configuration transaction |
make_asset_create_txn | write | Create an asset creation transaction |
make_asset_destroy_txn | destructive | Create an asset destroy transaction |
make_asset_freeze_txn | write | Create an asset freeze transaction |
make_asset_transfer_txn | write | Create an asset transfer transaction |
make_http_request_with_x402 | read | Call an x402-protected HTTP endpoint with automatic USDC/ALGO payment from the active wallet. If |
make_keyreg_txn | write | Create a key registration transaction |
make_payment_txn | write | Create a payment transaction |
mdk_to_mnemonic | read | Convert a master derivation key to a mnemonic |
mnemonic_from_seed | read | Generate a mnemonic from a seed |
mnemonic_to_mdk | read | Convert a mnemonic to a master derivation key |
mnemonic_to_secret_key | read | Convert a mnemonic to a secret key |
ping | read | Basic protocol utility to verify server connectivity |
rekey_account | read | Rekey an Algorand account to a new address |
secret_key_to_mnemonic | read | Convert a secret key to a mnemonic |
seed_from_mnemonic | read | Generate a seed from a mnemonic |
send_raw_transaction | write | Submit signed transactions to the Algorand network |
sign_bytes | read | Sign bytes with a secret key |
sign_transaction | read | Sign a transaction with a secret key |
validate_address | read | Check if an Algorand address is valid |
verify_bytes | read | Verify a signature against bytes with an Algorand address |
wallet_add_account | write | Create a new Algorand account, store it in the agent-wallet database with a nickname, and auto-switch to it if it is the first account. Returns address, public key, nickname, and index. The mnemonic is held internally by the MCP server and never returned to the agent. |
wallet_get_assets | read | Get all ASA holdings for the ACTIVE wallet account (an account whose private key this MCP server owns). Returns the wallet nickname, address, network, and the assets array. Use this when listing holdings of |
wallet_get_info | read | Get info for the ACTIVE wallet account (an account whose private key this MCP server owns in the OS keychain). Returns nickname, address, public key, network, on-chain balance, min-balance, opted-in apps/assets counts. Use this when you want to know the state of |
wallet_optin_asset | read | Opt the active wallet account into an asset by ID. Creates, signs, and submits the opt-in transaction. |
wallet_remove_account | destructive | Remove an Algorand account from the wallet by nickname or index. |
wallet_sign_data | read | Sign arbitrary data with the active wallet account using raw Ed25519 (noble library, no Algorand SDK prefix). Returns hex signature. |
wallet_sign_transaction | read | Sign a single transaction with the active wallet account. |
wallet_sign_transaction_group | read | Sign a group of transactions with the active wallet account. Assigns group ID automatically. |
wallet_switch_account | read | Switch the active wallet account by nickname or index. The active account is used for signing and balance queries. |
x402_discover_payment_requirements | read | Probe an x402-protected HTTP endpoint and return its payment requirements (the |
Trust audit
BLOCKgrade F · trust 54/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (6 observation(s))
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
- `--dev/--no-dev`: Control whether to launch 'algod' in developer mode or not. Defaults to 'yes' (developer mode enabled).
const algod = ClientManager.getAlgodClient({server: 'http://localhost', port: '4001', token: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'})const indexer = ClientManager.getIndexerClient({server: 'http://localhost', port: '8980', token: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'})const kmd = ClientManager.getKmdClient({server: 'http://localhost', port: '4002', token: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'})const algod = getAlgoClient({server: 'http://localhost', port: '4001', token: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'})const indexer = getAlgoIndexerClient({server: 'http://localhost', port: '8980', token: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'})api_tinyman_get_remove_liquidity_quote, api_ultrade_wallet_revoke_key, make_app_clear_txn, make_app_delete_txn, make_asset_destroy_txn, wallet_remove_account
import { getAlgodClient, extractNetwork } from '../../../algorand-client.js';import { withCommonParams } from '../../commonParams.js';import { getAlgodClient, extractNetwork } from '../../../algorand-client.js';import { withCommonParams } from '../../commonParams.js';import { getAlgodClient, extractNetwork } from '../../../algorand-client.js';$ curl http://127.0.0.1:4001/v2/transactions/simulate --data @demo.json
'http://127.0.0.1',
client = AlgodClient('a' * 64, "http://127.0.0.1:4001")const server = 'http://127.0.0.1';
| `baseServer` | `string` | `'http://127.0.0.1'` | REST endpoint |
"clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiMzVKWXBvWEduTTRzOElJQ2FrV1NMbGxjWHkzWl9sYzNBYUxTbDg3MnFYTSIsIm9yaWdpbiI6ImFuZHJvaWQ6YXBrLWtleS1oYXNoOlI4eE83cmxRV2FXTDRCbEZ5Z3B0V
"clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoiMFRYdTRHNGl1M3NiQVFvcGhlb1BlX0NwbkxKT0ItUWxJVXZ3RkJDMzE3USIsIm9yaWdpbiI6ImFuZHJvaWQ6YXBrLWtleS1oYXNoOlI4eE83cmxRV2FXTDRCbEZ5Z3B0V1JiN
const decoded = atob(token);
Gates applied: instruction_override, no_behavioural_pass.
dd3d03d1a1b2full audit observations/trust-audit/mcp-server/goplausible__algorand.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | dd3d03d1a1b2 | BLOCK | F | 54 | first audit |
Questions
What is the Algorand MCP server?
Algorand Local Model Context Protocol (Server & Client)
What tools does Algorand expose?
172 in total: 139 read-only, 27 that write, and 6 that can delete or overwrite (api_tinyman_get_remove_liquidity_quote, api_ultrade_wallet_revoke_key, make_app_clear_txn, make_app_delete_txn, make_asset_destroy_txn). Every one is listed on this page with its risk.
Is Algorand safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (54/100) and found 6 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 6 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Algorand need?
It reads ALGORAND_TOKEN, ALPHA_API_KEY and HAYSTACK_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Algorand run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @goplausible/algorand-mcp at 4.4.0.
How current is this page?
The grade is for one exact copy of the source (dd3d03d1a1b2), read on 2026-10-08. The repository is watched and re-audited when it changes.