Skip to main content
Glama

OpenZeppelin Contracts MCP Server

Official
by OpenZeppelin

solidity-account

Create ERC-4337-compliant account contracts with customizable features like ERC1271 signature validation, ERC721/1155 token receptions, and multisig support. Returns formatted Solidity code for integration.

Instructions

Make an account contract that follows the ERC-4337 standard. Experimental, some features are not audited and are subject to change.

Returns the source code of the generated contract, formatted in a Markdown code block. Does not write to disk.

Input Schema

NameRequiredDescriptionDefault
ERC1155HolderNoWhether to implement the `onERC1155Received` function to allow the account to receive ERC1155 tokens.
ERC721HolderNoWhether to implement the `onERC721Received` function to allow the account to receive ERC721 tokens.
ERC7579ModulesNoWhether to implement the ERC-7579 compatibility to enable functionality on the account with modules.
batchedExecutionNoWhether to implement a minimal batching interface for the account to allow multiple operations to be executed in a single transaction following the ERC-7821 standard.
infoNoMetadata about the contract and author
nameYesThe name of the account contract
signatureValidationNoWhether to implement the ERC-1271 standard for validating signatures. This is useful for the account to verify signatures.
signerNoDefines the signature verification algorithm used by the account to verify user operations. Options: - ECDSA: Standard Ethereum signature validation using secp256k1, validates signatures against a specified owner address - ERC7702: Special ECDSA validation using account's own address as signer, enables EOAs to delegate execution rights - P256: NIST P-256 curve (secp256r1) validation for integration with Passkeys and HSMs - RSA: RSA PKCS#1 v1.5 signature validation (RFC8017) for PKI systems and HSMs - Multisig: ERC-7913 multisignature requiring minimum number of signatures from authorized signers - MultisigWeighted: ERC-7913 weighted multisignature where signers have different voting weights

Input Schema (JSON Schema)

{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "ERC1155Holder": { "description": "Whether to implement the `onERC1155Received` function to allow the account to receive ERC1155 tokens.", "type": "boolean" }, "ERC721Holder": { "description": "Whether to implement the `onERC721Received` function to allow the account to receive ERC721 tokens.", "type": "boolean" }, "ERC7579Modules": { "anyOf": [ { "enum": [ false, "AccountERC7579" ], "type": [ "boolean", "string" ] }, { "const": "AccountERC7579Hooked", "type": "string" } ], "description": "Whether to implement the ERC-7579 compatibility to enable functionality on the account with modules." }, "batchedExecution": { "description": "Whether to implement a minimal batching interface for the account to allow multiple operations to be executed in a single transaction following the ERC-7821 standard.", "type": "boolean" }, "info": { "additionalProperties": false, "description": "Metadata about the contract and author", "properties": { "license": { "description": "The license used by the contract, default is \"MIT\"", "type": "string" }, "securityContact": { "description": "Email where people can contact you to report security issues. Will only be visible if contract source code is verified.", "type": "string" } }, "type": "object" }, "name": { "description": "The name of the account contract", "type": "string" }, "signatureValidation": { "anyOf": [ { "enum": [ false, "ERC1271" ], "type": [ "boolean", "string" ] }, { "const": "ERC7739", "type": "string" } ], "description": "Whether to implement the ERC-1271 standard for validating signatures. This is useful for the account to verify signatures." }, "signer": { "anyOf": [ { "anyOf": [ { "anyOf": [ { "anyOf": [ { "anyOf": [ { "enum": [ false, "ERC7702" ], "type": [ "boolean", "string" ] }, { "const": "ECDSA", "type": "string" } ] }, { "const": "P256", "type": "string" } ] }, { "const": "RSA", "type": "string" } ] }, { "const": "Multisig", "type": "string" } ] }, { "const": "MultisigWeighted", "type": "string" } ], "description": "Defines the signature verification algorithm used by the account to verify user operations. Options:\n - ECDSA: Standard Ethereum signature validation using secp256k1, validates signatures against a specified owner address\n - ERC7702: Special ECDSA validation using account's own address as signer, enables EOAs to delegate execution rights\n - P256: NIST P-256 curve (secp256r1) validation for integration with Passkeys and HSMs\n - RSA: RSA PKCS#1 v1.5 signature validation (RFC8017) for PKI systems and HSMs\n - Multisig: ERC-7913 multisignature requiring minimum number of signatures from authorized signers\n - MultisigWeighted: ERC-7913 weighted multisignature where signers have different voting weights" } }, "required": [ "name" ], "type": "object" }

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/OpenZeppelin/contracts-wizard'

If you have feedback or need assistance with the MCP directory API, please join our Discord server