Skip to main content
All on-chain tools use viem to interact with public RPC endpoints. Forensics tools additionally use Etherscan-family APIs for transaction history, internal traces, and contract source. Every tool that accepts a chain parameter defaults to base if omitted.

get_eth_balance

Returns the native token balance (ETH, MATIC, AVAX, BNB, etc.) for an address. Parameters: address (required), chain (optional)

is_contract

Checks whether an address is a smart contract, a regular EOA, or an EOA with EIP-7702 delegation. Parameters: address (required), chain (optional)
The tool uses getBytecode() to check for deployed code. If the bytecode starts with 0xef0100, it’s identified as an EIP-7702 delegated EOA rather than a traditional contract.

get_token_balance

Returns an ERC-20 token balance for a wallet. Automatically resolves the token’s name, symbol, and decimals. Parameters: address (required), token_address (required), chain (optional)

get_token_info

Returns metadata for an ERC-20 token contract: name, symbol, decimals, and total supply. Parameters: token_address (required), chain (optional)

get_gas_price

Returns the current gas price in wei and Gwei. Parameters: chain (optional)

get_block

Returns the latest block info, including number, timestamp, transaction count, and base fee. Parameters: chain (optional)

get_tx_count

Returns the transaction count (nonce) for an address — the total number of transactions sent. Parameters: address (required), chain (optional)

resolve_ens

Resolves an ENS name to an Ethereum address. Always uses Ethereum mainnet regardless of the chain parameter. Parameters: name (required)
If the name doesn’t resolve:

get_transaction

Retrieves transaction details by hash, including from/to, value, gas, and status. Parameters: hash (required), chain (optional)

Blockchain sleuthing tools

The following tools transform Mako from a basic chain reader into a full blockchain forensics agent. When you send Mako a transaction hash, she automatically fires get_transaction, get_transaction_receipt, and decode_tx_logs in parallel to give you the complete picture.

get_transaction_receipt

Returns the actual outcome of a transaction — not just the intent. Includes execution status, gas consumed, log count, and whether a new contract was deployed. Parameters: hash (required), chain (optional) Auto-triggered: Yes — fires automatically when a tx hash is detected.

decode_tx_logs

Decodes event logs from a transaction receipt. Recognizes ERC-20 Transfer events, Approval events, and Uniswap V2/V3 Swap events. For each token transfer, resolves the token’s name, symbol, and decimals automatically. Parameters: hash (required), chain (optional) Auto-triggered: Yes — fires automatically when a tx hash is detected.

get_internal_transactions

Surfaces internal (trace-level) transactions — contract-to-contract value transfers that are invisible in basic transaction data. Uses Etherscan-family APIs. Parameters: hash (required), chain (optional) Auto-triggered: Only when the user mentions keywords like “internal”, “trace”, “sleuth”, “investigate”, or “what happened”.

get_address_history

Pulls the last 25 transactions for a wallet address from block explorer APIs. Returns a summary with directional flow (IN/OUT), timing, method names, and aggregate statistics. Parameters: address (required), chain (optional) Auto-triggered: When an address is detected and the user mentions “history”, “activity”, “transactions”, “investigate”, or “trace”.

read_contract

Reads any public view or pure function on a deployed smart contract. You provide the Solidity function signature and optional arguments — Mako handles the ABI encoding and calls the chain directly. Parameters: address (required), function_signature (required), args (optional), chain (optional) Example call: function_signature = "function getReserves() view returns (uint112, uint112, uint32)"

get_contract_source

Fetches verified contract source code and ABI from block explorer APIs. Returns the contract name, compiler version, optimization settings, proxy status, and a parsed list of all functions and events. Parameters: address (required), chain (optional) Auto-triggered: When an address is detected and the user mentions “source”, “code”, “abi”, or “verified”.
If the contract is not verified:

lookup_address

Resolves an address to a human-readable identity. Performs reverse ENS lookup, checks against a database of known protocol addresses (Uniswap routers, major tokens, burn addresses, etc.), and returns basic profiling data. Parameters: address (required), chain (optional) Auto-triggered: Yes — fires automatically when any address is detected.