Live non-custodial stablecoin liquidity: open positions, volume, and an on-chain swap quote.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
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.
A shields.io endpoint payload for the catalogue metrics, so a README can show live figures. Metrics: volume30, volume7, volume1, strategies, makers, pairs, chains.
A shields.io endpoint payload for the catalogue metrics, so a README can show live figures. Metrics: volume30, volume7, volume1, strategies, makers, pairs, chains.
| Argument | Type | Description |
|---|---|---|
| metric | string |
{
"type": "object",
"properties": {
"metric": {
"enum": [
"volume30",
"volume7",
"volume1",
"strategies",
"makers",
"pairs",
"chains"
],
"type": "string",
"default": "volume30"
}
},
"additionalProperties": false
}The networks where liquidity is live right now, with each network's settlement engine address and the tokens a position can be built from. Use this instead of hardcoding chain or token identifiers.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}One position in full, by its 32-byte strategy hash.
| Argument | Type | Description |
|---|---|---|
| hash* | string | Strategy hash, 64 hex characters. |
{
"type": "object",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string",
"pattern": "^0x[a-fA-F0-9]{64}$",
"description": "Strategy hash, 64 hex characters."
}
},
"additionalProperties": false
}Live non-custodial liquidity, as positions an agent can actually trade against. Each row carries the strategy hash, network, pair, tokens, settled volume and a `quote_eligible` flag, meaning the position is router-attached and its network has a quote route. It does NOT mean the position will quote: a maker can still gate it. Use this before a swap to find a real on-chain counterparty, or to survey where liquidity sits. Filter by network and by pair. Free, no key, no custody.
| Argument | Type | Description |
|---|---|---|
| pair | string | Pair filter. Either an exact pair such as "USDC/USDT", or a substring such as "USDC" or "WETH" which matches any pair containing it, or a network name, or part of a strategy hash. |
| chain | string | Network key, e.g. "base" or "ethereum". Defaults to every network. |
| limit | integer | Rows to return. |
| quote_ready | boolean | True returns positions on a network that has a quote route, which is the quote_eligible set. False returns the positions that do not, which are usually on networks with no quote RPC. Neither guarantees a price: a maker can still gate a position, and around 6 in 10 sampled positions answer "Strategy is gated". |
{
"type": "object",
"properties": {
"pair": {
"type": "string",
"description": "Pair filter. Either an exact pair such as \"USDC/USDT\", or a substring such as \"USDC\" or \"WETH\" which matches any pair containing it, or a network name, or part of a strategy hash."
},
"chain": {
"type": "string",
"description": "Network key, e.g. \"base\" or \"ethereum\". Defaults to every network."
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 500,
"minimum": 1,
"description": "Rows to return."
},
"quote_ready": {
"type": "boolean",
"description": "True returns positions on a network that has a quote route, which is the quote_eligible set. False returns the positions that do not, which are usually on networks with no quote RPC. Neither guarantees a price: a maker can still gate a position, and around 6 in 10 sampled positions answer \"Strategy is gated\"."
}
},
"additionalProperties": false
}Price a swap against one position, on-chain, at the current block — no custody, nothing signed, nothing moved. Works on any pair the position trades, not only stablecoins. Use this to check liquidity and get the output amount before preparing a swap. If a position answers "Strategy is gated", the maker embedded an access-licence check in the order: the CALLER must hold the 1inch Aqua access token. That check reads tx.origin, so the revert depends on whether a caller was supplied: without one it is 0x89c62b64 ("the caller holds none"), with one it is 0x39c4052c (the tx-origin balance check). Pass `from` with the address that will actually sign the swap. A caller that holds the maker's credential gets a real price; anyone else gets an accurate "you do not hold it" instead of the least specific answer available. This is a property of the strategy, not a bug — and it is strongly per-network. Measured 2026-10-19: on Ethereum 58 of 60 sampled positions are gated, and across 17 networks the network-balanced split is about 62 percent gated and 17 percent priced. The credential contract itself is only deployed on the 13 Aqua chains, so Arc, Monad, Cronos and HyperEVM have no such gate. Quotes are simulated on 17 networks: ethereum, base, arbitrum, optimism, polygon, arc, bnb-chain, gnosis, avalanche, sonic, linea, zksync-era, monad, unichain, hyperevm, cronos and robinhood-chain. This list is the set the quote path actually serves; if a network is not on it, do not promise a quote for it.
| Argument | Type | Description |
|---|---|---|
| from | string | The address that will sign the swap, simulated as msg.sender. Supply it whenever the caller might hold the maker's access credential: the gate is checked on tx.origin, so with an address the answer is the real one, and without one it is the least specific one. |
| hash* | string | Strategy hash to quote against. |
| chain | string | Network key. Defaults to "ethereum". |
| amount* | string | Input amount in token base units, as an integer string. e.g. "1000000" for 1 USDC. |
| direction | string |
{
"type": "object",
"required": [
"hash",
"amount"
],
"properties": {
"from": {
"type": "string",
"pattern": "^0x[a-fA-F0-9]{40}$",
"description": "The address that will sign the swap, simulated as msg.sender. Supply it whenever the caller might hold the maker's access credential: the gate is checked on tx.origin, so with an address the answer is the real one, and without one it is the least specific one."
},
"hash": {
"type": "string",
"pattern": "^0x[a-fA-F0-9]{64}$",
"description": "Strategy hash to quote against."
},
"chain": {
"type": "string",
"description": "Network key. Defaults to \"ethereum\"."
},
"amount": {
"type": "string",
"description": "Input amount in token base units, as an integer string. e.g. \"1000000\" for 1 USDC."
},
"direction": {
"enum": [
"aToB",
"bToA"
],
"type": "string",
"default": "aToB"
}
},
"additionalProperties": false
}Aggregate statistics for the live TRDEFI non-custodial stablecoin liquidity catalogue: how many open maker positions exist, how many distinct makers, how many pairs, across how many networks, plus settled volume over 1, 7 and 30 days, and the deepest pairs by volume and by position count. Free, no key.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}