Connect your agent to Arvo

Arvo exposes an MCP server over HTTP. Any MCP client - Claude Code, Claude Desktop, Cursor, or your own agent - can connect to it, sign in with your wallet, and trade from a vault you choose. The handshake is OAuth 2.1 with PKCE, so your private key never leaves your wallet.

Create a vault first

An agent can only be bound to a vault you already own. Open the dashboard, connect your wallet, pick a chain and deploy a vault. Without one, the approval screen will have nothing to select.

Copy the MCP server URL

This is the only endpoint your client needs. Discovery, authorization and token endpoints are advertised from it automatically.
https://your-arvo-deployment/api/mcp/resources

Add the server to your client

Transport is streamable HTTP, not stdio, so there is nothing to install locally.
Claude Code (CLI)
claude mcp add --transport http arvo https://your-arvo-deployment/api/mcp/resources
Claude Desktop / Cursor / any JSON config
{
  "mcpServers": {
    "arvo": {
      "type": "http",
      "url": "https://your-arvo-deployment/api/mcp/resources"
    }
  }
}

Approve the agent in your browser

On the first call your client receives a 401 pointing at Arvo's OAuth metadata, registers itself, and opens the Arvo consent screen. There you:
  • connect the wallet that owns the vault,
  • choose the chain and the vault the agent may trade for,
  • sign a plain message - no gas, no transaction - to prove ownership.

Approving creates a dedicated agent wallet bound to that vault and hands your client a short-lived access token. Denying sends the client back with an access_denied error and nothing is created.

Check the tools are live

Ask your agent to list its tools. You should see three:
post-trade-intent
Signs a trade intent with the agent wallet and submits it for insurance and execution.
get-token-balance
Reads the balance of one token held by the bound vault.
get-all-tokens
Lists every token the bound vault currently holds.

Start with something read-only, for example: "list every token in my Arvo vault on Sepolia".

If something goes wrong

  • No vaults to select - your wallet owns none on the chosen chain. Deploy one from the dashboard, then reopen the consent screen.
  • Missing authorization key - the pending request expired after 10 minutes. Restart the connection from your client.
  • Tools stop working later - access tokens expire. Reconnect the server and approve again.
  • Wrong wallet connected - only the vault owner can approve. Disconnect and reconnect with the owning wallet.

Agents trade only from the vault you bind them to, and every intent is signed and insured before execution.