{
  "service": "nuri-wallet-connector",
  "product_name": "Nuri Wallet Connector",
  "status": "live",
  "base_url": "https://connect.nuri.com",
  "mcp_url": "https://connect.nuri.com/mcp",
  "important_limit": "MCP tools call the live Nuri Arkade backend. No fake wallet approval is exposed.",
  "tools": [
    {
      "name": "wallet_provider_info",
      "status": "live",
      "mcp": true,
      "description": "Describe the open MCP, live Arkade tools, and bridge-browser passkey-PRF wallet-link flow."
    },
    {
      "name": "wallet_create_start",
      "status": "live_passkey_required",
      "mcp": true,
      "description": "Create a Nuri Expo-compatible wallet, register its credential public key with Arkade, and publish its encrypted Nostr recovery record."
    },
    {
      "name": "wallet_create_result",
      "status": "live",
      "mcp": true,
      "description": "Poll a wallet Create session."
    },
    {
      "name": "wallet_sign_start",
      "status": "live_passkey_required",
      "mcp": true,
      "description": "Create a typed passkey signing approval URL for Ethereum, Nostr, or encrypted Nuri address book access."
    },
    {
      "name": "wallet_sign_result",
      "status": "live",
      "mcp": true,
      "description": "Poll a typed wallet signing session and return the verified public result."
    },
    {
      "name": "wallet_backup_start",
      "status": "live_passkey_required_privy_app",
      "mcp": true,
      "method": "POST",
      "path": "/api/wallet_backup_start",
      "description": "Opt-in import of the existing PRF-derived EVM key into the user's own Privy wallet as a second signing/recovery path. The EOA does not change.",
      "input_schema": {
        "type": "object",
        "required": [
          "expected_eoa"
        ],
        "properties": {
          "expected_eoa": {
            "type": "string"
          },
          "privy_user_id": {
            "type": "string"
          },
          "cred_id_b64u": {
            "type": "string"
          },
          "return_url": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "wallet_backup_result",
      "status": "live",
      "mcp": true,
      "method": "POST",
      "path": "/api/wallet_backup_result",
      "description": "Poll a wallet backup session and return the backup status and public wallet tuple.",
      "input_schema": {
        "type": "object",
        "required": [
          "session_id"
        ],
        "properties": {
          "session_id": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "wallet_connect_sign_start",
      "status": "requires_monerium_siwe_endpoint",
      "mcp": true,
      "description": "Derive one EOA; sign all exact Monerium SIWE messages with one passkey prompt."
    },
    {
      "name": "wallet_connect_sign_result",
      "status": "requires_monerium_siwe_endpoint",
      "mcp": true,
      "description": "Return the verified EOA plus all SIWE signatures from combined login."
    },
    {
      "name": "wallet_link_start",
      "status": "live_passkey_required",
      "mcp": true,
      "description": "One-time identify/link flow for callers that do not yet know the wallet EOA; known users should go directly to typed Sign."
    },
    {
      "name": "wallet_connect_start",
      "status": "live_passkey_required",
      "mcp": true,
      "description": "Product alias for the one-time wallet_link_start identify flow."
    },
    {
      "name": "wallet_link_result",
      "status": "live",
      "mcp": true,
      "description": "Poll a wallet-link session until the user approves it with a Nuri passkey."
    },
    {
      "name": "wallet_connect_result",
      "status": "live",
      "mcp": true,
      "description": "Product alias for wallet_link_result."
    },
    {
      "name": "arkade_balance",
      "status": "live",
      "mcp": true,
      "description": "Read an existing Nuri wallet's Bitcoin balance: spendable, preconfirmed and onchain boarding sats. No passkey."
    },
    {
      "name": "arkade_transactions",
      "status": "live",
      "mcp": true,
      "description": "List the Bitcoin amounts that arrived in an existing Nuri wallet, newest first, with their status. No passkey."
    },
    {
      "name": "arkade_info",
      "status": "live",
      "mcp": true,
      "method": "POST",
      "path": "/api/arkade/info",
      "description": "Fetch the live Nuri Arkade co-signer pubkey and recovery policy for a compressed client public key.",
      "input_schema": {
        "type": "object",
        "required": [
          "client_public_key_33_hex"
        ],
        "properties": {
          "client_public_key_33_hex": {
            "type": "string",
            "description": "Compressed secp256k1 public key, 33 bytes hex."
          },
          "cred_id_b64u": {
            "type": "string",
            "description": "Optional existing Nuri passkey credential id."
          }
        }
      }
    },
    {
      "name": "arkade_receive_invoice",
      "status": "live_requires_wallet_tuple",
      "mcp": true,
      "method": "POST",
      "path": "/api/arkade/receive/invoice",
      "description": "Create a real Lightning receive invoice for an existing Nuri Arkade wallet.",
      "input_schema": {
        "type": "object",
        "required": [
          "cred_id_b64u",
          "client_public_key_33_hex",
          "amount_sats"
        ],
        "properties": {
          "cred_id_b64u": {
            "type": "string"
          },
          "client_public_key_33_hex": {
            "type": "string"
          },
          "amount_sats": {
            "type": "number"
          },
          "memo": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "arkade_receive_sync",
      "status": "live_requires_wallet_tuple",
      "mcp": true,
      "method": "POST",
      "path": "/api/arkade/receive/sync",
      "description": "Poll receive state for an existing Nuri Arkade wallet.",
      "input_schema": {
        "type": "object",
        "required": [
          "cred_id_b64u",
          "client_public_key_33_hex"
        ],
        "properties": {
          "cred_id_b64u": {
            "type": "string"
          },
          "client_public_key_33_hex": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "lightning_receive_invoice",
      "status": "live_requires_wallet_tuple",
      "mcp": true,
      "method": "POST",
      "path": "/api/arkade/receive/invoice",
      "description": "Product alias for arkade_receive_invoice.",
      "input_schema": {
        "type": "object",
        "required": [
          "cred_id_b64u",
          "client_public_key_33_hex",
          "amount_sats"
        ],
        "properties": {
          "cred_id_b64u": {
            "type": "string"
          },
          "client_public_key_33_hex": {
            "type": "string"
          },
          "amount_sats": {
            "type": "number"
          },
          "memo": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "lightning_receive_sync",
      "status": "live_requires_wallet_tuple",
      "mcp": true,
      "method": "POST",
      "path": "/api/arkade/receive/sync",
      "description": "Product alias for arkade_receive_sync.",
      "input_schema": {
        "type": "object",
        "required": [
          "cred_id_b64u",
          "client_public_key_33_hex"
        ],
        "properties": {
          "cred_id_b64u": {
            "type": "string"
          },
          "client_public_key_33_hex": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "wallet_send_prepare",
      "status": "live_requires_wallet_tuple_and_send_package",
      "mcp": true,
      "method": "POST",
      "path": "/api/arkade/send/prepare",
      "description": "Prepare a real Arkade v5 direct-send challenge for a passkey-bound browser cosign.",
      "input_schema": {
        "type": "object",
        "required": [
          "cred_id_b64u",
          "client_public_key_33_hex",
          "send_intent_id",
          "psbt_b64"
        ],
        "properties": {
          "cred_id_b64u": {
            "type": "string"
          },
          "client_public_key_33_hex": {
            "type": "string"
          },
          "send_intent_id": {
            "type": "string"
          },
          "psbt_b64": {
            "type": "string"
          },
          "approval_summary": {
            "type": "object"
          }
        }
      }
    },
    {
      "name": "wallet_send_cosign",
      "status": "live_requires_bridge_assertion",
      "mcp": true,
      "method": "POST",
      "path": "/api/arkade/send/cosign",
      "description": "Submit bridge-browser WebAuthn/PRF assertion fields and MuSig nonce requests to the live Arkade v5 co-signer.",
      "input_schema": {
        "type": "object",
        "required": [
          "challenge_token",
          "cred_id_b64u",
          "client_public_key_33_hex",
          "send_intent_id",
          "psbt_b64",
          "client_data_b64u",
          "auth_data_b64u",
          "sig_b64u",
          "cosign_requests"
        ],
        "properties": {
          "challenge_token": {
            "type": "string"
          },
          "cred_id_b64u": {
            "type": "string"
          },
          "client_public_key_33_hex": {
            "type": "string"
          },
          "send_intent_id": {
            "type": "string"
          },
          "psbt_b64": {
            "type": "string"
          },
          "client_data_b64u": {
            "type": "string"
          },
          "auth_data_b64u": {
            "type": "string"
          },
          "sig_b64u": {
            "type": "string"
          },
          "cosign_requests": {
            "type": "array"
          }
        }
      }
    },
    {
      "name": "wallet_send_complete",
      "status": "live",
      "mcp": true,
      "method": "POST",
      "path": "/api/arkade/send/complete",
      "description": "Complete live Arkade v5 send bookkeeping after funding transaction submission.",
      "input_schema": {
        "type": "object",
        "required": [
          "challenge_token",
          "send_intent_id"
        ],
        "properties": {
          "challenge_token": {
            "type": "string"
          },
          "send_intent_id": {
            "type": "string"
          },
          "txid": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "ethereum_safe_create",
      "status": "live_prepare_relayer_required_for_deploy",
      "mcp": true,
      "method": "POST",
      "path": "/api/ethereum/safe/create",
      "description": "Prepare a deterministic clean 2/2 Safe from a passkey-linked user EOA and the configured Nuri server owner; optionally deploy via the configured relayer/paymaster.",
      "input_schema": {
        "type": "object",
        "properties": {
          "session_id": {
            "type": "string"
          },
          "user_eoa": {
            "type": "string"
          },
          "cred_id_b64u": {
            "type": "string"
          },
          "deploy": {
            "type": "boolean"
          },
          "wait_for_receipt": {
            "type": "boolean"
          }
        }
      }
    }
  ]
}