Skip to content
Humans & Agents · vortragents.com

DOCS

VORTR DOCS

Vortr is an agent-first, non-custodial DEX on Base, with swaps routed through 0x. The swap runs in your agent over the Vortr MCP — the website is a read-only showcase, and you sign with your own wallet. This page documents both — start with For Humans below, or jump to For Agents.

[ 01FOR HUMANS ]

DRIVE IT WITH YOUR AGENT.

Overview

What Vortr is

Vortr is an agent-first, non-custodial swap on Base. It prices and builds a trade through the 0x aggregator; you (or your agent) sign it with your own wallet. Vortr never holds your funds — you sign every trade yourself, and settlement happens directly on Base.

The swap executes in your agent, over the Vortr MCP — not a browser wallet form. This page is a read-only showcase: live quotes, the price chart, and the real Base-swaps feed.

Supported Base assets include native ETH, WETH, USDC, USDT, DAI, cbBTC, cbETH, USDe, and AERO.

Walkthrough

How to swap

A human swaps by driving Vortr through an agent (Claude, Hermes, any MCP client). Add the connector once, then ask in plain language — “swap 1000 USDC for WETH on Base.”

  1. 1
    Add the Vortr MCP to your agent — a one-line remote connector, no install, no secret. See For Agents → Add it →
  2. 2
    Ask for a swap in plain language. The agent calls get_quotebuild_swap and shows you the rate, minimum received, price impact, and the real route.
  3. 3
    Sign it. Your agent signs the prepared transaction with your own wallet — via the @vortr/wallet signer or your agent's wallet. Vortr never signs; that's the only place anything is ever signed.

New to MCP? See the agent setup →

Data sources

The live data is real

Everything on the swap showcase is real on-chain / market data, not mock numbers:

  • Prices, route & firm calldata0x aggregator
  • Price chart (OHLCV) + the live Base-swaps feedGeckoTerminal
  • USD valuesDefiLlama
FAQ

Common questions

What does non-custodial mean here?
Your keys, your funds. Vortr never holds, touches, or rehypothecates your assets — it only prices and prepares a transaction that you (or your agent) sign. No deposit, no withdrawal, no Vortr account.
Why is there no "connect wallet" on the site?
Vortr is agent-first. The web is a read-only showcase — live quotes, the price chart, and the real Base-swaps feed. The actual swap runs in your agent over the Vortr MCP, signed by your own wallet (or the @vortr/wallet signer), so the website never needs to touch a wallet.
What is gas paid in?
Gas is paid in ETH on Base. Base is a low-fee Coinbase L2, so network fees are typically a few cents.
How does slippage protect me?
Your quote sets a minimum-received floor (default tolerance 0.25%, editable). If the price moves past that floor before your trade lands, the swap reverts instead of filling at a worse rate.
Is the "Live swaps" feed real?
Yes — it shows real on-chain Base swaps (via GeckoTerminal). One honest caveat: on-chain data cannot certify whether a given swap came from an agent or a human, so the feed does not claim to make that distinction.
[ 02FOR AGENTS ]

THE API IS THE UI.

Interface

The Vortr MCP

The Vortr MCP exposes four tools (server name vortr). Quotes and firm calldata come from 0x; everything an agent needs to price and build a swap lives here. Reach them the easy way — a remote connector URL, no install, no keys, no secret (below) — or via a local stdio server. Vortr never signs.

search_tokens
search_tokens(query, chain?="base")

Returns Base token metadata — address, symbol, decimals.

get_quote
get_quote(sellToken, buyToken, amount, taker, slippageBps?)

A price quote: buyAmount, minBuyAmount, price impact, route. amount is in base units (stringified integer — 1 USDC = "1000000"). Exact-input only.

get_portfolio
get_portfolio(address)

The Base token set for an address (portfolio scaffold). Balances are read by your agent's own wallet, not over MCP.

build_swap
build_swap(sellToken, buyToken, amount, taker, slippageBps?)

Returns { payload, summary }. payload is the ERC-5792 wallet_sendCalls batch (approve + swap) your agent signs; summary carries taker + expiresAt. Vortr never signs.

Your agent signs. build_swap returns the ERC-5792 payload — sign + send it with your agent's own wallet, or run @vortr/wallet locally for autonomous signing. Vortr never holds keys and never signs.

Connect

Remote connector — no install

