Tool Reference
Every tool below is live in @hinkal/mcp. Transaction tools take a token as either a symbol ("USDC") or an on-chain address, alongside a numeric chainId the assistant picks the right tool from plain language, so these signatures are mainly for integrators.
Account
get_wallet_status()
Whether the wallet is set up, and its addresses if known.
get_wallet_addresses()
Your public EVM / Solana / Tron addresses, fund these before depositing.
export_wallet_key()
Reveal the wallet's access key for backup. Sensitive: full wallet control, and the key appears in the conversation.
Balances
get_all_balances()
Public and private balances on every supported chain, in one call.
get_balances(chainId, refresh?)
Private (shielded) balances per token on one chain.
get_public_balances(chainId, walletAddress?)
Regular on-chain token balances of a wallet, yours by default, or any address you pass.
get_stuck_balances()
Funds that were shielded but never paid out — left blocked when a private send failed partway. Recover them with recover_stuck_funds.
Transactions
deposit(chainId, tokenAddress, amount)
public → private. Gas only, no Hinkal fee.
deposit_for_other(chainId, tokenAddress, amount, recipient)
deposit into another user's shielded balance.
withdraw(chainId, tokenAddress, amount, toAddress)
private → public via relayer. Returns the transaction hash.
private_transfer(chainId, tokenAddress, amount, recipient)
private → private via relayer.
private_send(chainId, tokenAddress, recipients)
public → public to one or more addresses, no on-chain link. recipients is an array of { address, amount }. payouts run asynchronously.
check_private_send_status(scheduleId)
Poll a private_send payout by the scheduleId it returned.
recover_stuck_funds(chainId, tokenAddress, toAddress)
recover UTXOs left stuck by an interrupted deposit-and-withdraw.
Public wallet actions (visible on-chain, no privacy)
wallet_send(chainId, tokenAddress, amount, toAddress)
Normal token transfer from your wallet.
wallet_approve(chainId, tokenAddress, spender, amount)
Set an ERC-20 / TRC-20 allowance.
wallet_execute(chainId, to, data?, value?, functionSelector?, parameters?)
Arbitrary contract call (EVM calldata or Tron selector).
wallet_sign_message(chainId, message)
Sign a UTF-8 message; nothing is broadcast.
wallet_sign_typed_data(chainId, domain, types, value)
Sign EIP-712 typed data; nothing is broadcast.
wallet_solana_execute(chainId, transaction)
Sign and broadcast a base64 Solana VersionedTransaction.
tron_freeze(chainId, amount, resource)
Stake TRX for ENERGY or BANDWIDTH.
tron_unfreeze(chainId, amount, resource)
Unstake TRX
tron_delegate_resource(chainId, toAddress, amount, resource)
Lend staked energy/bandwidth to another Tron address.
Status & Info
list_chains()
every supported chain with chainId, name, and type.
ping()
check the Hinkal API is reachable.
list_tokens(chainId, search?)
common supported tokens for a chain.
get_enclave_public_key()
enclave public key used to encrypt payloads.
get_enclave_attestation(nonce)
attestation document proving the enclave runs the expected code.
get_contract_addresses()
deployed Hinkal contract addresses per chain.
Parameters follow the same conventions across tools:
chainId- numeric chain id (1Ethereum,137Polygon, etc.); seelist_chains.tokenAddress- a token symbol ("USDC") or on-chain address.amount- human decimal units ("1.5"), never wei.recipient/toAddress- a Hinkal private address or a public wallet address, per tool.
Last updated