Skip to main content
Glama

OpenZeppelin Contracts MCP Server

Official
by OpenZeppelin

solidity-governor

Generate secure and customizable governance contracts for DAOs using OpenZeppelin libraries, with configurable voting types, timelocks, and governance settings.

Instructions

Make a contract to implement governance, such as for a DAO.

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

Input Schema

NameRequiredDescriptionDefault
blockTimeNoThe block time of the chain, default is 12
clockModeNoThe clock mode used by the voting token. For Governor, this must be chosen to match what the ERC20 or ERC721 voting token uses.
decimalsNoThe number of decimals to use for the contract, default is 18 for ERC20Votes and 0 for ERC721Votes (because it does not apply to ERC721Votes)
delayYesThe delay since proposal is created until voting starts, default is "1 day"
infoNoMetadata about the contract and author
nameYesThe name of the contract
periodYesThe length of period during which people can cast their vote, default is "1 week"
proposalThresholdNoMinimum number of votes an account must have to create a proposal, default is 0.
quorumAbsoluteNoThe absolute quorum required, in cases of quorumMode equals absolute
quorumModeNoThe type of quorum mode to use
quorumPercentNoThe percent required, in cases of quorumMode equals percent
settingsNoAllow governance to update voting settings (delay, period, proposal threshold)
storageNoEnable storage of proposal details and enumerability of proposals
timelockNoThe type of timelock to use
upgradeableNoWhether the smart contract is upgradeable. Transparent uses more complex proxy with higher overhead, requires less changes in your contract. Can also be used with beacons. UUPS uses simpler proxy with less overhead, requires including extra code in your contract. Allows flexibility for authorizing upgrades.
votesNoThe type of voting to use

Input Schema (JSON Schema)

{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "blockTime": { "description": "The block time of the chain, default is 12", "type": "number" }, "clockMode": { "description": "The clock mode used by the voting token. For Governor, this must be chosen to match what the ERC20 or ERC721 voting token uses.", "enum": [ "blocknumber", "timestamp" ], "type": "string" }, "decimals": { "description": "The number of decimals to use for the contract, default is 18 for ERC20Votes and 0 for ERC721Votes (because it does not apply to ERC721Votes)", "type": "number" }, "delay": { "description": "The delay since proposal is created until voting starts, default is \"1 day\"", "type": "string" }, "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 contract", "type": "string" }, "period": { "description": "The length of period during which people can cast their vote, default is \"1 week\"", "type": "string" }, "proposalThreshold": { "description": "Minimum number of votes an account must have to create a proposal, default is 0.", "type": "string" }, "quorumAbsolute": { "description": "The absolute quorum required, in cases of quorumMode equals absolute", "type": "string" }, "quorumMode": { "description": "The type of quorum mode to use", "enum": [ "percent", "absolute" ], "type": "string" }, "quorumPercent": { "description": "The percent required, in cases of quorumMode equals percent", "type": "number" }, "settings": { "description": "Allow governance to update voting settings (delay, period, proposal threshold)", "type": "boolean" }, "storage": { "description": "Enable storage of proposal details and enumerability of proposals", "type": "boolean" }, "timelock": { "anyOf": [ { "enum": [ false, "openzeppelin" ], "type": [ "boolean", "string" ] }, { "const": "compound", "type": "string" } ], "description": "The type of timelock to use" }, "upgradeable": { "description": "Whether the smart contract is upgradeable. Transparent uses more complex proxy with higher overhead, requires less changes in your contract. Can also be used with beacons. UUPS uses simpler proxy with less overhead, requires including extra code in your contract. Allows flexibility for authorizing upgrades.", "enum": [ "transparent", "uups" ], "type": "string" }, "votes": { "description": "The type of voting to use", "enum": [ "erc20votes", "erc721votes" ], "type": "string" } }, "required": [ "name", "delay", "period" ], "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