{
  "name": "IC Phantom",
  "description": "Internet Identity wallet controls for ICP, SOL, DOGE, ckBTC, and native BTC conversion through the official ckBTC minter.",
  "version": "1.3.0",
  "network": "ic",
  "api_host": "https://icp-api.io",
  "human_ui": "https://hbxmr-wyaaa-aaaap-an3ia-cai.icp.net/",
  "canisters": {
    "backend": "f4kcz-fqaaa-aaaap-an3hq-cai",
    "frontend": "hbxmr-wyaaa-aaaap-an3ia-cai",
    "icp_ledger": "ryjl3-tyaaa-aaaaa-aaaba-cai",
    "ckbtc_ledger": "mxzaz-hqaaa-aaaar-qaada-cai",
    "ckbtc_minter": "mqygn-kiaaa-aaaar-qaadq-cai"
  },
  "documentation": {
    "llms_txt": "https://hbxmr-wyaaa-aaaap-an3ia-cai.icp.net/llms.txt",
    "agent_guide": "https://hbxmr-wyaaa-aaaap-an3ia-cai.icp.net/agent-guide.md",
    "api": "https://hbxmr-wyaaa-aaaap-an3ia-cai.icp.net/api.md",
    "security": "https://hbxmr-wyaaa-aaaap-an3ia-cai.icp.net/security.md",
    "candid": "https://hbxmr-wyaaa-aaaap-an3ia-cai.icp.net/canister-api.did",
    "source": "https://github.com/dickhery/IC-SOL-Wallet"
  },
  "authentication": {
    "preferred": "internet_identity",
    "identity_provider": "https://id.ai/authorize",
    "canonical_derivation_origin": "https://hbxmr-wyaaa-aaaap-an3ia-cai.icp.net",
    "frontend_origins": [
      "https://hbxmr-wyaaa-aaaap-an3ia-cai.icp.net",
      "https://hbxmr-wyaaa-aaaap-an3ia-cai.icp0.io"
    ],
    "mcp": {
      "production_endpoint": "https://mcp.internetcomputer.org/mcp",
      "setup_page": "https://mcp.beta.id.ai/",
      "beta_endpoint": "https://mcp.beta.id.ai/mcp-beta"
    },
    "phantom_required": false,
    "required_identity_check": [
      "resolve_app",
      "list_app_accounts",
      "get_app_principal",
      "whoami",
      "get_account_manifest_ii"
    ],
    "identity_invariant": "connector app principal == whoami == manifest.identity_principal"
  },
  "permissions": {
    "full_wallet_use": "Actions and questions",
    "questions_only_limit": "Only query methods and published documentation; account discovery, live balances, minting, and transfers require update-call permission."
  },
  "canonical_methods": {
    "identity_and_accounts": {
      "whoami": "query",
      "get_account_manifest_ii": "update",
      "get_linked_sol_pubkey": "query"
    },
    "recipient_and_intents": {
      "verify_recipient": "query",
      "prepare_transfer_ii": "update",
      "get_pending_transfer_ii": "query",
      "cancel_transfer_ii": "update",
      "confirm_transfer_ii": "update"
    },
    "balances_and_quotes": {
      "get_balance_ii": "update",
      "get_sol_balance_ii": "update",
      "get_doge_balance_details_ii": "update",
      "quote_doge_transfer_ii": "update",
      "get_ckbtc_balance_ii": "update",
      "get_nonce_ii": "update"
    },
    "btc_ckbtc": {
      "get_btc_deposit_address_ii": "update",
      "get_ckbtc_account_ii": "update",
      "mint_ckbtc_from_btc_ii": "update"
    }
  },
  "retired_direct_methods": [
    "transfer_ii",
    "transfer_sol_ii",
    "transfer_doge_ii",
    "transfer_ckbtc_ii",
    "withdraw_ckbtc_to_btc_ii"
  ],
  "transfer_protocol": [
    "ICP_SOL_DOGE_only",
    "verify_recipient",
    "prepare_transfer_ii",
    "show_every_intent_field",
    "obtain_explicit_user_confirmation_code",
    "confirm_transfer_ii_once"
  ],
  "principal_owned_ckbtc_protocol": [
    "verify_recipient",
    "show_full_normalized_destination_and_fingerprint",
    "obtain_explicit_user_approval",
    "call_official_ckbtc_ledger_as_selected_ii_principal_with_null_subaccount",
    "for_BTC_withdrawal_approve_official_minter_then_call_retrieve_btc_with_approval",
    "never_automatically_retry_unknown_results"
  ],
  "units": {
    "ICP": { "unit": "e8s", "decimals": 8 },
    "SOL": { "unit": "lamports", "decimals": 9 },
    "DOGE": { "unit": "koinu", "decimals": 8 },
    "CKBTC": { "unit": "satoshis", "decimals": 8 },
    "BTC": { "unit": "satoshis", "decimals": 8 }
  },
  "known_fees_and_limits": {
    "icp_ledger_fee_e8s": 10000,
    "ckbtc_ledger_fee_sats": 10,
    "ckbtc_minimum_withdrawal_sats": 50000,
    "note": "Treat these as current conventions; use prepared intent or live ledger/minter responses when they differ."
  },
  "btc_ckbtc_workflows": {
    "native_btc_deposit": [
      "read manifest.btc.address",
      "user sends BTC externally",
      "wait for the Bitcoin transaction to appear",
      "obtain explicit approval",
      "call mint_ckbtc_from_btc_ii once",
      "report pending sats and confirmations, or call get_ckbtc_balance_ii when the result begins Minted"
    ],
    "existing_ckbtc_deposit": [
      "read manifest.ckbtc.address (the II principal default account)",
      "send ckBTC on the ICRC ledger",
      "call get_ckbtc_balance_ii"
    ],
    "send_ckbtc": [
      "verify the principal or canonical ICRC destination",
      "obtain explicit approval",
      "call official ledger icrc1_transfer as the selected II principal with from_subaccount null"
    ],
    "withdraw_to_btc": [
      "verify Bitcoin mainnet address and require at least 50000 sats",
      "obtain explicit approval",
      "approve the official minter from the selected II principal default account",
      "call retrieve_btc_with_approval on the official minter with from_subaccount null"
    ]
  },
  "cycle_policy": {
    "manifest_calls_per_session": 1,
    "minimum_poll_interval_seconds": 30,
    "never_poll_btc_minter_check": true,
    "no_speculative_minting": true,
    "no_automatic_value_retry": true
  }
}
