{"name":"io.github.portdeveloper/gulltoppr","slug":"portdeveloper-gulltoppr","title":"🐴 Gulltoppr","description":"Resolve any EVM contract ABI (even unverified, via decompilation), read, simulate, prepare txs.","url":"https://mcp.market/server/portdeveloper-gulltoppr","rating":null,"grade":"B","score":76,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":15,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-08-01T12:30:04.000Z","license":null},"uptime":{"percent":82,"checks":28,"ok":23,"last_checked_at":"2026-11-04T10:00:50.870Z","last_ok_at":"2026-11-04T10:00:50.870Z","latency_ms":71},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/portdeveloper/gulltoppr","website":null,"version":"0.1.2","remotes":[{"type":"streamable-http","url":"https://mcp.gulltoppr.dev/mcp"}],"packages":[],"tools":[{"name":"decode_tx","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"chain":{"anyOf":[{"type":"string","minLength":1},{"type":"integer","exclusiveMinimum":0}],"description":"Chain alias from GET /v1/chains (for example \"ethereum\", \"base\", \"monad\", \"bsc\") or numeric EIP-155 chain id."},"tx_hash":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$","description":"0x transaction hash."},"rpc_url":{"type":"string","pattern":"^https?:\\/\\/\\S+$","description":"Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids."}},"required":["chain","tx_hash"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"encode_call","description":"Encode a function call to calldata (0x…) without sending anything.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"chain":{"anyOf":[{"type":"string","minLength":1},{"type":"integer","exclusiveMinimum":0}],"description":"Chain alias from GET /v1/chains (for example \"ethereum\", \"base\", \"monad\", \"bsc\") or numeric EIP-155 chain id."},"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"0x contract address."},"function":{"type":"string","minLength":1,"pattern":"\\S","description":"Function name, or full signature like \"transfer(address,uint256)\" if overloaded."},"args":{"type":"array","default":[],"description":"Function arguments, in order. Pass uint values as decimal strings."},"value":{"type":"string","pattern":"^\\d+$","description":"Native value in wei (decimal string), for payable functions."},"rpc_url":{"type":"string","pattern":"^https?:\\/\\/\\S+$","description":"Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids."}},"required":["chain","address","function"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"export_registry","description":"Return the CC0 selector commons as NDJSON. This can be large; prefer lookup_selector for normal agent workflows.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_chains","description":"List viem-backed chain aliases and ids. Use filters to find testnets, default-RPC chains, or a named chain before resolving contracts.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","description":"Search by chain id, name, alias, or native symbol; multi-word queries also match token-by-token and without whitespace."},"testnets":{"type":"boolean","description":"When true, only testnets; when false, only mainnets."},"has_default_rpc":{"type":"boolean","description":"When true, only chains gulltoppr can query without rpc_url."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"lookup_selector","description":"Lookup gulltoppr-proven signatures for a 4-byte function/error selector or 32-byte event topic0. Prefer these over public 4byte guesses.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"selector":{"type":"string","pattern":"^0x([0-9a-fA-F]{8}|[0-9a-fA-F]{64})$","description":"4-byte function/error selector or 32-byte event topic0."}},"required":["selector"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"prepare_tx","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"chain":{"anyOf":[{"type":"string","minLength":1},{"type":"integer","exclusiveMinimum":0}],"description":"Chain alias from GET /v1/chains (for example \"ethereum\", \"base\", \"monad\", \"bsc\") or numeric EIP-155 chain id."},"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"0x contract address."},"function":{"type":"string","minLength":1,"pattern":"\\S","description":"Function name, or full signature like \"transfer(address,uint256)\" if overloaded."},"args":{"type":"array","default":[],"description":"Function arguments, in order. Pass uint values as decimal strings."},"from":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"The sender address (the user's wallet). No key is needed — nothing is signed."},"value":{"type":"string","pattern":"^\\d+$","description":"Native value in wei (decimal string), for payable functions."},"rpc_url":{"type":"string","pattern":"^https?:\\/\\/\\S+$","description":"Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids."}},"required":["chain","address","function","from"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"read_contract","description":"Call a view/pure function and get the decoded result. No wallet, no cost. Rejects state-mutating functions.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"chain":{"anyOf":[{"type":"string","minLength":1},{"type":"integer","exclusiveMinimum":0}],"description":"Chain alias from GET /v1/chains (for example \"ethereum\", \"base\", \"monad\", \"bsc\") or numeric EIP-155 chain id."},"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"0x contract address."},"function":{"type":"string","minLength":1,"pattern":"\\S","description":"Function name, or full signature like \"transfer(address,uint256)\" if overloaded."},"args":{"type":"array","default":[],"description":"Function arguments, in order. Pass uint values as decimal strings."},"rpc_url":{"type":"string","pattern":"^https?:\\/\\/\\S+$","description":"Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids."}},"required":["chain","address","function"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"registry_stats","description":"Read selector commons counts by proof grade and bytecode-match index size.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"resolve_abi","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"chain":{"anyOf":[{"type":"string","minLength":1},{"type":"integer","exclusiveMinimum":0}],"description":"Chain alias from GET /v1/chains (for example \"ethereum\", \"base\", \"monad\", \"bsc\") or numeric EIP-155 chain id."},"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"0x contract address."},"method_q":{"type":"string","description":"Case-insensitive manifest method search across names, signatures, parameters, outputs, and hints."},"method_kind":{"type":"string","enum":["read","write","all"],"description":"Restrict manifest methods to read, write, or all."},"method_limit":{"type":"integer","minimum":0,"maximum":500,"description":"Maximum number of manifest methods to return after filtering."},"rpc_url":{"type":"string","pattern":"^https?:\\/\\/\\S+$","description":"Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids."}},"required":["chain","address"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"resolve_name","description":"Resolve an ENS/Basename to an address, or an address to its primary ENS/Basename. Pass chain=base for Basenames.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"pattern":"\\S","description":"An ENS/Basename (vitalik.eth, name.base.eth) or a 0x address."},"chain":{"anyOf":[{"type":"string","minLength":1},{"type":"integer","exclusiveMinimum":0}],"description":"Chain alias from GET /v1/chains (for example \"ethereum\", \"base\", \"monad\", \"bsc\") or numeric EIP-155 chain id."}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"runtime_metrics","description":"Read process-local resolver/rung/RPC counters for smoke checks and reliability dashboards.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"simulate","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"chain":{"anyOf":[{"type":"string","minLength":1},{"type":"integer","exclusiveMinimum":0}],"description":"Chain alias from GET /v1/chains (for example \"ethereum\", \"base\", \"monad\", \"bsc\") or numeric EIP-155 chain id."},"from":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"The sender address (the user's wallet). No key is needed — nothing is signed."},"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"0x contract address."},"function":{"type":"string","minLength":1,"pattern":"\\S","description":"Function name, or full signature like \"transfer(address,uint256)\" if overloaded."},"args":{"type":"array","default":[],"description":"Function arguments, in order. Pass uint values as decimal strings."},"to":{"$ref":"#/properties/address","description":"Raw form: target address."},"data":{"type":"string","pattern":"^0x([0-9a-fA-F]{2})*$","description":"Raw form: calldata (0x-prefixed hex bytes)."},"value":{"type":"string","pattern":"^\\d+$","description":"Native value in wei (decimal string), for payable functions."},"rpc_url":{"type":"string","pattern":"^https?:\\/\\/\\S+$","description":"Override HTTP(S) RPC URL. Required for chains with no default (e.g. local/31337) or custom EVM chain ids."}},"required":["chain","from"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":76,"grade":"B","scanned_at":"2026-09-27T05:29:24.100Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T05:29:24.093Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":12,"max":20,"notes":["remote reachable in 10076ms"]},"poisoning":{"score":15,"max":15,"notes":["12 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":12,"max":15,"notes":["last push 57 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"probes":[{"url":"https://mcp.gulltoppr.dev/mcp","reachable":true,"authRequired":false,"latencyMs":10076,"serverInfo":{"name":"gulltoppr","version":"0.2.2"}}],"packages":[],"repo":{"found":true,"owner":"portdeveloper","repo":"gulltoppr","archived":false,"pushedAt":"2026-08-01T12:30:04Z","stars":0,"forks":0,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/108868128?v=4","ownerCreatedAt":"2022-07-07T09:28:40Z"},"icon":{"url":"https://avatars.githubusercontent.com/u/108868128?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":null,"lastPushAt":"2026-08-01T12:30:04.000Z","score":15}}}},"grade_history":[],"reviews":[]}