Elysium swap aggregator for AI agents: token facts, wallet holdings, best of three routers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer trnch_bot_... API key, only to build a buy or a sell, or to report a sent swap. Get one with trnch_register_message then trnch_register (wallet signature). Not needed for the read-only tools or trnch_quote.
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.
Build a buy in one call: quotes three routers and returns the best route as a transaction for the key's wallet to sign. Give token, and amountUsd (paid in USDC) or amountIn with tokenIn (the zero address pays in HYPE). The Trnch fee is already deducted from the quote; the rate applied is returned as feeBps. Returns { router, feeBps, quote, approval, tx, chainId, from }: approval, when not null, has to be sent before tx, from the same wallet (chainId 99901). Nothing is sent by Trnch. Errors: 503 while the fee recipient is not configured on this chain (nothing is built), 404 no route, 429 rate or build limit (retry-after). Requires an API key (created by wallet signature), sent as Authorization: Bearer <key>.
Token to buy, as an address.
Token paid with amountIn. Default USDC.
Amount of tokenIn to spend, smallest unit. Use this or amountUsd.
Amount to spend in US dollars, paid in USDC. Use this or amountIn.
Max slippage in basis points (100 = 1%). Default 100.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http trnch-elysium https://trnch.fun/elysium/api/mcp
Headers
Authorization (optional, not in the config above): Bearer trnch_bot_... API key, only to build a buy or a sell, or to report a sent swap. Get one with trnch_register_message then trnch_register (wallet signature). Not needed for the read-only tools or trnch_quote.Build a buy in one call: quotes three routers and returns the best route as a transaction for the key's wallet to sign. Give token, and amountUsd (paid in USDC) or amountIn with tokenIn (the zero address pays in HYPE). The Trnch fee is already deducted from the quote; the rate applied is returned as feeBps. Returns { router, feeBps, quote, approval, tx, chainId, from }: approval, when not null, has to be sent before tx, from the same wallet (chainId 99901). Nothing is sent by Trnch. Errors: 503 while the fee recipient is not configured on this chain (nothing is built), 404 no route, 429 rate or build limit (retry-after). Requires an API key (created by wallet signature), sent as Authorization: Bearer <key>.
| Argument | Type | Description |
|---|---|---|
| token* | string | Token to buy, as an address. |
| tokenIn | string | Token paid with amountIn. Default USDC. |
| amountIn | string | Amount of tokenIn to spend, smallest unit. Use this or amountUsd. |
| amountUsd | number | Amount to spend in US dollars, paid in USDC. Use this or amountIn. |
| slippageBps | integer | Max slippage in basis points (100 = 1%). Default 100. |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Token to buy, as an address."
},
"tokenIn": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Token paid with amountIn. Default USDC."
},
"amountIn": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Amount of tokenIn to spend, smallest unit. Use this or amountUsd."
},
"amountUsd": {
"type": "number",
"maximum": 50000,
"description": "Amount to spend in US dollars, paid in USDC. Use this or amountIn.",
"exclusiveMinimum": 0
},
"slippageBps": {
"type": "integer",
"maximum": 5000,
"minimum": 10,
"description": "Max slippage in basis points (100 = 1%). Default 100."
}
},
"additionalProperties": false
}Read on-chain facts about any Elysium token before you trade it. Returns { token, chainId, screened: false, sellTest, hookFee, liquidity, creator, launchpad, template, forcedTransfer, meaning }: sellTest { class, result, blockedAt, complete, variantsRun, variantsSkipped, lossPct, method, sizes [{ amount, result, lossPct }], extraLossPctAtLargerSize, buyTaxPct, transfer { ok, backOk, taxPct }, sellLossPct, logsMatchBalances, delayed { clockAdvancedMinutes, result }, note }: a simulation at the time of the read that tries to buy, approve, transfer wallet to wallet and back, and sell from both wallets, as separate transactions, through the pools Trnch would route through (the proven launch pool, the deepest and the oldest qualifying pool; the worst result decides: decidingPool, poolTested, checkedAt), at two sizes and again with the clock advanced 5 minutes in simulation; note says in words what actually ran, complete, variantsRun and variantsSkipped say what did not and why, and a partial result reads "(partial check)"; class sold (bought, transferred and sold in a simulation, every step that ran succeeded), taxed, blocked (blockedAt says whether the approval or the sell failed in the simulation), transfer-failed (the tokens could not be moved between wallets in the simulation) or not-checked; buy tax, transfer tax and sell loss are reported apart, and token logs that do not match balances are reported. A simulation now: the token may behave differently later or towards other wallets, and an upgradeable or owner-controlled token can change; sizes 0.25 HYPE and, when the pool is deep enough, 1.5 HYPE; poolTested { id, feeBps, hook, launchpad, poolThinForSize, depthLowerBound }; decidingPool { id, roles, why }; poolsTested; poolsTruncated; checkedAt; hookFee { buyBps, sellBps } when the pool has a launch hook; liquidity { found, usdEstimate }; creator { launches }: how many tokens the same creator launched before this one; launchpad { result, hook, proof }: the launchpad of the pool tested, named only when proven ("Montra", "Boxa", "Kleos"; a verified contract name alone reads "<Name> (contract name)"), otherwise "hook not identified" or "no hook", a fact about origin, never a signal by itself; hookRisk { result }: what the hook of that pool can take, read on chain where readable: "launch fee window: up to N%, ends in M min", "hook tax: N% buy, M% sell" or "hook can tax up to N%", null when there is nothing to say; template { result, implementation, upgradeable }: "Montra template" when the token is a clone of that launchpad's token, "clone, template not identified", "upgradeable proxy" (its code can be replaced after the read) or "custom contract"; forcedTransfer { result, rolesTried, callsTried }: whether the declared owner or the creator could move or burn a buyer's tokens without approval in a simulation, trying only transferFrom without allowance and burn (other owner powers are not tried), "none found", "found: <reason>" or "not checked: <why>". A fact that could not be read says "not checked: <why>". Facts, not a verdict: Trnch runs no rug screen on this chain. No key needed.
Optional, after sending a swap built by trnch_buy or trnch_sell on Elysium (chainId 99901): report its hash. Returns { ok, txHash, chainId, status: "pending", meaning }, an acknowledgement only: it does not send, cancel or change the transaction. Nothing is credited on the call. A scheduled pass (every 2 minutes) reads the transaction on Elysium: sent by the key's wallet, a swap Trnch built for it, and the Trnch fee paid to the Trnch fee recipient in that same transaction. Only then is its volume counted in the swap stats of Elysium; there are no points or rewards on this chain. A hash that does not prove all of this counts nothing. Calling it twice with the same hash changes nothing. 10 calls per minute per key; 20 hashes at most awaiting settlement per wallet (429). 409 if the wallet has no Trnch account (sign in once on the site). Requires an API key (created by wallet signature), sent as Authorization: Bearer <key>.
| Argument | Type | Description |
|---|---|---|
| txHash* | string | Hash of the Elysium transaction you sent. |
{
"type": "object",
"required": [
"txHash"
],
"properties": {
"txHash": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$",
"description": "Hash of the Elysium transaction you sent."
}
},
"additionalProperties": false
}Quote any pair on Elysium across three routers (Uniswap, KyberSwap and LI.FI) without building a transaction. Returns the best amount out, already net of the Trnch fee, the router and the fee rate in basis points (feeBps). Native HYPE is the zero address. No API key needed for a quote; a transaction (trnch_buy, trnch_sell) needs one.
| Argument | Type | Description |
|---|---|---|
| fast | boolean | Return the first clean quote after about 250 ms instead of waiting for the best price. Default false. |
| tokenIn* | string | Token sold: a Elysium token address, or the zero address for HYPE. |
| amountIn* | string | Amount of tokenIn in its smallest unit (wei-style integer string). |
| slippage | number | Max slippage as a fraction (0.01 = 1%). Default 0.01. |
| tokenOut* | string | Token bought: a Elysium token address, or the zero address for HYPE. |
| decimalsIn | integer | Decimals of tokenIn. Default 18: set it for USDC (6) and other non-18 tokens. |
| decimalsOut | integer | Decimals of tokenOut. Default 18: set it for USDC (6) and other non-18 tokens. |
Step 2 of 2: send the message returned in step 1 and its signature; returns { key, prefix, wallet } with status 201. The key is shown once, store it. The wallet must hold 10 USDC or 0.15 HYPE on Elysium (402 otherwise); 3 keys max per wallet (409); 400 if the signature or message does not match.
| Argument | Type | Description |
|---|---|---|
| label | string | Optional name for the key, e.g. the agent name. |
| wallet* | string | Same wallet as in trnch_register_message. |
| message* | string | The message returned in step 1, unchanged. |
| signature* | string | personal_sign signature of message by wallet. |
{
"type": "object",
"required": [
"wallet",
"message",
"signature"
],
"properties": {
"label": {
"type": "string",
"maxLength": 24,
"description": "Optional name for the key, e.g. the agent name."
},
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Same wallet as in trnch_register_message."
},
"message": {
"type": "string",
"description": "The message returned in step 1, unchanged."
},
"signature": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]+$",
"description": "personal_sign signature of message by wallet."
}
},
"additionalProperties": false
}Step 1 of 2 to get an API key, no browser. Returns { message }: the exact text your wallet must sign with personal_sign (EIP-191). It is valid for 10 minutes and moves no funds.
| Argument | Type | Description |
|---|---|---|
| wallet* | string | The agent wallet that will trade (EOA or EIP-1271 smart wallet). |
{
"type": "object",
"required": [
"wallet"
],
"properties": {
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "The agent wallet that will trade (EOA or EIP-1271 smart wallet)."
}
},
"additionalProperties": false
}List the tokens a Elysium wallet holds in one call. Returns { wallet, truncated, partial, checked, tokens }: each token has address, symbol, name, balance { raw, decimals }, valueUsd when known, majorAsset, factsStatus and facts { sellTest, hookFee, liquidity, creator, launchpad, template, forcedTransfer } as in trnch_check, read for the 8 largest holdings that are not HYPE, WHYPE or USDC (others: factsStatus over_limit, call trnch_check). At most 100 tokens, largest first. Cached 60 s per wallet. Facts, not a verdict: Trnch runs no rug screen on this chain. No key needed.
| Argument | Type | Description |
|---|---|---|
| wallet* | string | Wallet address on Elysium (chainId 99901). |
{
"type": "object",
"required": [
"wallet"
],
"properties": {
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Wallet address on Elysium (chainId 99901)."
}
},
"additionalProperties": false
}Build a sell for USDC in one call: give token, and percent of the wallet balance (read on chain) or an exact amount. Quotes three routers and returns the best route as a transaction to sign. The Trnch fee is already deducted from the quote; the rate applied is returned as feeBps. Returns { router, feeBps, quote, approval, tx, chainId, from }: approval, when not null, has to be sent before tx, from the same wallet (chainId 99901). Nothing is sent by Trnch. Errors: 503 while the fee recipient is not configured on this chain (nothing is built), 404 no route, 429 rate or build limit (retry-after). Requires an API key (created by wallet signature), sent as Authorization: Bearer <key>.
| Argument | Type | Description |
|---|---|---|
| token* | string | Token to sell, as an address. |
| amount | string | Exact amount in token units, e.g. 1234.5. Capped at the balance. Use this or percent. |
| percent | number | Share of the wallet balance to sell, 100 = all. Use this or amount. |
| slippageBps | integer | Max slippage in basis points (100 = 1%). Default 100. |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Token to sell, as an address."
},
"amount": {
"type": "string",
"pattern": "^[0-9]+(\\.[0-9]+)?$",
"description": "Exact amount in token units, e.g. 1234.5. Capped at the balance. Use this or percent."
},
"percent": {
"type": "number",
"maximum": 100,
"description": "Share of the wallet balance to sell, 100 = all. Use this or amount.",
"exclusiveMinimum": 0
},
"slippageBps": {
"type": "integer",
"maximum": 5000,
"minimum": 10,
"description": "Max slippage in basis points (100 = 1%). Default 100."
}
},
"additionalProperties": false
}Read the facts of Trnch on Elysium: chainId 99901, gas HYPE, reference stable USDC, the three routers (Uniswap, KyberSwap and LI.FI), the bot fee grid in percent, and activity { windows [{ window (24h, 7d, 30d), volumeUsd, swaps, traders }] } counted from swaps made through Trnch on this chain (null while hidden or unavailable). No Heat and no rug counts: Trnch runs no rug screen on this chain. No key needed.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}The tokens of the Elysium pools with the most trading volume over the last 24 hours, in the order GeckoTerminal lists them (the Top volume list of Trade on Trnch), with a link to trade each. HYPE, WHYPE and USDC are left out. Returns { tokens [{ rank, address, symbol, name, logoUrl, trade }] }, no volume figures. A volume ranking, not a screen, a verdict or a recommendation: Trnch runs no rug screen on this chain. No key needed.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many tokens (default 10). |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many tokens (default 10)."
}
},
"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 12, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.
| Argument | Type | Description |
|---|---|---|
| token* | string | Token contract address on Elysium (chainId 99901). |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Token contract address on Elysium (chainId 99901)."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"tokenIn",
"tokenOut",
"amountIn"
],
"properties": {
"fast": {
"type": "boolean",
"description": "Return the first clean quote after about 250 ms instead of waiting for the best price. Default false."
},
"tokenIn": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Token sold: a Elysium token address, or the zero address for HYPE."
},
"amountIn": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Amount of tokenIn in its smallest unit (wei-style integer string)."
},
"slippage": {
"type": "number",
"maximum": 0.5,
"minimum": 0.001,
"description": "Max slippage as a fraction (0.01 = 1%). Default 0.01."
},
"tokenOut": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Token bought: a Elysium token address, or the zero address for HYPE."
},
"decimalsIn": {
"type": "integer",
"maximum": 36,
"minimum": 0,
"description": "Decimals of tokenIn. Default 18: set it for USDC (6) and other non-18 tokens."
},
"decimalsOut": {
"type": "integer",
"maximum": 36,
"minimum": 0,
"description": "Decimals of tokenOut. Default 18: set it for USDC (6) and other non-18 tokens."
}
},
"additionalProperties": false
}