The recommended way in. Vortr is a remote MCP over Streamable HTTP — add it as a custom connector in Claude (web / desktop) or any client that takes a remote MCP URL. No install, no API key, no secret — just paste:

remote MCP connector URL
https://www.vortragents.com/mcp

In Claude: Settings → Connectors → Add custom connector, paste the URL, and the four tools (search_tokens, get_quote, get_portfolio, build_swap) appear.

The connector itself never signs — that is the non-custodial design (a hosted server can never touch your wallet). build_swap returns the ERC-5792 payload for your agent to sign + send — or run @vortr/wallet locally for autonomous signing (key in env, never in chat). No Vortr secret either way.

Flow

Agent recipe: a swap end to end

  1. 1
    vortr.search_tokens("USDC") / search_tokens("WETH") → the Base token addresses.
  2. 2
    vortr.get_quote(sellToken, buyToken, amount[BASE UNITS], taker) → price + route.
  3. 3
    vortr.build_swap(...same...) { payload, summary }.
  4. 4
    Sign + send the returned payload with your agent's wallet (or via @vortr/wallet) — Vortr never signs. If summary.expiresAt has passed, call build_swap again first.
vortr.mcp · swap recipe
# A swap with Vortr's MCP. Vortr prices & builds; your agent signs.

vortr.search_tokens("USDC")          # → Base token addresses
vortr.search_tokens("WETH")

vortr.get_quote(
  sellToken="USDC", buyToken="WETH",
  amount="1000000",                  # BASE UNITS — 1 USDC = "1000000"
  taker=YOUR_ADDRESS,
)                                    # → buyAmount, minBuyAmount, route

{ payload, summary } = vortr.build_swap(...same args...)
# payload = ERC-5792 wallet_sendCalls (approve + swap) — sign + send with your own wallet.

# Autonomous signing — run @vortr/wallet locally (VORTR_SIGNER_KEY in env):
taker   = wallet_address()
pending = prepare_swap({ sellToken, buyToken, usd|amount })
result  = execute_swap({ confirm_token: pending.confirm_token })
# Vortr never signs — keys stay in your env, never in chat.
Autonomous signing — @vortr/wallet

Run @vortr/wallet (first-party local signer) alongside the connector for hands-off signing. Set VORTR_SIGNER_KEY in env (never in chat). Flow: wallet_address (get taker) → prepare_swap { sellToken, buyToken, usd|amount } execute_swap { confirm_token }swap_status { hash }.prepare_swap fetches its own calldata — the hosted Vortr stays non-custodial. It also exposes search_tokens + get_quote, so it can be your only MCP — no separate connector needed.

install · @vortr/wallet (published on npm; npx auto-fetches)
# Claude Code
claude mcp add --scope user vortr -e VORTR_SIGNER_KEY=0x… -- npx -y @vortr/wallet

# Hermes — ~/.hermes/config.yaml
mcp_servers:
  vortr:
    command: "npx"
    args: ["-y", "@vortr/wallet"]
    env: { VORTR_SIGNER_KEY: "0x…" }
    connect_timeout: 60
Add it

Add Vortr to your agent — no secret

Point your runtime at the remote connector — that is the whole setup. Search, quote, and build through Vortr; your agent signs the returned payload (or @vortr/wallet). No @vortr/mcp install, no API key, no secret.

Claude Code

terminal
# Add Vortr — the remote connector. No install, no secret.
claude mcp add --transport http vortr https://www.vortragents.com/mcp

--transport http registers the hosted connector directly. To sign, execute the payload that build_swap returns with your agent's wallet (or run @vortr/wallet for autonomous signing — see the recipe above).

Hermes Agent (NousResearch)

Hermes speaks HTTP MCP directly — add the connector by URL under mcp_servers in ~/.hermes/config.yaml and restart Hermes. No mcp-remote bridge, still no secret:

~/.hermes/config.yaml
# ~/.hermes/config.yaml — Hermes speaks HTTP MCP directly,
# so add the connector by URL. No bridge, no Vortr secret needed.
mcp_servers:
  vortr:
    url: "https://www.vortragents.com/mcp"

Self-host (advanced): running your own Vortr deployment? Swap the connector for the @vortr/mcp stdio package with your own VORTR_API_BASE + VORTR_API_SECRET (those gate your 0x key). See /skill.md.

Machine entry-points: /llms.txt and /skill.md (this same guide as a drop-in Claude Code / Hermes skill).