Skip to main content
The Venice MCP Server is the official Model Context Protocol server for Venice. It exposes the Venice API (chat, image, video, audio, music, embeddings, web augment, characters, crypto RPC, and TEE attestation) plus account operations (billing and API keys) as 45 tools that any MCP-compatible agent can call.

GitHub: veniceai/venice-mcp-server

Published as @veniceai/mcp-server on npm. MIT licensed.

45 Tools

Every Venice modality plus billing, API-key, and TEE tooling

Any MCP Host

Claude Desktop, Cursor, ChatGPT, LM Studio, Continue, and more

Wallet Auth (Optional)

Bring an API key, or pay per call with a SIWE-signed wallet via x402

Quick start

1

Get a Venice API key

Generate one from venice.ai/settings/api. See the API key guide for step-by-step instructions.
2

Add Venice to your MCP host config

Drop this into your MCP host’s config file:
Common config paths:
3

Restart your MCP host

Your agent now has chat, image, video, music, TTS, ASR, and 39 more Venice tools available.
Most MCP hosts only pass environment variables that are explicitly listed in the env block. System-level env vars are not inherited. If you see 402 errors with an API key set, double-check that VENICE_API_KEY is inside env in your config.

What you get

45 tools spanning every Venice modality plus account operations, 3 resources (venice://models, venice://styles, venice://voices), and 3 prompt templates (uncensored research, NSFW creative writing, image style explorer). Every tool declares explicit readOnlyHint, destructiveHint, idempotentHint, and openWorldHint annotations, so hosts can run lookups without prompting and ask for confirmation before anything destructive, such as media cleanup or a crypto relay.

Chat & embeddings

Image

Video

Audio (TTS / ASR)

Music

Web augment

Catalog & characters

TEE attestation

Both TEE tools return provider evidence only: they do not verify it, and they do not encrypt chat. Verify the echoed nonce, debug-mode state, and signing-key binding yourself before trusting a TEE model; see Verifying TEE attestation. enable_e2ee is rejected by this server.

Crypto

Transaction broadcasts (eth_sendRawTransaction, eth_sendUserOperation, Solana sendTransaction, Starknet writes) must be sent as single requests with an idempotency_key, and the same key must be reused on retry.

Billing (admin keys)

The billing tools require an ADMIN API key. Inference keys cannot call these endpoints, and the server fails locally instead of falling back to a wallet token.

API keys

x402 wallet helpers

Only relevant if you authenticate with a wallet via x402 instead of an API key.

Configuration

The server is configured entirely through environment variables.

Models and requests

If both VENICE_API_KEY and VENICE_SIWX_TOKEN are set, the API key wins on most calls; see Auth-mode coverage for the exceptions.

Response size limits

Generated media is buffered and embedded in the MCP result as base64, so each modality has a byte ceiling. An oversized image or TTS result is discarded with an error. An oversized video or music result stays queued, so you can call the status tool again with the same queue ID after raising the limit.

HTTP server

Only relevant in the Streamable HTTP deployment.

Media generation behavior

  • Completed media can be bytes or a URL. Video and music jobs return embedded MP4/audio resources, or JSON with a download_url that comes back as a resource link. Download that link first, then call venice_video_complete or venice_music_complete; media cleanup is never applied to a download_url result because the link stops working once the file is deleted.
  • Some models only return a URL at queue time. For VPS and Grok Imagine Private models, capture the download_url returned by venice_video_generate and pass it into venice_video_status; a COMPLETED retrieve without an inline URL still yields a usable link.
  • Prompt enhancement is reported back. When enhance_prompt is applied, image generate, edit, and multi-edit results include the URL-decoded prompt Venice returned.
  • ASR paging is charged once. Transcripts longer than 8,000 characters, or with more timestamps than fit on one page (200 per array by default, up to 500 with timestamp_limit), return a result_handle with the first page. Request later pages with that handle. Handles live in memory per MCP session for 10 minutes, and only the 16 most recent are kept.
  • Seedance consent is not a policy bypass. Current public Seedance models may reject media containing detectable persons outright. Where a needs_consent response is returned, the three consents.seedance flags are legal attestations: set them to true only after the user explicitly confirms each statement.

x402 wallet mode

Venice supports authenticating with a Sign-In-With-X wallet token backed by prepaid USDC credit on Base or Solana, in addition to the normal API key flow. No email, phone, or KYC required: your wallet is the only identity.
The MCP server forwards VENICE_SIWX_TOKEN in the SIGN-IN-WITH-X header on every Venice API call. The server never sees your private key. Wallet signing and USDC top-up authorizations happen in your own wallet. Minimum top-up is $5 USD. Minimum balance to call inference is $0.10. Once topped up, calls are sub-100ms because settlement happens off-chain on a fast credit account.
Wallets linked to a Venice account with DIEM staked consume from the staking balance instead of USDC credits, so no top-up is needed.
Venice does not accept payment headers on inference routes, so this server never sends one. PAYMENT-SIGNATURE belongs only to /x402/top-up, and the top-up helper discovers requirements without submitting a payment.

Auth-mode coverage

Some endpoints accept only one auth mode: When both credentials are set, the API key is used for every authenticated call except venice_x402_balance and venice_x402_transactions, which always send the wallet token.

Self-hosting (Streamable HTTP)

For team or workspace deployments, run the MCP server over HTTP instead of stdio:
The server is now available at http://localhost:3333/mcp. HTTP clients must send Authorization: Bearer <VENICE_MCP_AUTH_TOKEN> and should create new sessions without an mcp-session-id header, then reuse the server-issued session ID.
/mcp is a credential-backed tool execution endpoint: callers can spend the configured Venice API key or x402 balance. When HTTP mode binds outside loopback, startup fails unless VENICE_MCP_AUTH_TOKEN is set, or VENICE_MCP_ALLOW_UNAUTHENTICATED_HTTP=1 is set behind a trusted authenticated proxy. For production, pin the npm package version explicitly instead of relying on latest.

Resources

GitHub

Source code, issues, and releases

npm

@veniceai/mcp-server

Venice Skills

Companion skills that teach agents how to use these tools

MCP Spec

Learn more about the Model Context Protocol