MCP server that interacts with the Monad blockchain testnet to check MON balances and query NFT holdings
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation, output schema clarity, and error handling guidance. Tool names follow verb_noun convention (get_*), but descriptions lack depth on when/why to use each tool. Parameters have type definitions but minimal context. Error handling returns text responses without structured guidance for LLM recovery. No tool annotations (readOnlyHint, etc.) despite both being read-only operations.
查询 Monad 测试网地址的 MON 代币余额
查询 Monad 测试网地址持有的 NFT 数量
Parameter descriptions lack format/constraint guidance. 'address' parameter has no mention of expected format (0x-prefixed hex string, length, validation rules). LLMs will guess and pass invalid values.
Output schema not documented. Tools return {content: [{type: 'text', text: string}]} but this structure is not declared in tool definitions. LLMs cannot plan downstream calls or extract structured data.
Error responses are unstructured text without recovery guidance. 'Failed: <error message>' gives LLM no actionable next step. Should indicate if error is retryable, user-fixable, or fatal.
Tool descriptions are generic and lack context on when to use each tool. 'Query MON balance' does not explain prerequisites (valid address format), use cases, or relationship to get-nft-count.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
No tool annotations despite both tools being read-only. Missing readOnlyHint annotation prevents LLM from optimizing retry logic and understanding safety guarantees.