portdeveloper avatar

🐴 Gulltoppr

portdeveloper/gulltoppr

Resolves EVM contract ABIs through a four-rung ladder: Etherscan verification, Sourcify, proxy detection, and Heimdall decompilation. When you point it at an address, even an unverified MEV bot, it returns a working ABI plus provenance metadata so you know what you're calling. Seven tools cover the full interaction cycle: resolve_abi, read_contract, simulate, encode_call, prepare_tx, decode_tx, and resolve_name. The prepare_tx flow generates unsigned transaction payloads with abi.ninja deeplinks instead of signing anything. Built on viem and Hono, runs over stdio or remote HTTP, and maintains an open selector registry as a byproduct of verified resolutions. Useful when you need to interact with contracts that have no published source.

tools
12
transport
HTTP
last updated
Jun 12, 2026

Install

From registry metadata
$ npx add-mcp https://mcp.gulltoppr.dev/mcp --name gulltoppr

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http gulltoppr https://mcp.gulltoppr.dev/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live Β· 12 tools

Verified live against the running server on Nov 6, 2026.

list_chainsList viem-backed chain aliases and ids. Use filters to find testnets, default-RPC chains, or a named chain before resolving contracts.3 params

List viem-backed chain aliases and ids. Use filters to find testnets, default-RPC chains, or a named chain before resolving contracts.

Parameters* required
has_default_rpcboolean
When true, only chains gulltoppr can query without rpc_url.
qstring
Search by chain id, name, alias, or native symbol; multi-word queries also match token-by-token and without whitespace.
testnetsboolean
When true, only testnets; when false, only mainnets.
runtime_metricsRead process-local resolver/rung/RPC counters for smoke checks and reliability dashboards.

Read process-local resolver/rung/RPC counters for smoke checks and reliability dashboards.

No parameters. Call it with no arguments.

lookup_selectorLookup gulltoppr-proven signatures for a 4-byte function/error selector or 32-byte event topic0. Prefer these over public 4byte guesses.1 params

Lookup gulltoppr-proven signatures for a 4-byte function/error selector or 32-byte event topic0. Prefer these over public 4byte guesses.

Parameters* required
selector*string
4-byte function/error selector or 32-byte event topic0.
registry_statsRead selector commons counts by proof grade and bytecode-match index size.

Read selector commons counts by proof grade and bytecode-match index size.

No parameters. Call it with no arguments.

export_registryReturn the CC0 selector commons as NDJSON. This can be large; prefer lookup_selector for normal agent workflows.

Return the CC0 selector commons as NDJSON. This can be large; prefer lookup_selector for normal agent workflows.

No parameters. Call it with no arguments.

resolve_abiResolve 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 `prov...6 params

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 `prov...

Parameters* required
address*string
0x contract address.
chain*value
Chain alias from GET /v1/chains (for example "ethereum", "base", "monad", "bsc") or numeric EIP-155 chain id.
method_kindstring
Restrict manifest methods to read, write, or all.one of read Β· write Β· all
method_limitinteger
Maximum number of manifest methods to return after filtering.
method_qstring
Case-insensitive manifest method search across names, signatures, parameters, outputs, and hints.
rpc_urlstring
Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids.
read_contractCall a view/pure function and get the decoded result. No wallet, no cost. Rejects state-mutating functions.5 params

Call a view/pure function and get the decoded result. No wallet, no cost. Rejects state-mutating functions.

Parameters* required
address*string
0x contract address.
argsarray
Function arguments, in order. Pass uint values as decimal strings.
chain*value
Chain alias from GET /v1/chains (for example "ethereum", "base", "monad", "bsc") or numeric EIP-155 chain id.
function*string
Function name, or full signature like "transfer(address,uint256)" if overloaded.
rpc_urlstring
Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids.
encode_callEncode a function call to calldata (0x…) without sending anything.6 params

Encode a function call to calldata (0x…) without sending anything.

Parameters* required
address*string
0x contract address.
argsarray
Function arguments, in order. Pass uint values as decimal strings.
chain*value
Chain alias from GET /v1/chains (for example "ethereum", "base", "monad", "bsc") or numeric EIP-155 chain id.
function*string
Function name, or full signature like "transfer(address,uint256)" if overloaded.
rpc_urlstring
Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids.
valuestring
Native value in wei (decimal string), for payable functions.
simulateSimulate 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.9 params

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.

Parameters* required
addressstring
0x contract address.
argsarray
Function arguments, in order. Pass uint values as decimal strings.
chain*value
Chain alias from GET /v1/chains (for example "ethereum", "base", "monad", "bsc") or numeric EIP-155 chain id.
datastring
Raw form: calldata (0x-prefixed hex bytes).
from*string
The sender address (the user's wallet). No key is needed β€” nothing is signed.
functionstring
Function name, or full signature like "transfer(address,uint256)" if overloaded.
rpc_urlstring
Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids.
tovalue
Raw form: target address.
valuestring
Native value in wei (decimal string), for payable functions.
prepare_txPrepare 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 b...7 params

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 b...

Parameters* required
address*string
0x contract address.
argsarray
Function arguments, in order. Pass uint values as decimal strings.
chain*value
Chain alias from GET /v1/chains (for example "ethereum", "base", "monad", "bsc") or numeric EIP-155 chain id.
from*string
The sender address (the user's wallet). No key is needed β€” nothing is signed.
function*string
Function name, or full signature like "transfer(address,uint256)" if overloaded.
rpc_urlstring
Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids.
valuestring
Native value in wei (decimal string), for payable functions.
decode_txDecode 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.3 params

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.

Parameters* required
chain*value
Chain alias from GET /v1/chains (for example "ethereum", "base", "monad", "bsc") or numeric EIP-155 chain id.
rpc_urlstring
Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids.
tx_hash*string
0x transaction hash.
resolve_nameResolve an ENS/Basename to an address, or an address to its primary ENS/Basename. Pass chain=base for Basenames.2 params

Resolve an ENS/Basename to an address, or an address to its primary ENS/Basename. Pass chain=base for Basenames.

Parameters* required
chainvalue
Chain alias from GET /v1/chains (for example "ethereum", "base", "monad", "bsc") or numeric EIP-155 chain id.
name*string
An ENS/Basename (vitalik.eth, name.base.eth) or a 0x address.

Sponsors

Readme

🐴 gulltoppr

An agent resolving a live unverified MEV bot via gulltoppr: decompiled ABI, provenance warning, registry-proven name, live read

A real session: an unverified MEV bot that traded seconds earlier (no source, no ABI anywhere) resolved to a full interface in two MCP tool calls.

The REST engine for gulltoppr: the resolution ladder + verb surface that lets an AI agent go from (chain, address) to a correct, simulated, safe contract interaction. This is "the engine" of the four faces (REST β†’ MCP β†’ SDK β†’ Skill); see ../SPEC.md for the full contract and ../IDEATION.md for the strategy.

TypeScript + viem + Hono. The heimdall decompile rung is delegated over HTTP to gulltoppr (kept out-of-process by design).

Run


View the full README on GitHub

Details

Repository
github.com/portdeveloper/gulltoppr
Transport
HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026