arbdebug_validateMessageNumber
Validate a specific message number on the Arbitrum MCP Server using debug API. Input includes RPC URL, chain name, and optional parameters for full validation or module root hash.
Instructions
Validate a specific message number (requires debug API)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| chainName | No | Chain name (e.g., 'Xai', 'Arbitrum One') - will auto-resolve to RPC URL | |
| full | No | Whether to perform full validation | |
| moduleRoot | No | Optional module root hash | |
| msgNum | Yes | Message number to validate | |
| rpcUrl | No | The RPC URL of the Arbitrum node (optional if default is set) |
Implementation Reference
- src/index.ts:613-631 (handler)MCP tool handler implementation: resolves RPC URL, creates NitroNodeClient instance, calls validateMessageNumber method, and returns result as text content.case "arbdebug_validateMessageNumber": { const rpcUrl = await this.resolveRpcUrl( (args.rpcUrl as string) || (args.chainName as string) ); const nodeClient = new NitroNodeClient(rpcUrl); const result = await nodeClient.validateMessageNumber( args.msgNum as number, (args.full as boolean) || false, args.moduleRoot as string ); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; }
- src/index.ts:1403-1433 (registration)Tool registration in getAvailableTools(): defines name, description, and input schema for listTools response.name: "arbdebug_validateMessageNumber", description: "Validate a specific message number (requires debug API)", inputSchema: { type: "object" as const, properties: { rpcUrl: { type: "string", description: "The RPC URL of the Arbitrum node (optional if default is set)", }, chainName: { type: "string", description: "Chain name (e.g., 'Xai', 'Arbitrum One') - will auto-resolve to RPC URL", }, msgNum: { type: "number", description: "Message number to validate", }, full: { type: "boolean", description: "Whether to perform full validation", }, moduleRoot: { type: "string", description: "Optional module root hash", }, }, required: ["msgNum"], }, },
- src/index.ts:1405-1433 (schema)Input schema definition for the arbdebug_validateMessageNumber tool, specifying parameters and requirements.inputSchema: { type: "object" as const, properties: { rpcUrl: { type: "string", description: "The RPC URL of the Arbitrum node (optional if default is set)", }, chainName: { type: "string", description: "Chain name (e.g., 'Xai', 'Arbitrum One') - will auto-resolve to RPC URL", }, msgNum: { type: "number", description: "Message number to validate", }, full: { type: "boolean", description: "Whether to perform full validation", }, moduleRoot: { type: "string", description: "Optional module root hash", }, }, required: ["msgNum"], }, },
- Helper method in NitroNodeClient that makes the RPC call to 'arbdebug_validateMessageNumber' and processes the response.async validateMessageNumber( msgNum: number, full: boolean = false, moduleRoot?: string ): Promise<ValidateBlockResult> { try { const params = [`0x${msgNum.toString(16)}`, full]; if (moduleRoot) { params.push(moduleRoot); } const result = await this.makeRpcCall( "arbdebug_validateMessageNumber", params ); return { valid: result.valid || true, latency: result.latency, globalState: result.globalState, }; } catch (error) { return { valid: false, error: `Validate message number not supported on this RPC endpoint: ${ (error as Error).message }`, }; } }