{
  "schema_version": "v1",
  "name_for_human": "Vurto Swap",
  "name_for_model": "vurto_swap",
  "description_for_human": "Quote, build, and execute EVM token swaps across 9 chains (Ethereum, Optimism, BNB Chain, Gnosis, Polygon, Base, Arbitrum One, Avalanche, Unichain) at the best net price across Velora, KyberSwap, 1inch, OpenOcean, and CoW Protocol.",
  "description_for_model": "Use this plugin to quote and execute EVM token swaps. POST /v1/quote to compare ranked routes across providers (Velora, KyberSwap, 1inch, OpenOcean, CoW Protocol), ranked by net value after gas and fee, not raw output. POST /v1/swap builds a signable/sendable plan from a quote (or quotes and builds the best route in one call). For a basket, POST /v1/multi-quote quotes N input tokens funding M output tokens in a single atomic transaction: inputLegs[] is what you sell, outputLegs[] is what you want back expressed as outputPercent integers that must sum to exactly 100, and the waterfall allocation deciding which input finances which output cannot be reproduced with separate POST /v1/quote calls. POST /v1/multi-quote/build turns that same request into the executable transaction; there is no quoteId handoff for baskets, so it always re-quotes the whole basket fresh, and its approve steps target the VurtoSwapRouter address rather than each leg's provider. CoW is never a candidate leg of a basket, because an off-chain signature cannot settle inside one atomic transaction. Building, submitting signed CoW orders, refreshing a plan, requesting an ETH-flow refund, and reading/writing execution history all require a machine credential, obtained out of band via POST /api/credentials (EIP-191 signature proving wallet ownership) and sent as 'Authorization: Bearer <token>'. Read-only endpoints (health, chains, tokens, token, balances, quote, multi-quote) work without a credential but quotes are then indicative-only and cannot be built. All token amounts are integer strings in the token's raw smallest unit (wei-like) unless you pass a human decimal via 'amount' instead of 'amountRaw'. The agent must sign and send built transactions onchain itself, this API never holds funds or private keys, and rejects any request payload that looks like one (private key, seed phrase, mnemonic).",
  "auth": {
    "type": "none"
  },
  "api": {
    "type": "openapi",
    "url": "https://swap.vurto.cc/openapi.json"
  },
  "logo_url": "https://swap.vurto.cc/vurto/vurto-512.png",
  "contact_email": "security@vurto.cc",
  "legal_info_url": "https://vurto.cc/"
}
