Wagyu
Swap crypto across chains, including Monero (XMR): quote, create and track swaps.
Should I use this
Quality & Safety
Findings (3)
- LOWin list_chains
- LOWin get_quote
- LOWin get_swap
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"wagyu": {
"url": "https://mcp.wagyu.xyz"
}
}
}Remote endpoints
https://mcp.wagyu.xyzstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟢list_chains
Chains available right now, which ids can be a source or a destination, and featured tokens.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_tokens(direction, chainId, query, limit, offset)
Find a token address and decimals by symbol, name or address.
Input Schema
{
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": [
"from",
"to"
],
"description": "\"from\" = you send it, \"to\" = you receive it."
},
"chainId": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Chain id from list_chains."
},
"query": {
"description": "Symbol, name or address, e.g. \"USDC\".",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"direction"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_quote(fromChainId, fromToken, toChainId, toToken, amount, ...)
Estimate a swap. side "from" (default) quotes spending `amount`; side "to" quotes receiving `amount`. A quote is an estimate, not a funding instruction.
Input Schema
{
"type": "object",
"properties": {
"fromChainId": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Chain id from list_chains."
},
"fromToken": {
"type": "string",
"minLength": 1,
"description": "Token address from search_tokens, or \"native\" for the chain coin."
},
"toChainId": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Chain id from list_chains."
},
"toToken": {
"type": "string",
"minLength": 1,
"description": "Token address from search_tokens, or \"native\" for the chain coin."
},
"amount": {
"type": "string",
"pattern": "^\\d+(\\.\\d+)?$",
"description": "Human decimal amount, e.g. \"0.5\". Not atomic units."
},
"side": {
"type": "string",
"enum": [
"from",
"to"
]
},
"toAddress": {
"description": "Recipient address; improves the estimate.",
"type": "string"
}
},
"required": [
"fromChainId",
"fromToken",
"toChainId",
"toToken",
"amount"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_swap(fromChainId, fromToken, toChainId, toToken, amount, ...)
Create a durable order that spends `amount` of fromToken. Returns the deposit address and exact amount to send. Confirm with the user first. Never retry after a timeout or error: another call creates another order.
Input Schema
{
"type": "object",
"properties": {
"fromChainId": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Chain id from list_chains."
},
"fromToken": {
"type": "string",
"minLength": 1,
"description": "Token address from search_tokens, or \"native\" for the chain coin."
},
"toChainId": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Chain id from list_chains."
},
"toToken": {
"type": "string",
"minLength": 1,
"description": "Token address from search_tokens, or \"native\" for the chain coin."
},
"amount": {
"type": "string",
"pattern": "^\\d+(\\.\\d+)?$",
"description": "Human decimal amount, e.g. \"0.5\". Not atomic units."
},
"toAddress": {
"type": "string",
"minLength": 1,
"description": "Recipient address on toChainId."
},
"refundAddress": {
"description": "Only for a native-coin source such as XMR or TRX; token sources refund to the sender.",
"type": "string"
}
},
"required": [
"fromChainId",
"fromToken",
"toChainId",
"toToken",
"amount",
"toAddress"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_swap(orderId, sessionId)
Current status and customerState of an order. Amounts are atomic; *Decimals fields give scale.
Input Schema
{
"type": "object",
"properties": {
"orderId": {
"type": "string",
"minLength": 1
},
"sessionId": {
"type": "string",
"minLength": 1,
"description": "The sessionId create_swap returned."
}
},
"required": [
"orderId",
"sessionId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡set_refund_address(orderId, sessionId, refundAddress)
Only when get_swap shows customerState { kind: "action_required", action: "refund_address" }. Saves one immutable destination; it does not start a transfer by itself.
Input Schema
{
"type": "object",
"properties": {
"orderId": {
"type": "string",
"minLength": 1
},
"sessionId": {
"type": "string",
"minLength": 1,
"description": "The sessionId create_swap returned."
},
"refundAddress": {
"type": "string",
"minLength": 1,
"maxLength": 256
}
},
"required": [
"orderId",
"sessionId",
"refundAddress"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence