For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

Tool
Description

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

Tool
Description

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

Tool
Description

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)

Tool
Description

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

Tool
Description

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 (1 Ethereum, 137 Polygon, etc.); see list_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