Tide API MCP
Provides an MCP server for accessing Sui blockchain data, including parsed transactions, wallet profiles, balances, token info, fund tracing, and SQL queries over the entire chain.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.tide.ad/mcpWhat its tools do
38 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (38)
explain_transactionwallet_profilewallet_historybalance_attoken_infotrace_fundssearchperp_marketpricesqlexplain_unsignedyield_optionsyield_planbuild_transactionwithdraw_planreceipt_for_transactionconfirm_executionverify_receiptagent_pass_reportagent_pass_precheckagents_overviewagent_walletowner_agentsbilling_statusbilling_topupget_objectget_object_atobject_childrenpackage_infoeventscheckpointcandlesnftsstakingorder_bookwalrus_blobaddress_kinddocs
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to tide.ad ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Explain Sui transactions in plain English
- Retrieve wallet profiles and transaction history
- Query token prices and market data
- Execute SQL SELECT statements on Sui blockchain data
Source and maintenance
Protocol and capabilities
- Server
- tide 2.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 38 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
38 advertised
explain_transaction — Explain a transaction
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" }.
{
"type": "object",
"required": [
"digest"
],
"properties": {
"digest": {
"type": "string",
"description": "Transaction digest, base58 (43 or 44 characters)."
}
},
"additionalProperties": false
}{
"title": "Explain a transaction",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}wallet_profile — Profile a wallet
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" }.
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "A Sui address (0x...), a SuiNS name like example.sui, or @example."
}
},
"additionalProperties": false
}{
"title": "Profile a wallet",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}wallet_history — A wallet's transactions
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 }.
{
"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
}{
"title": "A wallet's transactions",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}balance_at — Balance at a past time
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" }.
{
"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
}{
"title": "Balance at a past time",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}token_info — Check a coin
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" }.
{
"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
}{
"title": "Check a coin",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}trace_funds — Trace where money came from or went
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 }.
{
"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
}{
"title": "Trace where money came from or went",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search — Search Sui
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" }.
{
"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
}{
"title": "Search Sui",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}perp_market — A perps market
One perpetual futures market on Sui (Aftermath, Bluefin or Parchment): mark and index price, 24h change and volume, open interest, funding (last, estimated next, when), max leverage, fees, the latest trades and pools it backs. Pass a symbol; venue is optional (the busiest market wins). Example: { market: "BTC", venue: "aftermath" }.
{
"type": "object",
"required": [
"market"
],
"properties": {
"venue": {
"enum": [
"aftermath",
"bluefin",
"parchment"
],
"type": "string",
"description": "aftermath, bluefin or parchment. Leave it out for the busiest."
},
"market": {
"type": "string",
"description": "Market symbol like BTC, META or SUI-PERP."
}
},
"additionalProperties": false
}{
"title": "A perps market",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}price — Coin prices
USD prices for up to 50 coins, now or at a past time. Pass coin types or symbols. Example: { coins: ["SUI", "DEEP"] }.
{
"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
}{
"title": "Coin prices",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}sql — Run SQL over all of Sui
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.
{
"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
}{
"title": "Run SQL over all of Sui",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}explain_unsigned — Check a transaction before signing
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..." }.
{
"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
}{
"title": "Check a transaction before signing",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}yield_options — Where to earn yield on Sui
Every place on Sui to earn yield (lending, pools, liquid staking, native staking) with the APY each actually paid over 7 and 30 days, deposits, exit liquidity and a risk tier from 1 (lowest) to 5 with reasons. Filter by asset, kind, protocol, max_tier, min_apy; sort by tvl, apy, tier or exit. Example: { asset: "USDC", max_tier: 2, sort: "apy" }.
{
"type": "object",
"properties": {
"kind": {
"enum": [
"lending",
"lp",
"liquid_staking",
"staking",
"vault"
],
"type": "string",
"description": "lending, lp, liquid_staking, staking or vault."
},
"sort": {
"enum": [
"tvl",
"apy",
"tier",
"exit"
],
"type": "string",
"description": "tvl (default), apy, tier or exit."
},
"asset": {
"type": "string",
"description": "A coin symbol (USDC, SUI) or coin type. USDC and SUI mean the native coins."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Rows, default 15, at most 50."
},
"min_apy": {
"type": "number",
"description": "Lowest realized APY plus rewards, in percent."
},
"max_tier": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Highest risk tier to include, 1 to 5."
},
"protocol": {
"type": "string",
"description": "A protocol id or name, like navi, suilend, scallop or cetus."
}
},
"additionalProperties": false
}{
"title": "Where to earn yield on Sui",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}yield_plan — Plan where to put an amount
A ranked menu of 3 to 6 yield options on Sui for an amount: the realized APY used (never the advertised one), expected USD over the horizon, cost to get in and out at that size, risk tier with reasons, plain steps and links. Ranks options that reach target_apy first, then lowest risk. With build: true and sender it also returns the unsigned transaction for the top option, already dry-run and checked, ready for the wallet to sign. Example: { amount_usd: 5000, asset: "USDC", target_apy: 6, max_risk_tier: 2, build: true, sender: "0x..." }.
{
"type": "object",
"required": [
"amount_usd"
],
"properties": {
"pass": {
"type": "string",
"description": "With build: an Agent Pass id instead of sender; builds for the pass's agent within the owner's rules, with a signed receipt."
},
"asset": {
"type": "string",
"description": "The coin held: a symbol (USDC, SUI) or coin type."
},
"build": {
"type": "boolean",
"description": "Also build the unsigned transaction for the top option (or build_ranks), checked on current mainnet state. Needs sender."
},
"amount": {
"type": [
"number",
"string"
],
"description": "With build: amount of asset in whole coins. Default amount_usd at today's price."
},
"sender": {
"type": "string",
"description": "With build: the wallet that holds asset and will sign."
},
"amount_usd": {
"type": "number",
"minimum": 1,
"description": "Amount in USD."
},
"target_apy": {
"type": "number",
"minimum": 0,
"description": "Target APY in percent."
},
"build_ranks": {
"type": "array",
"items": {
"type": "integer",
"maximum": 6,
"minimum": 1
},
"description": "With build: option ranks to build, default [1], at most 3."
},
"horizon_days": {
"type": "integer",
"maximum": 3650,
"minimum": 1,
"description": "Days you plan to stay, default 365."
},
"slippage_pct": {
"type": "number",
"description": "With build: slippage for a swap into the option's coin, percent, default 0.5."
},
"max_risk_tier": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Highest risk tier to accept, 1 (lowest) to 5. For the lowest risk, pass 1 or 2."
}
},
"additionalProperties": false
}{
"title": "Plan where to put an amount",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}build_transaction — Build a transaction to sign
Build an unsigned Sui transaction for an action and get it back already checked: tide adds the protocol's own calls, picks the sender's gas coins, sets the budget, dry-runs the exact bytes on current mainnet state and runs the pre-sign check. Returns tx_bytes, a plain description, what leaves and enters the wallet, gas and the verdict. If it would fail or the check says danger you get the reason and no bytes. Amounts are whole coins. Actions: stake {amount, validator}; unstake {staked_sui_id, validator, amount}; lst_mint {lst, amount}; lst_redeem {lst, amount}; swap {from, to, amount, slippage_pct}; supply {protocol, asset, amount}; withdraw {protocol, asset, amount}. Lending protocols: suilend, navi, scallop. Swaps use the Aftermath router with slippage_pct (default 0.5) enforced on chain. steps runs several actions in one transaction; a step without amount takes the previous output. tide never signs: sign tx_bytes with your own wallet. Example: { sender: "0x...", action: "supply", protocol: "navi", asset: "USDC", amount: 100 }.
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "swap: coin to buy."
},
"lst": {
"type": "string",
"description": "lst_mint / lst_redeem: afSUI, haSUI, vSUI, sSUI, stSUI."
},
"from": {
"type": "string",
"description": "swap: coin to sell."
},
"pass": {
"type": "string",
"description": "Agent Pass id: build for the pass's agent within the owner's rules (allowance, venues, caps, price floor), prechecked, with a signed receipt. Actions: swap, supply (NAVI), stake (validator address), transfer (listed recipient name); each step needs an amount."
},
"asset": {
"type": "string",
"description": "supply / withdraw: the coin (USDC, SUI or a coin type)."
},
"steps": {
"type": "array",
"items": {
"type": "object"
},
"description": "Instead of action: [{ action, ...fields }, ...] in one transaction."
},
"action": {
"enum": [
"stake",
"unstake",
"lst_mint",
"lst_redeem",
"swap",
"supply",
"withdraw"
],
"type": "string",
"description": "What to do."
},
"amount": {
"type": [
"number",
"string"
],
"description": "Whole coins, or \"all\" where allowed."
},
"sender": {
"type": "string",
"description": "The wallet that will sign (0x address). Not needed with pass."
},
"protocol": {
"type": "string",
"description": "supply / withdraw: suilend, navi or scallop."
},
"validator": {
"type": "string",
"description": "stake / unstake: validator address or name (stake picks one when left out)."
},
"slippage_pct": {
"type": "number",
"description": "swap: percent, default 0.5."
},
"staked_sui_id": {
"type": "string",
"description": "unstake: one StakedSui object id."
}
},
"additionalProperties": true
}{
"title": "Build a transaction to sign",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}withdraw_plan — Exit a wallet's positions
List a wallet's staking, liquid staking and lending positions (native stakes, afSUI, haSUI, vSUI, sSUI, stSUI, Suilend, NAVI, Scallop), each with an id and the step that exits it, and with exit build the exit transactions: unsigned, gassed and checked on current mainnet state, or the reason one would fail. to swaps the proceeds into one coin in the same transaction. Example: { wallet: "0x...", exit: "all", to: "USDC" }.
{
"type": "object",
"required": [
"wallet"
],
"properties": {
"to": {
"type": "string",
"description": "Swap each exit's proceeds into this coin."
},
"exit": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
},
"description": "Position ids to build exits for, or \"all\". Left out: only the list."
},
"wallet": {
"type": "string",
"description": "The wallet that holds the positions and will sign (0x address)."
},
"slippage_pct": {
"type": "number",
"description": "For that swap, percent, default 0.5."
}
},
"additionalProperties": false
}{
"title": "Exit a wallet's positions",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}receipt_for_transaction — Signed receipt before signing
Before you sign: send the exact unsigned bytes and your intent; tide dry-runs them on mainnet and returns a receipt signed by tide (ed25519) with the digest Sui will give them, every simulated balance change, object and event, what Sui itself enforces (Agent Pass caps, listed pools, price floor, budget), checks of your intent (max_spend, min_receive, nothing else leaves the wallet) and a verdict. Give your human the url. After sending, call confirm_execution. Example: { tx_bytes: "AAAC...", intent: { action: "swap", max_spend: { USDC: "5" }, min_receive: { SUI: "4.9" } } }.
{
"type": "object",
"required": [
"tx_bytes"
],
"properties": {
"intent": {
"type": "object",
"description": "What you mean to do. Optional fields: action, pass (Agent Pass id), wallet, max_spend { coin: amount }, min_receive { coin: amount }, deadline_ms. Amounts in whole coins."
},
"tx_bytes": {
"type": "string",
"description": "Full unsigned TransactionData, base64 (sender, gas and budget set)."
}
},
"additionalProperties": false
}{
"title": "Signed receipt before signing",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}confirm_execution — Did it do what the receipt said?
After execution: give the executed digest and the receipt (its id, or the receipt object). tide reads the transaction from the chain and compares status, balance changes, objects and events with the receipt. Returns match, or each difference in one plain sentence to report to your human (also not_executed, or other_transaction when the signed bytes were not the receipt's). Example: { digest: "CRDt...", receipt: "8e56072be767fadb73a18169d8dcfc3c" }.
{
"type": "object",
"required": [
"digest",
"receipt"
],
"properties": {
"digest": {
"type": "string",
"description": "Executed transaction digest."
},
"receipt": {
"type": [
"string",
"object"
],
"description": "Receipt id, or the receipt object."
}
},
"additionalProperties": false
}{
"title": "Did it do what the receipt said?",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}verify_receipt — Verify a tide receipt
Check a receipt's ed25519 signature against tide's published key (https://api.tide.ad/.well-known/tide-attest.json), that its id matches its content, and that its digest is the blake2b digest of the bytes inside it. Pass the receipt id or the receipt object with its signature. Example: { receipt: "8e56072be767fadb73a18169d8dcfc3c" }.
{
"type": "object",
"required": [
"receipt"
],
"properties": {
"receipt": {
"type": [
"string",
"object"
],
"description": "Receipt id, or the receipt object (or the whole answer of receipt_for_transaction)."
},
"signature": {
"type": "object",
"description": "The signature object, when the receipt object is passed alone."
},
"public_key": {
"type": "string",
"description": "Check against this ed25519 public key (base64) instead of tide's."
}
},
"additionalProperties": false
}{
"title": "Verify a tide receipt",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}agent_pass_report — What agents did under Agent Passes
A report for a human on Agent Pass (Sui's on-chain agent authorization): for an owner, an agent or one pass, each pass's status, its rules in plain words (pools, caps, price floor, recipients), budgets left, today's usage and every transaction signed under it, including what Sui refused and why. Example: { owner: "0x1eb7...e0b1" } or { pass: "0x03c7...7bac" }.
{
"type": "object",
"properties": {
"pass": {
"type": "string",
"description": "Pass object id."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Transactions per pass, 1 to 100. Default 15."
},
"owner": {
"type": "string",
"description": "Owner or agent address."
}
},
"additionalProperties": false
}{
"title": "What agents did under Agent Passes",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}agent_pass_precheck — Will the pass accept this?
Before building: check one action against an Agent Pass's rules as they stand now (active, signer is the agent, rule for the coin or pair, per-action and daily limits, listed pools, price floor, named recipient, budget left). Returns accept or the rule that would refuse it. Example: { pass: "0x03c7...7bac", step: { action: "swap", coin_in: "USDC", coin_out: "SUI", amount: "0.2" } }.
{
"type": "object",
"required": [
"pass",
"step"
],
"properties": {
"pass": {
"type": "string",
"description": "Pass object id."
},
"step": {
"type": "object",
"description": "{ action: swap|transfer|stake|supply, coin_in, coin_out, coin, amount, min_out, recipient (a name the owner listed), validator }"
},
"sender": {
"type": "string",
"description": "Your agent address."
}
},
"additionalProperties": false
}{
"title": "Will the pass accept this?",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}agents_overview — What AI agents do on Sui now
The agent world on Sui: agent wallets active in 24 hours, their transactions and volume, Agent Passes, sui::allowance spend, Sui Agent Payments (testnet, mainnet when live), gasless and sponsored transactions, every agent product with its status (mainnet, testnet, announced), the latest agent actions in plain English and the most active agents this week. Example: {}.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"title": "What AI agents do on Sui now",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}agent_wallet — One AI agent wallet
Is this address an AI agent, who does it act for and under what limits (Agent Pass, sui::allowance, Sui Agent Payments grant, t2000, Talus), how much of each limit is used, who pays its gas, and what it did lately in plain English. Example: { address: "0xb569f5371380e339038c0cdce2729621d36bfc89e740c28e3976bf04357edab6" }.
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "A 0x Sui address or a .sui name."
}
},
"additionalProperties": false
}{
"title": "One AI agent wallet",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}owner_agents — Agents an address runs
The AI agents one address runs on Sui: Agent Passes, allowances it granted, Sui Agent Payments grants, t2000 wallets it funded and agent wallets it pays gas for; per agent the limits in words, how much is used, payments refused on chain, and their latest actions. Example: { address: "adeniyi.sui" }.
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "A 0x Sui address or a .sui name."
}
},
"additionalProperties": false
}{
"title": "Agents an address runs",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}billing_status — Credits left and USDC top-ups
Your credits: what the plan has left this month, prepaid credits bought with USDC, the rate ($3 per million credits, so 1 USDC buys 333,333 credits), auto top-up settings and the latest payments. Needs an API key. Free. Example: {}. Needs an API key.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"title": "Credits left and USDC top-ups",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}billing_topup — Buy credits with USDC
Build an unsigned transaction that pays USDC on Sui to tide's treasury for credits ($3 per million credits; 1 USDC buys 333,333). Returns base64 tx_bytes that need no SUI for gas (unless gas: true). Sign them with the paying address and send them, or POST them with the signature to https://api.tide.ad/v1/billing/topup/submit. Credits land on the paying address's account about a second after the transaction is final. With an API key the key's account pays; without one pass address. Free. Example: { usd: "10" }.
{
"type": "object",
"required": [
"usd"
],
"properties": {
"gas": {
"type": "boolean",
"description": "true to pay gas in SUI instead of building a gasless transaction."
},
"usd": {
"type": "string",
"description": "USD of USDC to pay, at least 1, like \"10\" or \"25.50\"."
},
"address": {
"type": "string",
"description": "The paying Sui address, when you have no API key."
}
},
"additionalProperties": false
}{
"title": "Buy credits with USDC",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_object — Read an object
Read any Sui object by id: type, owner, version and fields, with its recent change history (which transactions changed it). Example: { id: "0x..." }.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Object id."
}
},
"additionalProperties": false
}{
"title": "Read an object",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_object_at — Read an object at a past time
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" }.
{
"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
}{
"title": "Read an object at a past time",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}object_children — List an object's dynamic fields
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..." }.
{
"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
}{
"title": "List an object's dynamic fields",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}package_info — Read a Move package
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" }.
{
"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
}{
"title": "Read a Move package",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}events — List events
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 }.
{
"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
}{
"title": "List events",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}checkpoint — Read a checkpoint
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" }.
{
"type": "object",
"properties": {
"seq": {
"type": "string",
"description": "Checkpoint sequence number, or latest."
}
},
"additionalProperties": false
}{
"title": "Read a checkpoint",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}candles — Price candles
OHLCV price candles for a coin, in USD. Pick interval and an optional from and to. Example: { coin: "SUI", interval: "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
}{
"title": "Price candles",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}nfts — NFTs a wallet owns
The NFTs and kiosk items an address owns: name, collection, image and listing state. Page with cursor. Example: { address: "example.sui" }.
{
"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
}{
"title": "NFTs a wallet owns",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}staking — Stakes and validators
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" }.
{
"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
}{
"title": "Stakes and validators",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}order_book — DeepBook order books
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..." }.
{
"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
}{
"title": "DeepBook order books",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}walrus_blob — Read a Walrus blob
Everything about one Walrus blob: status (registered, certified, expired, deleted), owner and uploader, size, the register and certify transactions, start and end epoch with an estimated end date, deletable or permanent, shared blob funds, extensions, WAL paid, attributes, and what the content is (image, video, audio, pdf, json, markdown, csv, code, text, html, quilt with its patches, Seal encrypted with its policy package, binary), with a preview URL. Takes a blob id, a quilt patch id, the u256 or a Blob object id. Example: { id: "FHQl1gK7Rb5X5X3Q-DiNe4qvyTojL262p0JUn-ijQkQ" }.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Blob id (43 characters), quilt patch id (50 characters), u256 in decimal or 0x hex, or a Blob object id."
}
},
"additionalProperties": false
}{
"title": "Read a Walrus blob",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}address_kind — What kind of address
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..." }.
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "A Sui address (0x...), a SuiNS name like example.sui, or @example."
}
},
"additionalProperties": false
}{
"title": "What kind of address",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}docs — Find the right tide API method
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" }.
{
"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
}{
"title": "Find the right tide API method",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1196 ms
- 95th percentile latency
- 1196 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1196 ms · metadata changed · 38 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http tide-api-mcp https://api.tide.ad/mcpCodex
codex mcp add tide-api-mcp --url https://api.tide.ad/mcpCursor
{
"mcpServers": {
"tide-api-mcp": {
"url": "https://api.tide.ad/mcp"
}
}
}Cline
{
"mcpServers": {
"tide-api-mcp": {
"type": "streamableHttp",
"url": "https://api.tide.ad/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"tide-api-mcp": {
"type": "http",
"url": "https://api.tide.ad/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http tide-api-mcp https://api.tide.ad/mcpClaude Desktop
https://api.tide.ad/mcpWindsurf
{
"mcpServers": {
"tide-api-mcp": {
"serverUrl": "https://api.tide.ad/mcp"
}
}
}Let your agent find its tools
Find servers like Tide API MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other ai and machine learning servers
Do you run Tide API MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.