# BSCJS > BSCJS on BNB Smart Chain mainnet (chainId 56). Public, keyless, read-only transaction preparation for minting with USDT or BNB. The service never signs or broadcasts transactions. ## Mint integration - [Mint instructions](https://xixi.heyue.app/ai/mint.md): Required workflow, budgets, approval handling, wallet confirmation and receipt checks. - [Project discovery](https://xixi.heyue.app/.well-known/bscjs.json): Canonical contract addresses and integration endpoints. - [OpenAPI](https://xixi.heyue.app/ai/openapi.json): Project status and prepare-transaction API. No API key required. - [Live project](https://xixi.heyue.app/api/mint/project): Current project configuration and on-chain readiness. - [Mint ABI](https://xixi.heyue.app/downloads/bscjs-mint-abi.json): Public ABI for independent verification and receipt decoding. ## Execution rules Use the user's actual connected wallet on chain 56. Prepare with the user's requested shares (integer 1-10), payment asset, optional referrer and explicit spending limits. If the user has not specified a spending amount, show the live quote for wallet confirmation; never invent or increase a budget. Do not transfer USDT or BNB directly to the token or Mint contract. For USDT payment use maxUsdt only. For BNB payment use maxBnb only; the deployed BNB entry cannot enforce a USDT-denominated cost ceiling. Mixing a budget with the other payment asset returns INVALID_BUDGET. If the user requires a strict USDT ceiling, use USDT payment. Call GET /api/mint/prepare before each transaction. Submit only its reviewed transaction through the user's wallet. If action is approve, wait for a successful confirmed receipt, call prepare again with the same intent and spending limits, and use the new mint transaction. Never reuse old calldata after approval, a quote change or expiry. Stop on blocked or error results. A preparation response is not a successful mint and does not grant authority to sign or send funds. Every prepared transaction is bound to the returned nonce. Before signing, verify the wallet's latest and pending transaction counts both equal that nonce. PENDING_TRANSACTION or NONCE_CHANGED means stop and resolve existing transactions before preparing again. Never replace a nonce or resend an intent blindly; an already signed transaction may only be rebroadcast unchanged while its outcome is being checked. If oracleReady is false, read recovery separately. recovery.transactionTemplate is an unsimulated maintenance template, not a Mint transaction and not permission to broadcast it. Maintenance requires a separately reviewed wallet confirmation. A stale observation may require updateOracle, waiting the returned twapWindow, then another update. Reread readiness and prepare again afterward; an update does not guarantee all oracle checks pass. The project does not claim native integration with any particular AI assistant. The executing assistant must support HTTPS fetching, EVM wallet transactions and receipt verification.