Sui blockchain data in plain English: transactions, wallets, coins, balances, fund flows and SQL.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Bearer YOUR_API_KEY for higher limits and SQL. Free keys at https://tide.ad/developers/keys. Works without it at the keyless tier.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Tell what an address is: a plain key (ed25519, secp256k1, secp256r1), a passkey, a zkLogin address (with its provider), a multisig (members and threshold), an object, a package, or an address that never signed. Example: { address: "0x..." }.
A Sui address (0x...), a SuiNS name like example.sui, or @example.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http mcp https://api.tide.ad/mcp
Headers
Authorization (optional, not in the config above): Optional. Bearer YOUR_API_KEY for higher limits and SQL. Free keys at https://tide.ad/developers/keys. Works without it at the keyless tier.Tell what an address is: a plain key (ed25519, secp256k1, secp256r1), a passkey, a zkLogin address (with its provider), a multisig (members and threshold), an object, a package, or an address that never signed. Example: { address: "0x..." }.
| Argument | Type | Description |
|---|---|---|
| address* | string | A Sui address (0x...), a SuiNS name like example.sui, or @example. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "A Sui address (0x...), a SuiNS name like example.sui, or @example."
}
},
"additionalProperties": false
}The exact balance a wallet held at a past time or checkpoint, read from full history. With coin, that coin's balance and the transaction that last changed it. Without coin, every coin it held then, valued at that time's prices. Example: { address: "example.sui", coin: "SUI", time: "2025-06-01T00:00:00Z" }.
| Argument | Type | Description |
|---|---|---|
| coin | string | Coin type or symbol. Leave it out for all coins. |
| time | string | integer | A past time: ISO 8601 like 2025-06-01T00:00:00Z (UTC), or unix seconds. |
| address* | string | A Sui address (0x...), a SuiNS name like example.sui, or @example. |
| checkpoint | integer | A checkpoint sequence number, instead of time. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"coin": {
"type": "string",
"description": "Coin type or symbol. Leave it out for all coins."
},
"time": {
"type": [
"string",
"integer"
],
"description": "A past time: ISO 8601 like 2025-06-01T00:00:00Z (UTC), or unix seconds."
},
"address": {
"type": "string",
"description": "A Sui address (0x...), a SuiNS name like example.sui, or @example."
},
"checkpoint": {
"type": "integer",
"minimum": 0,
"description": "A checkpoint sequence number, instead of time."
}
},
"additionalProperties": false
}OHLCV price candles for a coin, in USD. Pick interval and an optional from and to. Example: { coin: "SUI", interval: "1h" }.
| Argument | Type | Description |
|---|---|---|
| to | string | End time. |
| coin* | string | A coin type like 0x2::sui::SUI, or a symbol like DEEP (verified coins win ties). |
| from | string | Start time, ISO 8601 or unix seconds. |
| interval | string | Candle size: 1m, 5m, 15m, 1h, 4h or 1d. Default 1h. |
{
"type": "object",
"required": [
"coin"
],
"properties": {
"to": {
"type": "string",
"description": "End time."
},
"coin": {
"type": "string",
"description": "A coin type like 0x2::sui::SUI, or a symbol like DEEP (verified coins win ties)."
},
"from": {
"type": "string",
"description": "Start time, ISO 8601 or unix seconds."
},
"interval": {
"type": "string",
"description": "Candle size: 1m, 5m, 15m, 1h, 4h or 1d. Default 1h."
}
},
"additionalProperties": false
}One checkpoint by sequence number, or the newest with seq "latest": time, epoch, gas totals and its transactions as one-line sentences. Use it to see what is happening on chain right now. Example: { seq: "latest" }.
| Argument | Type | Description |
|---|---|---|
| seq | string | Checkpoint sequence number, or latest. |
{
"type": "object",
"properties": {
"seq": {
"type": "string",
"description": "Checkpoint sequence number, or latest."
}
},
"additionalProperties": false
}Search the tide API docs for the method that answers a question, with its parameters, credits and a curl example. Use it when no other tool fits; then call the method over REST at https://api.tide.ad. Example: { question: "transfers of a coin between two times" }.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Matches, 1 to 8. Default 3. |
| question* | string | What you want to do, in plain words. |
{
"type": "object",
"required": [
"question"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 8,
"minimum": 1,
"description": "Matches, 1 to 8. Default 3."
},
"question": {
"type": "string",
"description": "What you want to do, in plain words."
}
},
"additionalProperties": false
}List on-chain events by Move event type or by package, newest first, with an optional time or checkpoint range. Page with cursor. Example: { type: "0x...::pool::SwapEvent", limit: 10 }.
| Argument | Type | Description |
|---|---|---|
| type | string | Full Move event type. |
| limit | integer | Rows per page, up to 50. Default 10. |
| cursor | string | The cursor from the previous result, for the next page. |
| toTime | string | End time, ISO 8601. |
| package | string | Package id, instead of type. |
| fromTime | string | Start time, ISO 8601. |
{
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Full Move event type."
},
"limit": {
"type": "integer",
"description": "Rows per page, up to 50. Default 10."
},
"cursor": {
"type": "string",
"description": "The cursor from the previous result, for the next page."
},
"toTime": {
"type": "string",
"description": "End time, ISO 8601."
},
"package": {
"type": "string",
"description": "Package id, instead of type."
},
"fromTime": {
"type": "string",
"description": "Start time, ISO 8601."
}
},
"additionalProperties": false
}Explain one Sui transaction in plain English: what happened, the steps, who gained or lost which coins (with USD), the fee and the status. Use it whenever you have a transaction digest. Example: { digest: "5ajkuHAnivMiKRne6EYS2bzvHpCHWYx849cmoSHN89Vm" }.
| Argument | Type | Description |
|---|---|---|
| digest* | string | Transaction digest, base58 (43 or 44 characters). |
{
"type": "object",
"required": [
"digest"
],
"properties": {
"digest": {
"type": "string",
"description": "Transaction digest, base58 (43 or 44 characters)."
}
},
"additionalProperties": false
}Check a Sui transaction before signing it: tide simulates it, explains what it would do in plain words, and checks every recipient, coin and package against full history. Returns safe, caution or danger with findings and evidence links. Block on danger. Pass tx_bytes (base64 TransactionData, or TransactionKind bytes with sender). Example: { tx_bytes: "AAAC..." }.
| Argument | Type | Description |
|---|---|---|
| sender | string | The signer. Required with TransactionKind bytes; with TransactionData it runs the check as this address. |
| tx_bytes* | string | The unsigned transaction as base64: TransactionData, or TransactionKind bytes with sender. |
{
"type": "object",
"required": [
"tx_bytes"
],
"properties": {
"sender": {
"type": "string",
"description": "The signer. Required with TransactionKind bytes; with TransactionData it runs the check as this address."
},
"tx_bytes": {
"type": "string",
"description": "The unsigned transaction as base64: TransactionData, or TransactionKind bytes with sender."
}
},
"additionalProperties": false
}Read any Sui object by id: type, owner, version and fields, with its recent change history (which transactions changed it). Example: { id: "0x..." }.
| Argument | Type | Description |
|---|---|---|
| id* | string | Object id. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Object id."
}
},
"additionalProperties": false
}Read a Sui object as it was at a version, checkpoint or time: its fields and owner then, or whether it was deleted or wrapped. Use it for what a pool, vault or position looked like before a change. Example: { id: "0x...", time: "2026-10-30T00:00:00Z" }.
| Argument | Type | Description |
|---|---|---|
| id* | string | Object id. |
| time | string | integer | A past time: ISO 8601 like 2025-06-01T00:00:00Z (UTC), or unix seconds. |
| version | integer | Object version. |
| checkpoint | integer | A checkpoint sequence number, instead of time. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Object id."
},
"time": {
"type": [
"string",
"integer"
],
"description": "A past time: ISO 8601 like 2025-06-01T00:00:00Z (UTC), or unix seconds."
},
"version": {
"type": "integer",
"description": "Object version."
},
"checkpoint": {
"type": "integer",
"minimum": 0,
"description": "A checkpoint sequence number, instead of time."
}
},
"additionalProperties": false
}The NFTs and kiosk items an address owns: name, collection, image and listing state. Page with cursor. Example: { address: "example.sui" }.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Items per page, up to 50. Default 10. |
| cursor | string | The cursor from the previous result, for the next page. |
| address* | string | A Sui address (0x...), a SuiNS name like example.sui, or @example. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"limit": {
"type": "integer",
"description": "Items per page, up to 50. Default 10."
},
"cursor": {
"type": "string",
"description": "The cursor from the previous result, for the next page."
},
"address": {
"type": "string",
"description": "A Sui address (0x...), a SuiNS name like example.sui, or @example."
}
},
"additionalProperties": false
}List the dynamic fields of an object with decoded names and values (tables, bags, kiosks, pools, registries), or with depth 1 to 3, its tree of children. Page with cursor. Example: { id: "0x..." }.
| Argument | Type | Description |
|---|---|---|
| id* | string | Parent object id. |
| depth | integer | 1 to 3 for the tree of children instead of one page of fields. |
| limit | integer | Fields per page, up to 50. |
| cursor | string | The cursor from the previous result, for the next page. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Parent object id."
},
"depth": {
"type": "integer",
"maximum": 3,
"minimum": 1,
"description": "1 to 3 for the tree of children instead of one page of fields."
},
"limit": {
"type": "integer",
"description": "Fields per page, up to 50."
},
"cursor": {
"type": "string",
"description": "The cursor from the previous result, for the next page."
}
},
"additionalProperties": false
}DeepBook order books. With nothing: every pool with best bid, ask and 24h volume. With pool: its depth and latest trades. With address: the wallet's open orders and recent fills. Example: { pool: "0x..." }.
| Argument | Type | Description |
|---|---|---|
| pool | string | Pool object id. |
| levels | integer | Price levels per side for depth. Default 10. |
| address | string | A Sui address (0x...), a SuiNS name like example.sui, or @example. |
{
"type": "object",
"properties": {
"pool": {
"type": "string",
"description": "Pool object id."
},
"levels": {
"type": "integer",
"description": "Price levels per side for depth. Default 10."
},
"address": {
"type": "string",
"description": "A Sui address (0x...), a SuiNS name like example.sui, or @example."
}
},
"additionalProperties": false
}A Move package. With only id: its modules, functions and upgrade history. With module and function: how to call it, each parameter explained, with a TypeScript snippet. With window (24h, 7d or 30d): calls per day and per function, failures and top callers. Example: { id: "0x2", module: "coin", function: "split" }.
| Argument | Type | Description |
|---|---|---|
| id* | string | Package id. |
| module | string | Module name, with function. |
| window | string | 24h, 7d or 30d, for usage. |
| function | string | Function name, with module. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Package id."
},
"module": {
"type": "string",
"description": "Module name, with function."
},
"window": {
"enum": [
"24h",
"7d",
"30d"
],
"type": "string",
"description": "24h, 7d or 30d, for usage."
},
"function": {
"type": "string",
"description": "Function name, with module."
}
},
"additionalProperties": false
}USD prices for up to 50 coins, now or at a past time. Pass coin types or symbols. Example: { coins: ["SUI", "DEEP"] }.
| Argument | Type | Description |
|---|---|---|
| at | string | Optional past time: ISO 8601 or unix seconds. |
| coins* | array | Coin types or symbols, up to 50 (up to 10 symbols). |
{
"type": "object",
"required": [
"coins"
],
"properties": {
"at": {
"type": "string",
"description": "Optional past time: ISO 8601 or unix seconds."
},
"coins": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"description": "Coin types or symbols, up to 50 (up to 10 symbols)."
}
},
"additionalProperties": false
}Find anything on Sui by text: coins by symbol or name, SuiNS names, perps markets, pools, packages, addresses, objects and digests. Returns ids to pass to the other tools. Example: { query: "deep" }.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Matches to return, 1 to 15. Default 8. |
| query* | string | Search text, a symbol, a name.sui, an id or a digest. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 15,
"minimum": 1,
"description": "Matches to return, 1 to 15. Default 8."
},
"query": {
"type": "string",
"description": "Search text, a symbol, a name.sui, an id or a digest."
}
},
"additionalProperties": false
}Run one SQL SELECT over every Sui transaction, event, object version and balance change since genesis. Needs an API key. Returns up to 100 rows; page with execution_id and offset. If it is still running, call again with execution_id. Tables and columns: https://api.tide.ad/v1/sql/schema. Example: { query: "SELECT sequence_number, total_transaction_blocks FROM sui.checkpoints ORDER BY sequence_number DESC LIMIT 5" }. Needs an API key.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Rows to return, 1 to 100. Default 50. |
| query | string | One SQL SELECT statement. |
| offset | integer | Rows to skip, for the next page. |
| execution_id | string | The execution_id of an earlier run, to get its rows or more of them. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Rows to return, 1 to 100. Default 50."
},
"query": {
"type": "string",
"description": "One SQL SELECT statement."
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "Rows to skip, for the next page."
},
"execution_id": {
"type": "string",
"description": "The execution_id of an earlier run, to get its rows or more of them."
}
},
"additionalProperties": false
}With address: the wallet's staked SUI, per stake its validator, principal, rewards and status. With validator: that validator's stake, commission and APY per epoch. Example: { address: "example.sui" }.
| Argument | Type | Description |
|---|---|---|
| address | string | A Sui address (0x...), a SuiNS name like example.sui, or @example. |
| validator | string | Validator address, for its history. |
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "A Sui address (0x...), a SuiNS name like example.sui, or @example."
},
"validator": {
"type": "string",
"description": "Validator address, for its history."
}
},
"additionalProperties": false
}A coin's price, market cap, liquidity, volume and holder count, its safety checks (mint authority, deny list, concentration), its top 10 holders with linked-wallet clusters, and a report on its creator's past launches. Use it to judge a coin. Example: { coin: "DEEP" }.
| Argument | Type | Description |
|---|---|---|
| coin* | string | A coin type like 0x2::sui::SUI, or a symbol like DEEP (verified coins win ties). |
{
"type": "object",
"required": [
"coin"
],
"properties": {
"coin": {
"type": "string",
"description": "A coin type like 0x2::sui::SUI, or a symbol like DEEP (verified coins win ties)."
}
},
"additionalProperties": false
}Follow money between addresses. direction in: who sent funds to this address, hop by hop back, plus who first funded it. out: where its funds went, hop by hop forward. both: its largest counterparties either way. Exchanges and protocols end a path. Returns the 15 largest flows. Example: { address: "0x...", direction: "in", depth: 2 }.
| Argument | Type | Description |
|---|---|---|
| coin | string | Only this coin (coin type or symbol). |
| depth | integer | Hops to follow, 1 to 3. Default 2. |
| minUsd | number | Skip flows smaller than this many USD. Default 10. |
| address* | string | A Sui address (0x...), a SuiNS name like example.sui, or @example. |
| direction | string | in (sources), out (destinations) or both (top counterparties). Default in. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"coin": {
"type": "string",
"description": "Only this coin (coin type or symbol)."
},
"depth": {
"type": "integer",
"maximum": 3,
"minimum": 1,
"description": "Hops to follow, 1 to 3. Default 2."
},
"minUsd": {
"type": "number",
"description": "Skip flows smaller than this many USD. Default 10."
},
"address": {
"type": "string",
"description": "A Sui address (0x...), a SuiNS name like example.sui, or @example."
},
"direction": {
"enum": [
"in",
"out",
"both"
],
"type": "string",
"description": "in (sources), out (destinations) or both (top counterparties). Default in."
}
},
"additionalProperties": false
}A wallet's transactions since genesis, newest first, each as one decoded sentence with the coins in and out. Filter by coin, direction (in or out) and days. Page with cursor. Spam airdrops are left out. Example: { address: "0x...", limit: 10 }.
| Argument | Type | Description |
|---|---|---|
| to | string | Last day to include, like 2025-06-30 (UTC). |
| coin | string | Only transactions that moved this coin (coin type or symbol). |
| from | string | First day to include, like 2025-06-01 (UTC). |
| limit | integer | Rows per page, 1 to 25. Default 10. |
| cursor | string | The cursor from the previous result, for the next page. |
| address* | string | A Sui address (0x...), a SuiNS name like example.sui, or @example. |
| direction | string | Only coins coming in, or going out. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"to": {
"type": "string",
"description": "Last day to include, like 2025-06-30 (UTC)."
},
"coin": {
"type": "string",
"description": "Only transactions that moved this coin (coin type or symbol)."
},
"from": {
"type": "string",
"description": "First day to include, like 2025-06-01 (UTC)."
},
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Rows per page, 1 to 25. Default 10."
},
"cursor": {
"type": "string",
"description": "The cursor from the previous result, for the next page."
},
"address": {
"type": "string",
"description": "A Sui address (0x...), a SuiNS name like example.sui, or @example."
},
"direction": {
"enum": [
"in",
"out"
],
"type": "string",
"description": "Only coins coming in, or going out."
}
},
"additionalProperties": false
}Everything about a wallet in one call: total value with price status, top coins, DeFi and launchpad positions, SuiNS names and labels, who first funded it, its trading record and its latest transactions. Use it first for any question about an address or a .sui name. Example: { address: "example.sui" }.
| Argument | Type | Description |
|---|---|---|
| address* | string | A Sui address (0x...), a SuiNS name like example.sui, or @example. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "A Sui address (0x...), a SuiNS name like example.sui, or @example."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.