> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bungee.exchange/llms.txt
> Use this file to discover all available pages before exploring further.

> Use when the user wants to fund a Tempo wallet, bridge tokens to Tempo, top up Tempo, move assets to Tempo, or exit to Tempo from any EVM chain. Also matches: migrate to Tempo, transfer to Tempo, deposit to Tempo.

# SKILL

# fund-tempo

Bridge tokens from any EVM chain to a Tempo wallet. All tokens arrive as USDC.E on Tempo. Powered by Bungee.

Tempo chain ID is `4217`. USDC.E on Tempo is `0x20c000000000000000000000b9537d11c60e8b50`.

## Step 1: Get the Tempo wallet address

Run this to get the user's Tempo wallet address:

```
tempo wallet whoami
```

Use the returned address as `receiverAddress` in the quote request. This is the address that will receive USDC.E on Tempo.

## Step 2: Check what the user has

Ask the user for their wallet address on the origin chain, then check their balances:

```
GET https://public-backend.bungee.exchange/api/v1/tokens/list?userAddress=0xUSER_ADDRESS
```

This returns all tokens with balances across all chains. Use this to confirm what the user has and on which chain.

## Step 3: Get a deposit quote

```
GET https://public-backend.bungee.exchange/api/v1/bungee/quote?originChainId=ORIGIN_CHAIN&destinationChainId=4217&inputAmount=AMOUNT&inputToken=INPUT_TOKEN&outputToken=0x20c000000000000000000000b9537d11c60e8b50&receiverAddress=TEMPO_ADDRESS&refundAddress=USER_ADDRESS&enableDepositAddress=true
```

* `originChainId`: the chain the user's tokens are on
* `inputToken`: the token address on that chain
* `outputToken`: always `0x20c000000000000000000000b9537d11c60e8b50` (USDC.E on Tempo)
* `inputAmount`: amount in the token's smallest unit (e.g. 6 decimals for USDC, so `100000000` = 100 USDC)
* `receiverAddress`: the user's Tempo wallet address
* `refundAddress`: the user's address on the origin chain
* `enableDepositAddress`: always `true`

**Common USDC examples:**

* 100 USDC from Base: `originChainId=8453&inputToken=0x833589fcd6edb6e08f4c7c32d4f71b54bda02913&inputAmount=100000000`
* 100 USDC from Arbitrum: `originChainId=42161&inputToken=0xaf88d065e77c8cc2239327c5edb3a432268e5831&inputAmount=100000000`
* 100 USDC from Ethereum: `originChainId=1&inputToken=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48&inputAmount=100000000`
* 100 USDC from Optimism: `originChainId=10&inputToken=0x0b2c639c533813f4aa9d7837caf62653d097ff85&inputAmount=100000000`
* 100 USDC from Polygon: `originChainId=137&inputToken=0x3c499c542cef5e3811e1192ce70d8cc03d5c3359&inputAmount=100000000`

## Step 4: Present deposit instructions

From the response, present clearly to the user:

* **Amount**: convert `deposit.depositData.amount` to human-readable using `result.input.token.decimals`
* **Token**: `result.input.token.symbol`
* **Send to**: `deposit.depositData.address`
* **On chain**: `deposit.depositData.chainId`
* **You will receive**: `deposit.output.effectiveAmount` converted with `deposit.output.token.decimals` USDC.E on Tempo
* **Estimated time**: `deposit.estimatedTime` seconds
* **Track**: `https://socketscan.io/tx/{deposit.requestHash}`

If the agent has wallet access, submit `deposit.txData` as a transaction instead.

## Step 5: Track status

```
GET https://public-backend.bungee.exchange/api/v1/bungee/status?requestHash=REQUEST_HASH
```

Status `3` or `4` = completed. Status `5`, `6`, or `7` = failed. Poll every 10 seconds.

## Notes

* Always use `enableDepositAddress=true`.
* `refundAddress` is required. Use the user's address on the origin chain.
* Amounts are in smallest units (6 decimals for USDC: 1 USDC = 1000000).
* Tempo has no native gas token. Gas fees are paid in the user's chosen fee token.
