# IC Phantom — agent compatibility entry point

Canonical instructions: [`/llms.txt`](/llms.txt)

Detailed workflow: [`/agent-guide.md`](/agent-guide.md)

Exact Candid: [`/canister-api.did`](/canister-api.did)

Machine-readable metadata: [`/agent.json`](/agent.json)

Production app: `https://hbxmr-wyaaa-aaaap-an3ia-cai.icp.net/`

Backend canister: `f4kcz-fqaaa-aaaap-an3hq-cai`

Production ICP MCP endpoint: `https://mcp.internetcomputer.org/mcp`

## Mandatory summary

- Authenticate with the official ICP MCP connector through Internet Identity. Phantom is not required.
- Resolve the production app and keep the connector's exact canonical derivation origin and selected app account.
- Require connector app principal = backend `whoami()` = `get_account_manifest_ii().identity_principal`.
- Use `get_account_manifest_ii()` as the canonical account set; do not derive addresses independently.
- Ask the user before every state-changing or fee/cycle-bearing operation, including minting.
- For ICP/SOL/DOGE transfers, call `verify_recipient`, then `prepare_transfer_ii`, show every intent field, obtain explicit approval of the confirmation code, and call `confirm_transfer_ii` once.
- For ckBTC sends and BTC withdrawals, verify and obtain explicit approval, then call the official ledger/minter directly as the selected II principal with a null/default source subaccount.
- Never use legacy direct `transfer_*_ii` methods; they are retired.
- Treat timeout/processing responses as unknown outcomes and reconcile before retrying.
- Use exact integer units and avoid polling or speculative mint calls.

## BTC / ckBTC summary

- Native BTC goes only to the manifest's Bitcoin address. After the transaction appears, one approved minter check reports pending sats/confirmations or mints when ready; never poll it.
- Existing ckBTC goes only to the manifest's II principal/default ICRC account.
- ckBTC sends stay on IC and are signed directly against the official ckBTC ledger.
- ckBTC-to-BTC withdrawal approves and calls the official minter directly, uses a Bitcoin mainnet address, and requires at least 50,000 sats.

Read `/llms.txt` before acting; this compatibility page intentionally does not duplicate the full safety protocol.
