Daggs

Developers

API and MCP

REST endpoints, MCP server and WebMCP for agents.

Quote, build and track token swaps and bridges across EVM, Solana and Bitcoin, with routes from LI.FI, Relay, Mayan, NEAR Intents, Jupiter and Titan. Public, no account or API key.

When to use it

Use Daggs when a user wants to move or convert tokens they already hold in their own wallet:

  • Bridge a token to another chain, e.g. 100 USDC from Arbitrum to Base.
  • Swap tokens on one chain, e.g. ETH to USDC on Base or SOL to JUP.
  • Get into or out of Bitcoin without an exchange account.
  • Compare routes for a trade by amount received, total cost and time.
  • Track a cross-chain transfer that is already in flight.

Not for fiat on- or off-ramps, custody, limit or recurring orders, NFTs, lending, staking or market data. Daggs is non-custodial: it never holds keys or funds, and every transaction is signed in a wallet.

Authentication and limits

No authentication. Every endpoint is public and rate-limited per IP. Each group below has its own limit. Over the limit you get 429 with a retry-after header.

EndpointsRequests / min
MCP server (/mcp)60
Quotes, builds and broadcasts (POST /api/bridge/*) and token search60
Other reads, such as chains and transfer status (GET /api/bridge/*)300

MCP server

Streamable HTTP at https://daggs.xyz/mcp (stateless JSON-RPC). Add it to Claude Code:

claude mcp add --transport http daggs https://daggs.xyz/mcp
  • list_chains: Chains you can swap or bridge on (EVM, Solana, Bitcoin).
  • search_tokens: Find a token on a chain by symbol, name or address.
  • get_quote: Compare routes for a trade. Returns a signUrl: daggs.xyz with the trade filled in, for the user to review and sign.
  • build_transaction: For agents with their own wallet: unsigned EVM approvals and transaction, a base64 Solana transaction or a Bitcoin PSBT.
  • send_transaction: Broadcast a transaction the agent signed (EVM hex, Solana base64, Bitcoin PSBT or raw tx).
  • get_transfer_status: PENDING, DONE (amount received and destination transaction) or FAILED.

Typical flow: get_quote, share the signUrl with the user, then poll get_transfer_status. Agents with their own wallet call build_transaction, sign, and send_transaction. Always tell the user the amount, the route and the fees before they sign.

Example: quote 100 USDC from Arbitrum to Base.

curl https://daggs.xyz/mcp \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0", "id": 1, "method": "tools/call",
    "params": {
      "name": "get_quote",
      "arguments": { "fromChain": "arbitrum", "fromToken": "USDC", "toChain": "base", "toToken": "USDC", "amount": "100" }
    }
  }'

In the browser (WebMCP)

daggs.xyz registers list_chains, search_tokens, get_quote and get_transfer_status with document.modelContext on every page. The home page adds fill_swap_form, which fills the swap form so the user reviews the routes and signs in their own wallet.

REST API

The OpenAPI spec lists every public endpoint with its parameters and responses.

  • GET /api/bridge/chains: Supported chains.
  • GET /api/bridge/token-search?q=usdc: Search tokens on every chain.
  • POST /api/bridge/routes: Quote routes. fromAmount is in the token's smallest units; optional fromAddress, toAddress, slippage (0.005 = 0.5%) and order (CHEAPEST or FASTEST).
  • POST /api/bridge/build: Unsigned transactions for one step of a quoted route (route, step, fromAddress).
  • GET /api/bridge/status: Track a transfer. Relay, NEAR Intents and Mayan routes use /relay/status, /near/status and /mayan/status; the build response's statusHint says which.

Example: the same quote over REST (amounts in smallest units, so 100 USDC is 100000000).

curl https://daggs.xyz/api/bridge/routes \
  -H 'content-type: application/json' \
  -d '{
    "fromChainId": 42161,
    "toChainId": 8453,
    "fromTokenAddress": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
    "toTokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "fromAmount": "100000000"
  }'

More

Non-custodial — you sign in your own wallet. Daggs never holds your funds. @daggsxyz · FAQ · Terms of Service · Privacy Policy · support@daggs.xyz