Initia MCP
OfficialThe Initia MCP server provides a comprehensive interface for interacting with the Initia blockchain ecosystem, enabling queries, asset management, and transactions across Initia L1 and L2 rollups (MiniEVM, MiniMove, MiniWasm).
Chain & Account
List supported chains and their capabilities (VM type, features, endpoints)
Get account info, balances, and aggregated portfolio across chains
Validate/convert between bech32 and hex addresses
Get staking delegations, rewards, and unbonding entries
Simulate transactions, estimate gas, and get block headers
Token & Denom
Search tokens by symbol, list registered tokens, get metadata (name, symbol, decimals)
Get balances for native, ERC20, CW20, or Move FA tokens
Format raw amounts and classify denomination types
Transactions
Fetch transactions by hash with VM-aware decoding
Search transactions using CometBFT query syntax
Get recent transactions for an address
Validators, Staking & Governance
List/inspect validators, get staking pool info and annual provisions
Delegate, undelegate, redelegate tokens, and claim staking rewards
List, view, and vote on governance proposals
Bridging & IBC
Find optimal cross-chain routes, execute transfers, and track status
Deposit/withdraw via OPInit bridge (L1↔L2); list bridges, token pairs, and bridgeable chains
List IBC channels, compute IBC denom hashes, and send IBC transfers
Move VM
List modules, get ABIs, query resources and table entries
Call view functions, execute entry functions, publish modules, run scripts
Query DEX liquidity pool pairs, convert denoms/metadata, encode/decode BCS
EVM (MiniEVM chains)
Call contract functions (read-only or state-changing), deploy contracts
Query event logs, receipts, blocks, bytecode, and storage slots
Decode revert reasons and event logs with ABI
CosmWasm (MiniWasm chains)
Query and execute smart contracts; upload, instantiate, migrate, manage admins
Get contract/code metadata, list contracts by code ID, view migration history and raw state
VIP (Lock-Staking & Gauge Voting)
Query VIP stage info, positions, voting power, vesting schedules, and claimable rewards
Lock-delegate, undelegate, redelegate tokens, extend lock durations
Vote on gauge weight distribution, claim VIP and staking rewards
Provide liquidity (pair or stableswap) and lock-delegate LP tokens in one transaction
Username (.init Names)
Resolve .init names to addresses and vice versa
Get username records, NFT metadata, and check availability
Bank
Send tokens to one or more recipients (batch sends supported)
Event Parsing
Parse Cosmos, Move, and CosmWasm events from transactions
Ledger Hardware Wallet
Check device connection status and verify addresses on the device
Provides a comprehensive set of EVM-compatible tools for interacting with Initia L2 rollups (MiniEVM), including contract deployment, function execution, event log querying, and transaction management.
Click 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., "@Initia MCPshow me my total portfolio balance across all Initia chains"
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.
@initia/mcp
MCP server and CLI for the Initia blockchain ecosystem. Tools for querying chain state, managing assets, and executing transactions across Initia L1 and L2 rollups (MiniEVM, MiniMove, MiniWasm).
Two interfaces, one codebase:
@initia/mcp— MCP server (stdio transport, for Claude Desktop / LLM agents)initctl— CLI (for humans and scripts)
Quick Start
npm install
npm run buildCLI (initctl)
# Global install
npm install -g .
initctl chain list
# Or run directly without global install
node dist/cli.js chain list
# Or via npx (after npm install)
npx initctl chain listClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"initia": {
"command": "npx",
"args": ["-y", "@initia/mcp"],
// optional — see Environment Variables below
"env": {
"INITIA_KEY": "your mnemonic words ...",
"INITIA_NETWORK": "mainnet"
}
}
}
}Claude Code
claude mcp add initia -s user -- npx -y @initia/mcp
# optional — see Environment Variables below
claude mcp add initia -s user \
-e INITIA_KEY="your mnemonic words ..." \
-e INITIA_NETWORK=mainnet \
-- npx -y @initia/mcpCodex
Add to codex.json (or pass via codex --mcp-config codex.json):
{
"mcpServers": {
"initia": {
"command": "npx",
"args": ["-y", "@initia/mcp"],
// optional — see Environment Variables below
"env": {
"INITIA_KEY": "your mnemonic words ...",
"INITIA_NETWORK": "mainnet"
}
}
}
}Gemini CLI
Add to .gemini/settings.json:
{
"mcpServers": {
"initia": {
"command": "npx",
"args": ["-y", "@initia/mcp"],
// optional — see Environment Variables below
"env": {
"INITIA_KEY": "your mnemonic words ...",
"INITIA_NETWORK": "mainnet"
}
}
}
}CLI
# Query
initctl chain list
initctl token search --symbol USDC
initctl move view --module-address 0x1 --module-name coin --function-name balance --args '["0x1"]'
# Transaction (interactive confirm)
initctl bank send --to init1abc... --amount 1000000 --denom uinit
# Transaction (skip confirm)
initctl bank send --to init1abc... --amount 1000000 --denom uinit --yes
# JSON output (for scripts)
initctl token search --symbol INIT --json
# Shell completion
eval "$(initctl completion bash)" # bash
eval "$(initctl completion zsh)" # zsh
initctl completion fish | source # fishEnvironment Variables
Variable | Required | Default | Description |
| No | — | Mnemonic (12/24 words), hex private key ( |
| No |
| HD derivation index (for mnemonic/ledger) |
| No |
| Ledger app: |
| No |
|
|
| No |
| Skip the server-side confirm gate for mutations (MCP only). See Security & Approvals. |
| No |
|
|
| No |
| Use Scan API for enhanced chain data |
Without a signer key, read-only tools still work. Mutation tools return SIGNER_REQUIRED.
Related MCP server: Somnia MCP Server
Security & Approvals
This server can sign and broadcast real transactions. Approvals happen in two independent layers:
MCP client approval (primary). Your MCP client — Claude Code, Codex, Claude Desktop, Gemini CLI — decides whether each tool call runs, normally by prompting you. This is the human gate. The server cannot force it, and a client configured to auto-approve (e.g. "always allow") will not prompt. Treat this as your main safety control.
Server confirm gate (secondary). Every mutation tool takes a
confirmflag (defaultfalse). Without it the tool only simulates and returns the estimated gas and decoded messages; it broadcasts only when called again withconfirm: true. Because the agent suppliesconfirm, this guards against accidental one-shot broadcasts — it is not a substitute for human approval on its own.
AUTO_CONFIRM=true removes layer 2 for mutations. Combined with a client set to auto-approve the tool, this enables fully unattended signing and broadcasting. Use it only on testnet or with low-value keys.
wasm_migrate,wasm_update_admin, andwasm_clear_adminare treated as destructive and always require explicitconfirm: true, even whenAUTO_CONFIRM=true. Every other mutation tool —bank_send,evm_send, bridges, contract deploy/execute (wasm_*,move_*,evm_deploy),governance_vote,staking_manage,ibc_transfer,feegrant_*, and the VIP tools — is not in this exception: withAUTO_CONFIRM=truethey broadcast automatically.All state-changing tools are annotated
destructiveHint: trueso clients that surface this hint can warn before running them. Note this MCP annotation is independent of theAUTO_CONFIRMbypass above: a tool can bedestructiveHint: trueand still auto-broadcast underAUTO_CONFIRM(only the three wasm admin tools are gated server-side).INITIA_NETWORKdefaults tomainnet— setINITIA_NETWORK=testnetfor experimentation.
Key handling. INITIA_KEY is read from the environment and the raw mnemonic/private key is discarded after key derivation at startup. For mainnet or high-value keys prefer a Ledger (INITIA_KEY="ledger"): it adds a hardware confirmation that no software setting — including AUTO_CONFIRM — can bypass. Ledger signing can still time out after 90s even if the transaction was broadcast; check your account or a block explorer before retrying to avoid duplicate spends.
Tools (107)
Chain & Account (10)
Tool | Description |
| List all supported chains (L1 + L2 rollups) |
| Get chain VM type, features, and endpoints |
| Current on-chain gas prices (L1 or L2) |
| Account info and balances |
| Aggregated balances across all chains |
| Validate bech32 or EVM address format |
| Convert between bech32 and hex |
| Staking delegations, rewards, and unbonding |
| Pending staking rewards across validators |
| Simulate a transaction and estimate gas |
Token & Denom (7)
Tool | Description |
| Search tokens by symbol across all chains |
| List registered tokens on a chain |
| Token metadata (name, symbol, decimals) for any type |
| Token balance for native, ERC20, CW20, or Move FA |
| Format raw amount with decimals |
| Classify denomination type (native, ibc, evm, etc.) |
| On-chain bank module metadata |
Transaction (3)
Tool | Description |
| Get transaction by hash with VM-aware decoding |
| Search transactions (CometBFT query syntax) |
| Recent transactions for an address |
Validator & Staking (7)
Tool | Description |
| List validators with status and voting power |
| Detailed validator information |
| Network bonded/unbonded token totals |
| Current annual token provisions (inflation) |
| Delegate, undelegate, redelegate, or claim rewards |
| Vote on a governance proposal |
| List or get governance proposals |
Bridge (14)
Tool | Description |
| Find optimal cross-chain transfer route |
| Execute a cross-chain transfer via router |
| Track cross-chain transfer progress |
| List bridgeable L2 chains |
| List assets available for routing |
| Direct L1↔L2 OPInit deposit/withdraw |
| Query withdrawal status |
| OPInit bridge configuration |
| L1↔L2 token pair mappings |
| Token pair lookup |
IBC (3)
Tool | Description |
| List IBC channels or find channel between two chains |
| Compute IBC denomination hash from path |
| Send tokens via IBC |
Username (4)
Tool | Description |
| Resolve .init names ↔ addresses |
| Full .init username record |
| NFT metadata for .init username |
| Check username availability |
Move VM (14)
Tool | Description |
| List modules deployed at an address |
| Get module ABI (functions, structs) |
| List resources held by an address |
| Query a specific resource |
| Call a view function (read-only) |
| Execute an entry function |
| Deploy module or run script |
| Query a table entry |
| List DEX liquidity pool pairs |
| Denom ↔ metadata conversion |
| BCS serialization utilities |
EVM (10)
Tool | Description |
| Call a contract function (read-only) |
| Send a state-changing transaction |
| Deploy a contract |
| Query event logs |
| Get transaction receipt |
| Get block information |
| Get contract bytecode (Minievm only) |
| Read storage slot (Minievm only) |
| Decode revert reason |
| Decode event logs with ABI |
CosmWasm (12)
Tool | Description |
| Query a smart contract |
| Execute a smart contract function |
| Upload contract bytecode |
| Instantiate a contract |
| Migrate to a new code ID |
| Admin management |
| Contract/code metadata |
| List contracts from a code ID |
| Migration history |
| Raw key-value state |
VIP (16)
Tool | Description |
| Current VIP stage and timing |
| Lock-staking positions |
| Gauge voting power |
| Vesting schedules with reward breakdowns |
| Vote allocations per bridge |
| Claimable VIP rewards |
| Lock-staking management |
| Extend lock duration |
| Gauge voting |
| Reward claiming |
| LP + lock-delegate in one tx |
| Stableswap LP + lock-delegate |
Event Parsing (3)
Tool | Description |
| Parse Cosmos events from a transaction |
| Decode Move module events |
| Decode CosmWasm contract events |
Ledger (2)
Tool | Description |
| Check Ledger device connection |
| Display address on device for verification |
Bank (1)
Tool | Description |
| Send tokens (supports batch sends) |
Architecture
src/
├── index.ts # MCP server entry point (stdio)
├── cli.ts # CLI entry point (initctl)
├── tools/
│ ├── registry.ts # ToolRegistry — shared by MCP and CLI
│ ├── groups.ts # Group definitions (24 groups)
│ ├── index.ts # Side-effect imports for all tool files
│ ├── tx-executor.ts # Mutation flow (dry-run → simulate → broadcast)
│ ├── vm-guard.ts # VM compatibility checks
│ └── *.ts # Tool modules (registry.register() calls)
├── mcp/
│ └── adapter.ts # Registry → McpServer binding
├── cli/
│ ├── adapter.ts # Registry → citty commands + zodToCittyArgs
│ ├── format.ts # TTY / JSON output formatting
│ ├── confirm.ts # Mutation y/N prompt
│ └── completion.ts # Shell completion (bash/zsh/fish)
├── initia/
│ └── chain-manager.ts # Chain context creation, caching
├── config/ # Environment config, chain aliases
├── schemas/ # Shared Zod parameter schemas
├── errors.ts # Typed error codes
├── response.ts # Response serialization
└── logger.ts # Structured JSON loggingTools are registered once in a transport-agnostic ToolRegistry. The MCP and CLI adapters consume the same registry independently — adding a tool to a *.ts file automatically exposes it in both interfaces.
Smart Defaults
Validator by name: Tools accepting a validator address also accept the moniker name (case-insensitive, auto-resolved)
"me" address: Address parameters accept
"me","self","my", or"signer"to resolve to the configured signerVM guard: Contract tools enforce VM compatibility — calling
move_viewon a MiniEVM chain returns aWRONG_VMerror with suggested alternatives
Development
npm run dev # Run MCP server with tsx (hot reload)
npm test # Unit + integration tests
npm run test:smoke # E2E tests against testnet
npm run lint # ESLint + tsc --noEmitLicense
Apache-2.0
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/initia-labs/mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server