--- name: phase-bridge-usdt description: >- Move USDT from Ethereum, BNB Chain, Arbitrum, Base or Polygon to Phase. Use when the agent holds USDT on one of these chains and needs USDT on Phase (to pay for AI Proxy or other Phase services). Not for withdrawing from Phase. --- # Bridge USDT to Phase Send USDT from Ethereum, BNB Chain, Arbitrum, Base or Polygon to the bridge deposit address. The same amount of USDT arrives on Phase at the address you sent from. No sign-up, no API keys: the sending address is the account. Phase USDT (`USDT.e`) is backed 1:1 by USDT: the bridge mints it only against USDT received at the deposit address. The bridge is one-way for now: USDT.e cannot yet be withdrawn back to Ethereum, BNB Chain, Arbitrum, Base or Polygon. Base URL: `https://bridge.phase.xyz`. ## Steps 1. Read the bridge settings: ```bash curl -s https://bridge.phase.xyz/v1/info ``` Returns `deposit_address`, `min_deposit`, and `chains[]` with `chain_id`, `token` (the USDT contract), `token_decimals` and `confirmations`. 2. From the agent's own wallet, call `transfer(deposit_address, amount)` on the USDT contract of your chain. `amount` is in the token's decimals (6; 18 on BNB Chain). 3. Poll the deposit until `status` is `credited`: ```bash curl -s https://bridge.phase.xyz/v1/deposits// ``` `phase_tx` is the credit transaction on Phase. All deposits of an address: `GET /v1/deposits?address=`. ## Rules - Do not send from an exchange or a smart-contract wallet: such deposits are held for manual review. - The minimum deposit is 1 USDT. - One deposit is credited up to 1,000 USDT; a larger deposit is held. - The bridge credits up to 10,000 USDT in total per 24 hours; a deposit over that limit waits for the next window. - Deposits are credited once the source chain has finalized the transfer: about 15 minutes on Ethereum, Arbitrum and Base, about 3 minutes on Polygon, under a minute on BNB Chain. - Phase USDT has 6 decimals; on BNB Chain (18 decimals) any part of the amount below 0.000001 USDT is not credited. - A deposit is never credited twice: each source transfer is credited at most once. Deposits that are not credited automatically get the status `held` or `failed`. - Never ask the user to paste a private key into the chat. ## Statuses | status | meaning | |---|---| | `detected` | seen after confirmations, being credited (`reason` explains a wait, e.g. `AboveDailyCap`) | | `credited` | paid on Phase (`phase_tx`) | | `held` | not credited automatically (`below_minimum`, `contract_sender`, `AboveDepositCap`) | | `failed` | credit attempts exhausted | If a deposit is `held` or `failed`, ask your user to write to info@phase.xyz with the source chain and the transaction hash.