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)
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)
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 firesget_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”.
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.