Connect an agent

dvt is built agent-first: a dashboard is a versioned JSON spec, and the same API that powers the app is exposed to AI agents as an MCP server. Point Claude at it and you can design, build, and revise dashboards against your real warehouse data — by describing what you want.

Connect with the Claude Code plugin

The quickest path is the dvt plugin for Claude Code. It bundles the dashboard-spec authoring skill and the MCP client, so a fresh install knows both how to write a dvt spec and how to apply it against your dvt instance. The plugin carries no key and no entitlement logic — your access is governed entirely by the key you connect with. In any Claude Code session:

/plugin marketplace add getdvt/claude-dvt
/plugin install dvt@claude-dvt

Restart Claude Code (plugins don't hot-load), then run /dvt:connect and follow the prompts: choose dvt Gallery (hosted) and paste your dvt_live_… key when asked. It registers the connection, then has you restart Claude Code once more so the new MCP server loads. After that restart, re-run /dvt:connect (or just ask it to list your dashboards) to verify — then ask the agent to build one.

Get an API key

Mint a key in the app at app.dvt.dev/app/api-keys — create a key, copy the dvt_live_… value (it's shown once; dvt stores only its hash), and paste it into /dvt:connect. The agent acts as the key's owner: same role, same org, same permissions. There is no separate agent permission tier — if you can't see a dashboard, neither can your agent.

Treat dvt_live_* keys like passwords: paste them only into the plugin's /dvt:connect prompt (Claude Code stores them at user scope, never in your repo), or into an environment variable or secret manager — never source control. Revoke a leaked key from the same api-keys page.

Manual setup (advanced)

The plugin is just a thin client over an open MCP endpoint, so you can wire dvt into any MCP client yourself. The server speaks streamable HTTP at https://mcp.dvt.dev/mcp, authenticated with the same Authorization: Bearer dvt_live_… key.

Register it directly in Claude Code without the plugin:

claude mcp add --transport http --scope user dvt https://mcp.dvt.dev/mcp \
  --header "Authorization: Bearer dvt_live_..."

--scope user registers the server for every project — without it the add lands in the current directory's local scope and won't load elsewhere.

Or, for any client configured with a JSON file (e.g. a project-level .mcp.json):

{
  "mcpServers": {
    "dvt": {
      "type": "http",
      "url": "https://mcp.dvt.dev/mcp",
      "headers": {
        "Authorization": "Bearer dvt_live_..."
      }
    }
  }
}

What agents can do

The tool surface is derived from the same OpenAPI contract as the REST API — see the API reference for every operation and schema, or fetch the raw contract.

Try it

Once connected, ask your agent something like:

Build me a revenue dashboard from the orders table —
monthly trend, top 10 customers, and AOV by region.