---
name: tide
description: Use tide (tide.ad) to answer questions about Sui mainnet data - what a transaction did, what a wallet holds or did, who funded an address, a coin's price, holders and safety, past balances, money flows, and SQL over full history - and to act - find yield, then get unsigned transactions (stake, liquid staking, lending supply and withdraw, swaps) already dry-run and checked for the agent's own wallet to sign. Use it whenever a task needs real Sui chain data or a safe transaction to sign, instead of raw node RPC.
---

# tide: Sui data for agents

tide indexes Sui mainnet from genesis and answers in plain English. Reach for it when a task needs:

- what a transaction did (you have a digest)
- what a wallet holds, its positions, who funded it, what it did (you have an address or a name.sui)
- a coin's price, market cap, holders, safety or creator record (you have a coin type or a symbol)
- a balance at a past time, a wallet's full history, or where money went
- a check of an unsigned transaction before signing it (safe, caution or danger)
- where to earn yield, and the unsigned transaction to do it, already checked
- anything else over all of Sui history, with SQL

tide never signs or sends transactions and never holds keys. It builds unsigned transactions; your own wallet signs them.

## Connect

MCP (preferred): `https://api.tide.ad/mcp`, Streamable HTTP. No key needed to start.

```sh
claude mcp add --transport http tide https://api.tide.ad/mcp
```

With a key (more volume, and `sql`): add the header `Authorization: Bearer YOUR_API_KEY`. Free keys: https://tide.ad/developers/keys. An agent can get its own key by signing one message with any Sui key: `POST https://api.tide.ad/v0/auth/nonce`, then `POST https://api.tide.ad/v0/keys/agent`. Reuse that key: one IP can make 3 new free accounts a day, Free accounts on one network share 7.5M credits a month, and an address with no on-chain history gets 1,000 credits a day until it makes a transaction or tops up.

## Which tool

