SODAX Builders MCP
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Cross-network DeFi API data, AMM analytics, and SDK docs for 17+ networks.
| Author | io.github.gosodax |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 960 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"SODAX Builders MCP": {
"url": "https://builders.sodax.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (37)
sodax_get_supported_chainsread-onlyList all blockchain networks supported by SODAX for cross-chain swaps and DeFi operations
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_swap_tokensread-onlyGet available tokens for swapping on SODAX, optionally filtered by chain
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted textchainId— string — Filter tokens by spoke chain ID. Use the formal chain ID (e.g., '0x2105.base', 'ethereum', 'sonic', '0x1.icon', '0xa.optimism'). Call sodax_get_supported_chains for the full list.
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_transactionread-onlyLook up a specific transaction by its hash to see status, amounts, and details
Parameters:
txHash(required) — string — The transaction hash to look up (e.g., '0x...')format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_user_transactionsread-onlyGet intent/transaction history for a specific wallet address
Parameters:
userAddress(required) — string — The wallet address to look up (e.g., '0x...')limit— number — Maximum number of transactions to return (1-100)format— string — Response format: 'json' for raw data or 'markdown' for formatted textoffset— number — Number of transactions to skip for paginationtoBlock— number — Inclusive upper bound on blockNumber (chain-native ordering)fromBlock— number — Inclusive lower bound on blockNumber (chain-native ordering)
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_volumeread-onlyGet solver volume data showing filled intents with filtering and pagination. Requires inputToken and outputToken. Optional filters: chain, solver, block range OR time range (don't mix both).
Parameters:
inputToken(required) — string — REQUIRED: Input token addressoutputToken(required) — string — REQUIRED: Output token addresssort— string — Sort order by block numbertoTs— number — End timestamp (unix seconds). Don't mix with since/until or fromBlock/toBlock.limit— number — Maximum number of filled intents to return (1-100)since— string — Start time ISO format (don't mix with fromBlock/toBlock or fromTs/toTs)until— string — End time ISO format (don't mix with fromBlock/toBlock or fromTs/toTs)cursor— string — Pagination cursor from previous response's nextCursorformat— string — Response format: 'json' for raw data or 'markdown' for formatted textfromTs— number — Start timestamp (unix seconds). Don't mix with since/until or fromBlock/toBlock.solver— string — Filter by solver address (0x0...0 for default solver)chainId— number — Filter by chain ID (e.g., 146 for Sonic)toBlock— number — End block number (don't mix with since/until)fromBlock— number — Start block number (don't mix with since/until)includeData— boolean — Include raw intent data in response
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_volume_statsread-onlyGet aggregate solver volume stats: the approximate total number of filled-intent records (fill documents, not distinct intents). Cached ~60s upstream.
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_orderbookread-onlyGet current orderbook entries showing pending/open intents
Parameters:
limit— number — Max results (default server-side, cap 500)format— string — Response format: 'json' for raw data or 'markdown' for formatted textoffset— number — Offset for simple paginationcreator— string — Filter by creator addressdstChain— number — Filter by destination chain idsrcChain— number — Filter by source chain idinputToken— string — Filter by input token addressoutputToken— string — Filter by output token addressdeadlineAfter— number — Only return intents with deadline > value (Unix seconds)deadlineBefore— number — Only return intents with deadline < value (Unix seconds)excludeZeroDeadline— boolean — Exclude intents where deadline = 0
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_money_market_assetsread-onlyList all assets available for lending and borrowing in the SODAX money market
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted textchainId— string — Filter by chain ID
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_user_positionread-onlyGet a user's lending and borrowing position in the money market
Parameters:
userAddress(required) — string — The wallet address to look upformat— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_partnersread-onlyList all SODAX integration partners including wallets, DEXs, and other protocols
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted textchainId— integer — Filter partners by numeric chain ID (e.g. 146 for Sonic)
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_token_supplyread-onlyGet SODA token supply information including total, circulating, and burned amounts
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_all_configread-onlyGet full SODAX configuration including all supported chains, swap tokens, and protocol settings in one call
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_relay_chain_id_mapread-onlyGet mapping between chain IDs and intent relay chain IDs used by the SODAX relay network
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_all_chains_configsread-onlyGet detailed configuration for all spoke chains including contract addresses, RPCs, and token configs
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_hub_assetsread-onlyGet assets representing spoke tokens on the hub (Sonic) chain, optionally filtered by source chain
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted textchainId— string — Filter by source spoke chain ID. Use the formal chain ID (e.g., '0x2105.base', 'ethereum', 'sonic'). Call sodax_get_supported_chains for the full list.
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_money_market_tokensread-onlyGet tokens supported for money market lending/borrowing, optionally filtered by chain
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted textchainId— string — Filter by chain ID
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_money_market_reserve_assetsread-onlyGet money market reserve assets used as collateral backing
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_amm_positionsread-onlyGet AMM liquidity provider NFT positions, optionally filtered by owner address
Parameters:
limit— number — Maximum number of positions to returnowner— string — Filter by owner wallet addressformat— string — Response format: 'json' for raw data or 'markdown' for formatted textoffset— number — Number of positions to skip for pagination
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_amm_pool_candlesread-onlyGet OHLCV candlestick chart data for an AMM pool
Parameters:
chainId(required) — string — Chain ID where the pool is deployed (e.g., 'sonic')poolId(required) — string — The pool contract address or IDinterval(required) — string — REQUIRED: Candle intervalfrom(required) — number — REQUIRED: Start timestamp (unix seconds)to(required) — number — REQUIRED: End timestamp (unix seconds)format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_intentread-onlyLook up a specific intent by its intent hash (different from transaction hash)
Parameters:
intentHash(required) — string — The intent hash to look up (66 character hex string starting with 0x)format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_solver_intentread-onlyGet solver-side details for an intent including fill history. Use includeAll to see all solver documents.
Parameters:
intentHash(required) — string — The intent hash to look upformat— string — Response format: 'json' for raw data or 'markdown' for formatted textincludeAll— boolean — Include all intent documents (history) instead of just the latest
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_money_market_assetread-onlyGet detailed information for a specific money market asset by its reserve address
Parameters:
reserveAddress(required) — string — The reserve contract address of the assetformat— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_asset_borrowersread-onlyGet borrowers for a specific money market asset by its reserve address
Parameters:
reserveAddress(required) — string — The reserve contract address of the assetlimit— number — Maximum number of borrowers to return (1-100)format— string — Response format: 'json' for raw data or 'markdown' for formatted textoffset— number — Number of borrowers to skip for pagination
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_asset_suppliersread-onlyGet suppliers (lenders) for a specific money market asset by its reserve address
Parameters:
reserveAddress(required) — string — The reserve contract address of the assetlimit— number — Maximum number of suppliers to return (1-100)format— string — Response format: 'json' for raw data or 'markdown' for formatted textoffset— number — Number of suppliers to skip for pagination
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_all_borrowersread-onlyGet all borrowers across all money market assets with pagination
Parameters:
limit— number — Maximum number of borrowers to return (1-100)format— string — Response format: 'json' for raw data or 'markdown' for formatted textoffset— number — Number of borrowers to skip for pagination
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_partner_summaryread-onlyGet volume and activity summary for a specific integration partner by their receiver address
Parameters:
receiver(required) — string — The partner receiver addressformat— string — Response format: 'json' for raw data or 'markdown' for formatted textchainId— string — Filter by chain ID
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_total_supplyread-onlyGet SODA token total supply as a plain number
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_circulating_supplyread-onlyGet SODA token circulating supply as a plain number
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_refresh_cacheClear both the backend API cache and the solver oracle cache to force fresh fetches on next requests. Reports the number of entries cleared per cache.
Hints: read-only no · destructive no · idempotent yes · open-world not declared
sodax_get_solver_oracleread-onlyGet the solver's oracle USD prices per (chain, token). For quoting with sodax_get_solver_quote, filter chainId='146': chainId-146 addresses pass the quote service's compatibility check, while spoke-chain (non-146) addresses are rejected with 'not compatible with the quote service'. Caveat: passing that check (being listed/priced) does NOT guarantee a swap route — canonical bridged *_ASSET hub tokens and major stablecoins route most reliably, while many wrapped/derivative/money-market entries (e.g. WBTC, waLocBTC, SONIC_SODA_ASSET) are priced but frequently return 'No path was found', and routability is pair/amount/liquidity-dependent. Also useful for sanity-checking quote amounts against the USD prices the solver uses.
Parameters:
format— string — Response format: 'json' for raw data or 'markdown' for formatted textsymbol— string — Filter by token symbol (case-insensitive exact match, e.g. 'SODA', 'bnUSD')chainId— string — Filter results to a single intent-relay chain ID (decimal string, e.g. '146' for Sonic). Call sodax_get_relay_chain_id_map to translate.
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_get_solver_quoteread-onlyGet a swap quote from the SODAX solver. tokenSrc/tokenDst MUST be hub-chain (Sonic, chainId 146) asset addresses — look them up with sodax_get_solver_oracle (chainId='146'). Working example: tokenSrc='0xeb0393893b5bf98a50073d6740738b08e575058b' (BTC_BTC_ASSET) → tokenDst='0xaeafa26e43f46cd83efe89b1e57c858eb5685a24' (ETH_ASSET), amount='99800', quoteType='exact_input' returns a quoted_amount. exact_input quotes the destination amount you'd receive; exact_output quotes the source amount you'd need. There are two distinct HTTP-400 failures, both naming the two addresses: (1) 'not compatible with the quote service' = an address isn't a recognized hub asset (a spoke-chain or otherwise non-chainId-146 address was passed) → use a chainId-146 address from sodax_get_solver_oracle, and for a reliable pick prefer a canonical bridged *_ASSET hub token or major stablecoin (chainId 146 alone doesn't guarantee a route). (2) 'No path was found between X and Y' = both tokens are valid hub assets but the solver couldn't route this pair for this amount → routing is pair/amount/liquidity-dependent, so retry with a smaller amount or a more liquid counterparty (a canonical bridged *_ASSET token, or a major stablecoin like SONIC_USDC_ASSET). Many wrapped/derivative entries (e.g. WBTC, waLocBTC, SONIC_SODA_ASSET) are oracle-priced but frequently have no route — prefer canonical bridged *_ASSET hub tokens.
Parameters:
tokenSrc(required) — string — REQUIRED: Source token address (the token you're spending). Hub-chain (Sonic, chainId 146) asset address from sodax_get_solver_oracle. Prefer canonical bridged *_ASSET tokens (e.g. BTC_BTC_ASSET 0xeb0393893b5bf98a50073d6740738b08e575058b); wrapped/derivative entries like WBTC are priced but frequently have no route.tokenDst(required) — string — REQUIRED: Destination token address (the token you want to receive). Hub-chain (Sonic, chainId 146) asset address from sodax_get_solver_oracle (e.g. ETH_ASSET 0xaeafa26e43f46cd83efe89b1e57c858eb5685a24). Prefer canonical bridged *_ASSET tokens or a major stablecoin for a routable pair.amount(required) — string — REQUIRED: Amount in the smallest unit of the input token (for exact_input) or output token (for exact_output). String to preserve precision. Note: a very large amount can exceed available liquidity and return 'No path was found' even for an otherwise-valid pair — reduce it if that happens.format— string — Response format: 'json' for raw data or 'markdown' for formatted textquoteType— string — 'exact_input' (default): given input amount, quote output amount. 'exact_output': given output amount, quote input amount required.
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_relay_submit_txSubmit a confirmed spoke-chain transaction to the SODAX intent relay so it can be delivered to the destination chain. The tx must already be finalized on the source chain. Re-submitting the same tx is a no-op. For split-tx chains (Solana, Bitcoin) supply the optional `data` argument.
Parameters:
chainId(required) — string — REQUIRED: Intent-relay chain ID of the source chain (decimal string, e.g. '146' for Sonic, '2' for Ethereum). Call sodax_get_relay_chain_id_map to translate from a chain key.txHash(required) — string — REQUIRED: The confirmed transaction hash on the source chaindata— object — Required only for split-tx chains (Solana, Bitcoin). Omit for EVM chains.format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only no · destructive no · idempotent yes · open-world yes
sodax_relay_get_transaction_packetsread-onlyList every cross-chain packet emitted by a given source transaction. Use this to track relay status — a packet is complete when status='executed' and dst_tx_hash is populated.
Parameters:
chainId(required) — string — REQUIRED: Intent-relay chain ID of the source chain (decimal string, e.g. '146'). Call sodax_get_relay_chain_id_map to translate from a chain key.txHash(required) — string — REQUIRED: The source-chain transaction hash whose packets you want to inspectformat— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
sodax_relay_get_packetread-onlyFetch a single relay packet by its connection serial number (conn_sn). Returns the packet data on success or a `{success:false, message}` shape if the packet isn't found.
Parameters:
chainId(required) — string — REQUIRED: Intent-relay chain ID of the source chain (decimal string)txHash(required) — string — REQUIRED: The source-chain transaction hashconnSn— string — REQUIRED: Connection serial number identifying the packet within the tx. Accepts string or number (numeric values are coerced — convenient for piping back a previously-fetched packet's `conn_sn` field).format— string — Response format: 'json' for raw data or 'markdown' for formatted text
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
docs_healthread-onlyCheck SDK documentation availability. Call this first if docs tools seem unavailable.
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
docs_refreshReconnect to SDK documentation and refresh available tools. Use if docs seem stale or unavailable.
Hints: read-only no · destructive no · idempotent yes · open-world not declared
docs_list_toolsread-onlyList all SDK documentation tools with parameters. Essential for discovering what's available.
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.