Skip to main content

MCP Setup

Wire an AI agent up to manage your Elven creator account via the Model Context Protocol. The agent gets 24 tools spanning listings, posts, drops, follows, analytics, publishing, seller onboarding, and token listing — same verbs as the CLI.

Two transports — pick based on where your agent runs.

TransportWhen to useWhere the server runs
HTTPCloud-hosted agents (Claude on the web, hosted Cursor), CI agents, anything that can't spawn subprocessesWe host it — mcp.elvenvtt.com/mcp
stdioLocal agents (Claude Code, Cursor desktop, Claude Desktop)Your machine — spawns elven-mcp-account

No install. Point your agent at the hosted endpoint, pass your token in Authorization.

Claude Code

In your project's .mcp.json:

{
"mcpServers": {
"elven-account": {
"type": "http",
"url": "https://mcp.elvenvtt.com/mcp",
"headers": {
"Authorization": "Bearer el_pat_..."
}
}
}
}

Cursor / Claude Desktop

Same config shape — refer to your agent's docs for where the MCP config file lives. The block above works in any client that supports HTTP MCP.

How auth works

Every request re-verifies the token — stateless. No sessions, no cookies. Pass a personal access token (el_pat_...) in the Authorization: Bearer header. JWTs work too but PATs are recommended for non-interactive agents — they don't expire as eagerly.

Generate a token at app.elvenvtt.com/developerCLI TokensNew Token.

What's NOT available over HTTP

The HTTP transport intentionally omits publish.companion — that tool reads a local .elven.json from a project directory, which doesn't exist in a Worker context. Use the stdio transport (or just run elven publish from a terminal) when you need that flow.

stdio transport (local agents)

npm install -g @elvenvtt/mcp-account

Then add to your agent's MCP config:

{
"mcpServers": {
"elven-account": {
"command": "elven-mcp-account"
}
}
}

The stdio server pulls credentials in this order:

  1. ELVEN_TOKEN env var (best for CI)
  2. CLI's cached credentials — log in once via npx @elvenvtt/cli login
  3. Clear error if neither is set

With env vars:

{
"mcpServers": {
"elven-account": {
"command": "elven-mcp-account",
"env": { "ELVEN_TOKEN": "el_pat_..." }
}
}
}

Tools

24 tools available via stdio; 23 via HTTP (no publish.companion).

Identity

  • whoami — Call FIRST in any session to confirm which account you're acting on.

Listings

  • listing.list — Browse public listings.
  • listing.mine — Your listings including drafts.
  • listing.show — Full detail for one id.
  • listing.create — Create a new listing. Prefer publish.companion for the full flow.
  • listing.update — Patch fields.
  • listing.deleteDESTRUCTIVE.

Publishing

  • publish.companionstdio only. Build + upload + sync from a local project dir.
  • publish.uploadFile — Single-file upload to an existing listing's CDN prefix.

Posts

  • post.new, post.list, post.show, post.update, post.delete

Drops

  • drop.create, drop.list, drop.show, drop.update, drop.delete

Followers

  • followers.count — Public follower count.
  • followers.following — Creators you follow.

Analytics

  • analytics.overview — Followers + subscribers + drops + activity.
  • analytics.sales — Sales totals + top listings + recent purchases.

Seller

  • seller.status — Stripe Connect status.
  • seller.onboard — Get an onboarding URL.
  • seller.dashboardUrl — Stripe Dashboard login URL.

Tokens

  • tokens.list — Your PATs (metadata only — create/revoke intentionally goes through the CLI or web UI).

Each tool's description (the part the agent reads to decide when to call it) includes usage hints, destructive-operation warnings, and disambiguation notes ("prefer X over Y when…"). See the tool source for the full text.

Same backend as the CLI

The MCP server uses @elvenvtt/api under the hood — same auth, same /v1/* HTTP contract, same backend. If something works in elven, it works here.