| Question | Tool |
|---|---|
| What happened in this transaction? | `explain_transaction { digest }` |
| Who is this wallet, what does it hold? | `wallet_profile { address }` |
| What did this wallet do? | `wallet_history { address, limit, cursor, coin, direction, from, to }` |
| How much X did it hold on date D? | `balance_at { address, coin, time }` (leave out coin for all coins) |
| Is this coin safe? Who holds it? | `token_info { coin }` |
| Where did the money come from or go? | `trace_funds { address, direction: in or out or both, depth }` |
| I only have a name or a ticker | `search { query }` |
| Is this unsigned transaction safe to sign? | `explain_unsigned { tx_bytes, sender }` (block on danger) |
| Where can I earn yield? | `yield_options { asset, max_tier, sort }` |
| Plan an amount, and build it | `yield_plan { amount_usd, asset, target_apy, max_risk_tier, build: true, sender }` |
| Build one transaction to sign | `build_transaction { sender, action, ... }` (stake, unstake, lst_mint, lst_redeem, supply, withdraw, swap) |
| Exit positions | `withdraw_plan { wallet, exit: "all", to }` |
| What are AI agents doing on Sui now? | `agents_overview {}` (agent wallets, Agent Passes, allowance spend, Agent Payments, live feed, most active agents) |
| Is this address an agent? Who does it act for, under what limits? | `agent_wallet { address }` |
| Which agents does this address run, and how much of each limit is used? | `owner_agents { address }` |
| Prices | `price { coins: ["SUI", "DEEP"] }` |
| A perps market: price, funding, open interest | `perp_market { market: "BTC", venue: "aftermath" }` |
| Anything else over history | `sql { query }` (key only; tables at https://api.tide.ad/v1/sql/schema) |
| Objects, packages, events, checkpoints, NFTs, staking, order books | `get_object`, `package_info`, `events`, `checkpoint`, `nfts`, `staking`, `order_book` |
| What is this Walrus blob, is it still stored? | `walrus_blob { id }` (blob id, quilt patch id or Blob object id; REST `GET /v1/walrus/blob/:id`) |
| Not sure which method | `docs { question }` |

Addresses accept `0x...`, `name.sui` or `@name`. Coins accept a coin type (`0x2::sui::SUI`) or a symbol (`DEEP`).

## Acting: options, plan, build, check, sign

Worked example, "$5k at about 6%, low risk":

1. `yield_options { asset: "USDC", max_tier: 2, sort: "apy" }`: realized APY (what each option actually paid), exit liquidity, risk tier 1 to 5 with reasons.
2. `yield_plan { amount_usd: 5000, asset: "USDC", target_apy: 6, max_risk_tier: 2, build: true, sender: "0xYOUR_WALLET" }`: the ranked menu, plus `built[0]` with `tx_bytes`, a plain `description`, `spends`, `receives`, `gas` and `check` (the pre-sign verdict on those exact bytes). If the wallet holds SUI, pass `asset: "SUI"`: the one transaction swaps to USDC (0.5% slippage, enforced on chain) and supplies it.
3. Or build one action: `build_transaction { sender, action: "supply", protocol: "navi", asset: "USDC", amount: 5000 }`. Several actions in one transaction: `steps: [{ action: "swap", from: "SUI", to: "USDC", amount: 100 }, { action: "supply", protocol: "navi", asset: "USDC" }]` (a step without amount takes the previous output).
4. Read `verdict` and `check.findings`. No bytes come back when the dry run fails (`would_fail`) or the check says danger (`unsafe`). Caution still returns bytes: read the findings first.
5. Your own wallet signs `tx_bytes` and submits it. If time has passed, run `explain_unsigned { tx_bytes }` again first, or build again.
6. Confirm it landed: `explain_transaction { digest }` with the digest the submit returned. It shows the status, what moved and the fee; compare with the build's `spends` and `receives`. Not found yet: wait a second and ask again.

Amounts are whole coins (1.5 USDC); tide resolves decimals. Gas coins and quotes are current when built.

## Reading results

- Every result has `summary` (quote it), compact facts, and `link` (the tide.ad page; share it).
- Amounts are whole coins (SUI, not MIST) unless a field ends in `Raw`. USD values carry their price time.
- Lists are capped. Pass `cursor` back for the next page.
- `missing` names parts that were slow; call again for them.
- Errors are one line that says what to do: fix an argument, wait N seconds, narrow the range, or add a key.
- Every result ends with `asOf { checkpoint, time, fresh }`: what the answer reflects. Chain data is live (about 1 s behind), prices at most 5 s old, candles 30 s, the yield map is rebuilt every 10 minutes, builds and checks dry-run on the latest state.

## What it covers

- Sui mainnet only, with history since genesis.
- Builds: native staking, liquid staking (afSUI, haSUI, vSUI, sSUI, stSUI), Suilend, NAVI and Scallop supply and withdraw, swaps through the Aftermath router.
- Not built yet: liquidity positions and vault deposits (listed in `yield_options`, entered in the protocol's app).

## Paying

When credits run out, or a keyless call hits its daily limit, the API returns HTTP 402 with the offers. Credits cost $3 per million, paid in native USDC on Sui mainnet; prepaid credits never expire.

- No account: pay an offer in the 402 ($0.01, $1 or $10) with a gasless x402 transaction, retry with the `PAYMENT-SIGNATURE` header, and keep the `X-Tide-Api-Key` from the answer. It is derived from the payer address, so use it as `Authorization: Bearer` for later calls. `GET /v1/billing/offers` lists the offers.
- With a key: `billing_status` shows credits and `billing_topup { usd }` returns unsigned `tx_bytes` to sign and send. Over REST: `POST /v1/billing/topup`, then `POST /v1/billing/topup/submit`.

Details: https://tide.ad/docs/plans#pay-with-usdc

## Without MCP

The same data over REST and JSON-RPC at `https://api.tide.ad`:

```sh
curl "https://api.tide.ad/v1/wallet/example.sui/balances"
curl -X POST https://api.tide.ad/v1/tx/build -H 'content-type: application/json' \
  -d '{"sender":"0xYOUR_WALLET","action":"swap","from":"SUI","to":"USDC","amount":5}'
curl -X POST https://api.tide.ad/ -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"getTransaction","params":{"digest":"DdfuBiVPRZ8VCKfGs8ZgGYXUTXecfbRNx9g6rJjwwA75"}}'
```

Method index: https://api.tide.ad/llms.txt. Full reference: https://api.tide.ad/llms-full.txt. Docs: https://tide.ad/docs/mcp.
