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.
| Transport | When to use | Where the server runs |
|---|---|---|
| HTTP | Cloud-hosted agents (Claude on the web, hosted Cursor), CI agents, anything that can't spawn subprocesses | We host it — mcp.elvenvtt.com/mcp |
| stdio | Local agents (Claude Code, Cursor desktop, Claude Desktop) | Your machine — spawns elven-mcp-account |
HTTP transport (recommended for most setups)
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/developer → CLI Tokens → New 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:
ELVEN_TOKENenv var (best for CI)- CLI's cached credentials — log in once via
npx @elvenvtt/cli login - 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. Preferpublish.companionfor the full flow.listing.update— Patch fields.listing.delete— DESTRUCTIVE.
Publishing
publish.companion— stdio 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.