A Model Context Protocol server running on Vercel that provides blockchain analysis and interaction tools for the Monad testnet. Supports contract decoding, ABI analysis, transaction decoding, and ERC20 token operations.
This MCP server provides 12 blockchain utility tools for the Monad testnet with reasonable naming conventions and basic descriptions. Most tools follow verb_noun patterns (decode_, get_, encode_). However, there are significant gaps: parameter descriptions are minimal or missing for many inputs, output schemas are not documented, and error handling guidance is absent. The server targets a technical domain (Ethereum/blockchain) where precision is critical, yet many tools lack the specificity needed for reliable LLM invocation. For example, 'decode_calldata' and 'decode_transaction' are similar enough to confuse an LLM without clearer distinction in their descriptions. Parameter constraints (chainId ranges, address format validation) are mentioned in some descriptions but not systematized. No tool includes examples of return structures or error cases.
Converts decimal values to hexadecimal representation
Decodes Ethereum calldata to retrieve function name and parameters. Attempts decoding with contract ABI if address is provided, falls back to selector-based decoding.
Decodes a transaction using its hash and chain ID. Returns function name and decoded parameters.
Encodes a function call into calldata hex string. Returns the encoded data for transaction submission.
Fetches the ABI of a smart contract from blockchain explorers or attempts to guess it from bytecode
Retrieves the source code of a verified smart contract from the blockchain explorer
Fetches the balance of an ERC20 token for a given address on the Monad testnet
No output schemas documented for any tool. LLMs cannot plan downstream calls without knowing what fields are returned.
Parameter descriptions lack format constraints and valid value ranges. Examples: 'hex' parameters don't specify case (upper/lower), 0x prefix requirement, or max length. 'address' is said to be '42 characters including 0x' but should explicitly state '0x-prefixed 40 hexadecimal digits'. chainId lacks valid range documentation.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 19 | - | v1 |
Returns a list of all supported blockchain networks with their chain IDs and RPC URLs
Converts hexadecimal values to decimal representation
Decodes hex-encoded string data to UTF-8 text
Computes the Keccak256 hash of the given input
Encodes a UTF-8 string as hexadecimal data
Similar tools (decode_calldata vs decode_transaction, hex_to_decimal vs hex_to_string) lack clear disambiguation in descriptions. LLMs will struggle to choose correctly without explicit 'when to use this vs that' guidance.
No error handling guidance. Tools don't describe what happens when input is invalid (e.g., non-hex string, invalid address format, contract not found). LLMs receive no recovery path.
get_supported_chains has no output schema and minimal description (45 chars). It's a discovery tool but provides no guidance on what structure to expect or how to use returned chain IDs with other tools.
Conversion tools (hex_to_decimal, decimal_to_hex, hex_to_string, string_to_hex) don't specify output format or limits. E.g., do very large numbers overflow? What's the output format (0x-prefixed or not)?