verify-message
Verify that a message was signed by a specific Ethereum address using its signature to confirm authenticity and prevent tampering.
Instructions
Verify that a message was signed by the provided address.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The Ethereum address that signed the original message. | |
| message | Yes | The message to be verified. | |
| signature | Yes | The signature that was generated by signing the message with the address's signer. |
Implementation Reference
- src/tools/verify-message.ts:17-27 (handler)The execute handler that verifies the signed message using wagmi's verifyMessage function and returns the result as text content.execute: async (args) => { const result = await verifyMessage(wagmiConfig, args); return { content: [ { type: "text", text: result.toString(), }, ], }; },
- src/tools/verify-message.ts:12-16 (schema)Input schema defining parameters for address, message, and signature using Zod and imported types.parameters: z.object({ address: Address.describe("The Ethereum address that signed the original message."), message: z.string().describe("The message to be verified."), signature: Signature.describe("The signature that was generated by signing the message with the address's signer."), }),
- src/tools/verify-message.ts:8-29 (registration)Registration of the verify-message tool on the FastMCP server, including name, description, schema, and handler.export function registerVerifyMessageTools(server: FastMCP, wagmiConfig: Config): void { server.addTool({ name: "verify-message", description: "Verify that a message was signed by the provided address.", parameters: z.object({ address: Address.describe("The Ethereum address that signed the original message."), message: z.string().describe("The message to be verified."), signature: Signature.describe("The signature that was generated by signing the message with the address's signer."), }), execute: async (args) => { const result = await verifyMessage(wagmiConfig, args); return { content: [ { type: "text", text: result.toString(), }, ], }; }, }); };
- src/tools/register-tools.ts:55-55 (registration)Invocation of registerVerifyMessageTools in the central tool registration function.registerVerifyMessageTools(server, wagmiConfig);
- src/utils/evm-schema.ts:6-17 (helper)Zod schema validator for signature strings used in verify-message tool parameters.export const Signature = z.string().transform((val, ctx) => { const regex = /^0x[a-fA-F0-9]+$/; if (!regex.test(val)) { ctx.addIssue({ code: z.ZodIssueCode.custom, message: `Invalid Signature ${val}`, }); } return val as BytesType; });