Free pre-execution contract checks for AI agents: preflight, control-plane scans, EAS anchors.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
One-call pre-execution safety check of a contract before an agent interacts with it: verdict (immutable / timelock / zero-delay timelock / multisig / EOA admin / unclassified / undeployed), 0-100 risk score, proxy + implementation, controller kind, zero-delay upgradeability and pause / blacklist / upgrade capabilities, pinned to a block. Free during the launch (no key, no payment).
0x-prefixed 20-byte address (EIP-55 checksum enforced when mixed-case)
Block to pin: "latest" (default), a decimal block number or 0x-hex
EVM chain
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http pacta https://pacta-x402.pacta.workers.dev/mcp
One-call pre-execution safety check of a contract before an agent interacts with it: verdict (immutable / timelock / zero-delay timelock / multisig / EOA admin / unclassified / undeployed), 0-100 risk score, proxy + implementation, controller kind, zero-delay upgradeability and pause / blacklist / upgrade capabilities, pinned to a block. Free during the launch (no key, no payment).
| Argument | Type | Description |
|---|---|---|
| block | string | Block to pin: "latest" (default), a decimal block number or 0x-hex |
| chain | string | EVM chain |
| address* | string | 0x-prefixed 20-byte address (EIP-55 checksum enforced when mixed-case) |
{
"type": "object",
"required": [
"address"
],
"properties": {
"block": {
"type": "string",
"default": "latest",
"pattern": "^(latest|0x[0-9a-fA-F]{1,14}|0|[1-9][0-9]{0,15})$",
"description": "Block to pin: \"latest\" (default), a decimal block number or 0x-hex"
},
"chain": {
"enum": [
"ethereum",
"base"
],
"type": "string",
"default": "ethereum",
"description": "EVM chain"
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "0x-prefixed 20-byte address (EIP-55 checksum enforced when mixed-case)"
}
},
"additionalProperties": false
}Live state of the public pending timelock operations tracked in https://pacta.wtf/api/v1/radar.json, each re-checked at the latest block (getTimestamp, isOperationPending, isOperationDone). Free during the launch (no key, no payment).
| Argument | Type | Description |
|---|---|---|
| protocol | string | Optional case-insensitive protocol filter (radar.json item protocol) |
{
"type": "object",
"required": [],
"properties": {
"protocol": {
"type": "string",
"description": "Optional case-insensitive protocol filter (radar.json item protocol)"
}
},
"additionalProperties": false
}Live control-plane scan of an EVM contract: EIP-1967 implementation/admin/beacon, owner(), Safe threshold/owners/guard, timelock delay, code size and deterministic risk flags at the latest (or a given) block. Free during the launch (no key, no payment).
| Argument | Type | Description |
|---|---|---|
| block | string | Block to pin: "latest" (default), a decimal block number or 0x-hex |
| chain | string | EVM chain |
| address* | string | 0x-prefixed 20-byte address (EIP-55 checksum enforced when mixed-case) |
{
"type": "object",
"required": [
"address"
],
"properties": {
"block": {
"type": "string",
"default": "latest",
"pattern": "^(latest|0x[0-9a-fA-F]{1,14}|0|[1-9][0-9]{0,15})$",
"description": "Block to pin: \"latest\" (default), a decimal block number or 0x-hex"
},
"chain": {
"enum": [
"ethereum",
"base"
],
"type": "string",
"default": "ethereum",
"description": "EVM chain"
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "0x-prefixed 20-byte address (EIP-55 checksum enforced when mixed-case)"
}
},
"additionalProperties": false
}Re-runs the pinned contract reads of a Pacta-tracked governance proposal (Aave, Euler, Morpho, Sky) at the live block and returns pinned-vs-live diffs. Free during the launch (no key, no payment).
| Argument | Type | Description |
|---|---|---|
| forum* | string | Governance forum |
| topicId* | string | Forum topic id; the proposal must be listed in https://pacta.wtf/api/v1/proposals.json as <forum>-<topicId> |
{
"type": "object",
"required": [
"forum",
"topicId"
],
"properties": {
"forum": {
"enum": [
"aave",
"euler",
"morpho",
"sky"
],
"type": "string",
"description": "Governance forum"
},
"topicId": {
"type": "string",
"pattern": "^[1-9][0-9]{0,9}$",
"description": "Forum topic id; the proposal must be listed in https://pacta.wtf/api/v1/proposals.json as <forum>-<topicId>"
}
},
"additionalProperties": false
}Live OpenZeppelin TimelockController operation state: isOperation/Pending/Ready/Done, getTimestamp (ETA), getMinDelay at the latest block. Free during the launch (no key, no payment).
| Argument | Type | Description |
|---|---|---|
| data | string | Calldata (default 0x) |
| opId | string | bytes32 operation id (hashOperation / CallScheduled id); or give target + value + data (+ predecessor + salt) |
| salt | string | bytes32 salt (default 0x00..00) |
| chain | string | EVM chain |
| value | string | Call value in wei (default 0) |
| target | string | Scheduled call target (to compute opId) |
| timelock* | string | OpenZeppelin TimelockController address |
| predecessor | string | bytes32 predecessor (default 0x00..00) |
{
"type": "object",
"required": [
"timelock"
],
"properties": {
"data": {
"type": "string",
"pattern": "^0x([0-9a-fA-F]{2})*$",
"description": "Calldata (default 0x)"
},
"opId": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$",
"description": "bytes32 operation id (hashOperation / CallScheduled id); or give target + value + data (+ predecessor + salt)"
},
"salt": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$",
"description": "bytes32 salt (default 0x00..00)"
},
"chain": {
"enum": [
"ethereum",
"base"
],
"type": "string",
"default": "ethereum",
"description": "EVM chain"
},
"value": {
"type": "string",
"pattern": "^(0|[1-9][0-9]{0,77})$",
"description": "Call value in wei (default 0)"
},
"target": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Scheduled call target (to compute opId)"
},
"timelock": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "OpenZeppelin TimelockController address"
},
"predecessor": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$",
"description": "bytes32 predecessor (default 0x00..00)"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 14, 2026.