🐴 Gulltoppr
by portdeveloper · remote · no sign-in to list tools · v0.1.2 · published by GitHub user portdeveloper
Resolve any EVM contract ABI (even unverified, via decompilation), read, simulate, prepare txs.
12 tools: 1 do something that can't be undone, 4 change things and 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things4Claude Code: ask: see these tools
- Only reads7Claude Code: allow: see these tools
3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http gulltoppr https://mcp.gulltoppr.dev/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnread_contract
The server marks "read_contract" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "read_contract" says "read": a word for reading.
- Warnencode_call
The server marks "encode_call" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "encode_call" says "call": a word for a change.
- Warnsimulate
The server marks "simulate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
12 tools
Can't be undone 1Claude Code: ask
simulateSimulate a call and return success, gas, decoded return, and best-effort state diff / asset changes / logs.1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "simulate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Simulate a call and return success, gas, decoded return, and best-effort state diff / asset changes / logs. Provide a high-level call (address + function + args) or raw (to + data), never both.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
Changes things 4Claude Code: ask
decode_txDecode what a transaction did: delegated heimdall decode plus `decoded_call` from the resolved target ABI when available.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Decode what a transaction did: delegated heimdall decode plus `decoded_call` from the resolved target ABI when available. Prefer `decoded_call` for typed function/arg names, and read its provenance.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
encode_callEncode a function call to calldata (0x…) without sending anything.1 finding
Why it is in this group
- The name "encode_call" says "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "encode_call" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "encode_call" says "call": a word for a change.
Description, as the server wrote it Encode a function call to calldata (0x…) without sending anything.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
prepare_txPrepare a contract WRITE for the user to sign.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Prepare a contract WRITE for the user to sign. Returns an UNSIGNED transaction, its simulation, a human-readable summary, safety metadata, warnings, a configured signing deeplink, and an EIP-1193 wallet request when signing is recommended. IMPORTANT: this tool NEVER signs or broadcasts. Present the summary + simulation + warnings to the user. Only hand them the `deeplink` or `wallet_request` when `safety.signing_recommended` is true. If `safety.risk_level` is high or blocked, make that explicit; blocked means do not send.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
read_contractCall a view/pure function and get the decoded result.1 finding
Why it is in this group
- The name "read_contract" says "read": a word for reading.
- The description's first verb is "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "read_contract" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "read_contract" says "read": a word for reading.
Description, as the server wrote it Call a view/pure function and get the decoded result. No wallet, no cost. Rejects state-mutating functions.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
Only reads 7Claude Code: allow
export_registryReturn the CC0 selector commons as NDJSON.No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it Return the CC0 selector commons as NDJSON. This can be large; prefer lookup_selector for normal agent workflows.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
list_chainsList viem-backed chain aliases and ids.No findings
Why it is in this group
- The name "list_chains" says "list": a word for reading.
Description, as the server wrote it List viem-backed chain aliases and ids. Use filters to find testnets, default-RPC chains, or a named chain before resolving contracts.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
lookup_selectorLookup gulltoppr-proven signatures for a 4-byte function/error selector or 32-byte event topic0.No findings
Why it is in this group
- The name "lookup_selector" says "lookup": a word for reading.
Description, as the server wrote it Lookup gulltoppr-proven signatures for a 4-byte function/error selector or 32-byte event topic0. Prefer these over public 4byte guesses.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
registry_statsRead selector commons counts by proof grade and bytecode-match index size.No findings
Why it is in this group
- The description's first verb is "read": a word for reading.
Description, as the server wrote it Read selector commons counts by proof grade and bytecode-match index size.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
resolve_abiResolve a contract's interface from chain + address via a fallback ladder (Etherscan → Sourcify → proxy → heimdall decompile → 4byte).No findings
Why it is in this group
- The name "resolve_abi" says "resolve": a word for reading.
Description, as the server wrote it Resolve a contract's interface from chain + address via a fallback ladder (Etherscan → Sourcify → proxy → heimdall decompile → 4byte). Returns a compact capability manifest (read vs write functions, the 'buttons'), proxy chain, token metadata, and PROVENANCE. ALWAYS read `provenance`: a `decompiled` ABI has synthetic function names — treat it with care and confirm intent before writing. Partial, proxy, and bytecode-match results lead with a WARNING before the JSON. The compact manifest/provenance is also returned as structuredContent. Use method_q/method_kind/method_limit for large ABIs. Raw ABI is omitted from MCP output to save tokens; use REST/SDK resolve_abi with include_abi=true if needed.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
resolve_nameResolve an ENS/Basename to an address, or an address to its primary ENS/Basename.No findings
Why it is in this group
- The name "resolve_name" says "resolve": a word for reading.
Description, as the server wrote it Resolve an ENS/Basename to an address, or an address to its primary ENS/Basename. Pass chain=base for Basenames.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
runtime_metricsRead process-local resolver/rung/RPC counters for smoke checks and reliability dashboards.No findings
Why it is in this group
- The description's first verb is "read": a word for reading.
Description, as the server wrote it Read process-local resolver/rung/RPC counters for smoke checks and reliability dashboards.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.2. Values in angle brackets are yours to fill in.
claude mcp add --transport http gulltoppr https://mcp.gulltoppr.dev/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__gulltoppr__list_chains",
"mcp__gulltoppr__runtime_metrics",
"mcp__gulltoppr__lookup_selector",
"mcp__gulltoppr__registry_stats",
"mcp__gulltoppr__export_registry",
"mcp__gulltoppr__resolve_abi",
"mcp__gulltoppr__resolve_name"
],
"ask": [
"mcp__gulltoppr__read_contract",
"mcp__gulltoppr__encode_call",
"mcp__gulltoppr__simulate",
"mcp__gulltoppr__prepare_tx",
"mcp__gulltoppr__decode_tx"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as gulltoppr. Review it before you use it.
