Non-custodial MultiversX swaps for AI agents: quotes, unsigned txs, simulation, tx status.
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.
Builds an UNSIGNED MultiversX swap transaction for `sender` to sign with its own wallet. The transaction is verified and rebuilt from verified fields only (receiver = hard-coded OneDex aggregator, or the allowlisted XOXNO router after strict route decoding, capped gas, gasPrice 1e9). Returns the transaction, a human-readable summary, costs, warnings, expiresAt (advisory; minOut is the on-chain protection) and `signingLink`: a MultiversX Web Wallet URL (wallet.multiversx.com/hook/transaction) with this exact transaction pre-filled, for a human to open, check receiver/amount/token on the wallet screen and confirm there. This server never signs or holds keys.
Bech32 address (erd1…) of the wallet that will sign
"EGLD", a token identifier like "ONE-f9954f", or a unique ticker like "USDC"
Amount of tokenIn as a decimal string, e.g. "1.5" (not base units)
"EGLD", a token identifier like "ONE-f9954f", or a unique ticker like "USDC"
MultiversX network (default mainnet; devnet only if configured)
Slippage in basis points (100 = 1%, default). Above 500 needs confirmHighSlippage: true; above 2000 is refused.
Must be true to accept price impact above 10%, or when the aggregator-based and independent (api.multiversx.com) impacts disagree by more than 5 points
Must be true to accept slippage above 5%
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http onedex https://aggregator.onedex.app/ai/mcp
Builds an UNSIGNED MultiversX swap transaction for `sender` to sign with its own wallet. The transaction is verified and rebuilt from verified fields only (receiver = hard-coded OneDex aggregator, or the allowlisted XOXNO router after strict route decoding, capped gas, gasPrice 1e9). Returns the transaction, a human-readable summary, costs, warnings, expiresAt (advisory; minOut is the on-chain protection) and `signingLink`: a MultiversX Web Wallet URL (wallet.multiversx.com/hook/transaction) with this exact transaction pre-filled, for a human to open, check receiver/amount/token on the wallet screen and confirm there. This server never signs or holds keys.
| Argument | Type | Description |
|---|---|---|
| sender* | string | Bech32 address (erd1…) of the wallet that will sign |
| network | string | MultiversX network (default mainnet; devnet only if configured) |
| tokenIn* | string | "EGLD", a token identifier like "ONE-f9954f", or a unique ticker like "USDC" |
| amountIn* | string | Amount of tokenIn as a decimal string, e.g. "1.5" (not base units) |
| tokenOut* | string | "EGLD", a token identifier like "ONE-f9954f", or a unique ticker like "USDC" |
| slippageBps | integer | Slippage in basis points (100 = 1%, default). Above 500 needs confirmHighSlippage: true; above 2000 is refused. |
| confirmHighImpact | boolean | Must be true to accept price impact above 10%, or when the aggregator-based and independent (api.multiversx.com) impacts disagree by more than 5 points |
| confirmHighSlippage | boolean | Must be true to accept slippage above 5% |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tokenIn",
"tokenOut",
"amountIn",
"sender"
],
"properties": {
"sender": {
"type": "string",
"maxLength": 62,
"minLength": 62,
"description": "Bech32 address (erd1…) of the wallet that will sign"
},
"network": {
"enum": [
"mainnet",
"devnet"
],
"type": "string",
"default": "mainnet",
"description": "MultiversX network (default mainnet; devnet only if configured)"
},
"tokenIn": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "\"EGLD\", a token identifier like \"ONE-f9954f\", or a unique ticker like \"USDC\""
},
"amountIn": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Amount of tokenIn as a decimal string, e.g. \"1.5\" (not base units)"
},
"tokenOut": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "\"EGLD\", a token identifier like \"ONE-f9954f\", or a unique ticker like \"USDC\""
},
"slippageBps": {
"type": "integer",
"default": 100,
"maximum": 10000,
"minimum": 1,
"description": "Slippage in basis points (100 = 1%, default). Above 500 needs confirmHighSlippage: true; above 2000 is refused."
},
"confirmHighImpact": {
"type": "boolean",
"description": "Must be true to accept price impact above 10%, or when the aggregator-based and independent (api.multiversx.com) impacts disagree by more than 5 points"
},
"confirmHighSlippage": {
"type": "boolean",
"description": "Must be true to accept slippage above 5%"
}
}
}Quote a swap through the OneDex aggregator (XOXNO only if at least 1% better). Returns quotedOut, guaranteed minOut, route, price impact, a full `costs` breakdown, a one-line `costSummary` and warnings. Amounts are decimal strings plus raw base units.
| Argument | Type | Description |
|---|---|---|
| network | string | MultiversX network (default mainnet; devnet only if configured) |
| tokenIn* | string | "EGLD", a token identifier like "ONE-f9954f", or a unique ticker like "USDC" |
| amountIn* | string | Amount of tokenIn as a decimal string, e.g. "1.5" (not base units) |
| tokenOut* | string | "EGLD", a token identifier like "ONE-f9954f", or a unique ticker like "USDC" |
| slippageBps | integer | Slippage in basis points (100 = 1%, default). Above 500 needs confirmHighSlippage: true; above 2000 is refused. |
| confirmHighImpact | boolean | Must be true to accept price impact above 10%, or when the aggregator-based and independent (api.multiversx.com) impacts disagree by more than 5 points |
| confirmHighSlippage | boolean |
EGLD and fungible ESDT balances of an address (api.multiversx.com) with decimals and USD value when a price is known. Same source build_swap_tx uses for its balance warnings. Cached 10 s.
| Argument | Type | Description |
|---|---|---|
| address* | string | Bech32 address (erd1…) |
| network | string | MultiversX network (default mainnet; devnet only if configured) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"maxLength": 62,
"minLength": 62,
"description": "Bech32 address (erd1…)"
},
"network": {
"enum": [
"mainnet",
"devnet"
],
"type": "string",
"default": "mainnet",
"description": "MultiversX network (default mainnet; devnet only if configured)"
}
}
}Tokens tradable through the OneDex aggregator with USD price, verified/paused flags and approximate liquidity (OneDex + xExchange pools). Sorted by liquidity.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| search | string | Filter by ticker, name or identifier (case-insensitive) |
| network | string | MultiversX network (default mainnet; devnet only if configured) |
| verifiedOnly | boolean | Only tokens with a MultiversX assets registry entry |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1
},
"search": {
"type": "string",
"maxLength": 40,
"description": "Filter by ticker, name or identifier (case-insensitive)"
},
"network": {
"enum": [
"mainnet",
"devnet"
],
"type": "string",
"default": "mainnet",
"description": "MultiversX network (default mainnet; devnet only if configured)"
},
"verifiedOnly": {
"type": "boolean",
"default": false,
"description": "Only tokens with a MultiversX assets registry entry"
}
}
}Dry-runs the UNSIGNED transaction returned by build_swap_tx on the MultiversX gateway (checkSignature=false). The transaction is re-verified first and refused unless it is exactly what build_swap_tx produces (receiver, function, token, amount, minOut, chainID, gas caps). Returns status, estimated gas, a failure reason, and the expected received amount. Simulation does not guarantee execution.
| Argument | Type | Description |
|---|---|---|
| minOut* | string | Required: minOut.raw from build_swap_tx (the minimum you accepted) |
| network | string | MultiversX network (default mainnet; devnet only if configured) |
| tokenIn | string | Optional check: data.tokenIn.id from build_swap_tx |
| amountIn | string | Optional check: amountIn.decimal from build_swap_tx |
| tokenOut | string | Optional check: data.tokenOut.id from build_swap_tx |
| transaction* | object | The `transaction` object from build_swap_tx, unchanged |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"transaction",
"minOut"
],
"properties": {
"minOut": {
"type": "string",
"pattern": "^\\d{1,78}$",
"description": "Required: minOut.raw from build_swap_tx (the minimum you accepted)"
},
"network": {
"enum": [
"mainnet",
"devnet"
],
"type": "string",
"default": "mainnet",
"description": "MultiversX network (default mainnet; devnet only if configured)"
},
"tokenIn": {
"type": "string",
"maxLength": 20,
"description": "Optional check: data.tokenIn.id from build_swap_tx"
},
"amountIn": {
"type": "string",
"maxLength": 80,
"description": "Optional check: amountIn.decimal from build_swap_tx"
},
"tokenOut": {
"type": "string",
"maxLength": 20,
"description": "Optional check: data.tokenOut.id from build_swap_tx"
},
"transaction": {
"type": "object",
"required": [
"nonce",
"value",
"receiver",
"sender",
"gasPrice",
"gasLimit",
"data",
"chainID",
"version"
],
"properties": {
"data": {
"type": "string",
"maxLength": 16384
},
"nonce": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"value": {
"type": "string",
"maxLength": 40
},
"sender": {
"type": "string",
"maxLength": 62
},
"chainID": {
"type": "string",
"maxLength": 4
},
"options": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"version": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"gasLimit": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"gasPrice": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"receiver": {
"type": "string",
"maxLength": 62
}
},
"description": "The `transaction` object from build_swap_tx, unchanged",
"additionalProperties": false
}
}
}Status of a transaction (pending / success / fail / not_found), finality (pending / notarized / final), actual fee paid (EGLD + USD), tokens the sender actually received, and the explorer link.
| Argument | Type | Description |
|---|---|---|
| hash* | string | Transaction hash (64 hex chars) |
| network | string | MultiversX network (default mainnet; devnet only if configured) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string",
"description": "Transaction hash (64 hex chars)"
},
"network": {
"enum": [
"mainnet",
"devnet"
],
"type": "string",
"default": "mainnet",
"description": "MultiversX network (default mainnet; devnet only if configured)"
}
}
}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 15, 2026.
| Must be true to accept slippage above 5% |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tokenIn",
"tokenOut",
"amountIn"
],
"properties": {
"network": {
"enum": [
"mainnet",
"devnet"
],
"type": "string",
"default": "mainnet",
"description": "MultiversX network (default mainnet; devnet only if configured)"
},
"tokenIn": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "\"EGLD\", a token identifier like \"ONE-f9954f\", or a unique ticker like \"USDC\""
},
"amountIn": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Amount of tokenIn as a decimal string, e.g. \"1.5\" (not base units)"
},
"tokenOut": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "\"EGLD\", a token identifier like \"ONE-f9954f\", or a unique ticker like \"USDC\""
},
"slippageBps": {
"type": "integer",
"default": 100,
"maximum": 10000,
"minimum": 1,
"description": "Slippage in basis points (100 = 1%, default). Above 500 needs confirmHighSlippage: true; above 2000 is refused."
},
"confirmHighImpact": {
"type": "boolean",
"description": "Must be true to accept price impact above 10%, or when the aggregator-based and independent (api.multiversx.com) impacts disagree by more than 5 points"
},
"confirmHighSlippage": {
"type": "boolean",
"description": "Must be true to accept slippage above 5%"
}
}
}