carpe-diem-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CARPE_API_KEY | No | Carpe Diem API key (cdm_…). Enables account-billed paid tools; without credentials only free tools work. | |
| CARPE_MCP_HOST | No | HTTP mode bind host. Defaults to 127.0.0.1; any non-local host requires CARPE_MCP_AUTH_TOKEN. | |
| CARPE_READ_ONLY | No | Set to 1 to remove every tool that can spend or change anything, leaving free tools only. Default: 0. | |
| CARPE_STATE_DIR | No | Directory for persisted x402 spend state. Default: ~/.carpe-mcp | |
| CARPE_OUTPUT_DIR | No | Directory where media files are written. | |
| CARPE_X402_RPC_URL | No | RPC URL used to read the USDC permit nonce and balance. Default: https://mainnet.base.org | |
| CARPE_DEFAULT_ROUTE | No | Default API surface: carpe (/v1) or router (/router). Default: carpe. | |
| CARPE_MAX_SPEND_USD | No | Maximum session spend in USD for the spend guard. Default: 5. Set 0 to disable. | |
| CARPE_MCP_AUTH_TOKEN | No | Bearer token required for HTTP mode when CARPE_MCP_HOST is not localhost. Must be at least 16 characters. | |
| CARPE_HTTP_TIMEOUT_MS | No | HTTP timeout in milliseconds. Default: 120000. | |
| CARPE_MAX_MEDIA_BYTES | No | Maximum media download size in bytes. Default: 32 MiB. | |
| CARPE_MAX_VIDEO_BYTES | No | Maximum video download size in bytes. Default: 64 MiB. | |
| CARPE_X402_BUDGET_USD | No | x402 spending budget in USD (minimum 0.10). Required when CARPE_X402_PRIVATE_KEY is set. | |
| CARPE_MAX_PER_CALL_USD | No | Maximum spend per paid call in USD. Default: 0.50. Set 0 to disable. | |
| CARPE_X402_PRIVATE_KEY | No | Private key for x402 pay-per-call mode (USDC on Base). The private key never leaves the process and is never logged. | |
| CARPE_DEFAULT_CHAT_MODEL | No | Default chat model. Default: deepseek-v4-flash. | |
| CARPE_MCP_ALLOWED_ORIGINS | No | Allowed browser origins for HTTP mode. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Carpe Diem MCP: Venice AI models (text, image, video, audio, music, embeddings, web search) bought on the Carpe Diem marketplace, usually below Venice list prices. Two API surfaces, chosen per call with route: "carpe" = /v1, served only by Carpe inside its TEE (private); "router" = /router, the cheapest market, which may be outside a TEE (each result says route_used and tee). Use carpe_quote before expensive text calls, carpe_model_details for model constraints, carpe_balance for funds. Results report the exact cost billed. Payment: none configured — paid tools will refuse; set CARPE_API_KEY. Spend guard: max $0.5 per call, $5 per session (0 = no limit).
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| carpe_list_modelsA | Page through the live Carpe Diem model catalogue (Venice models plus Carpe metadata). Filter by type (text, image, video, tts, …), capability, privacy or a search string. Use carpe_diem_type to pick the right tool: text/code → carpe_chat, embedding → carpe_embeddings, image → carpe_image_generate, imageEdit → carpe_image_edit, upscale → carpe_image_upscale, tts → carpe_tts, asr → carpe_transcribe, music → carpe_music_generate, video/imageToVideo/referenceToVideo → carpe_video_generate. route "router" reads /router/models, which adds the best-price markets able to serve each text model. Free. |
| carpe_model_detailsA | Everything about one model: catalogue row (capabilities, constraints such as video durations or music lengths, TTS voices), Carpe price (USD per 1M tokens, or fixed cost per image/call), Venice rate limits and live capacity. Free. |
| carpe_pricingB | Live Carpe prices. Token models: USD per 1M input/output tokens (inputPrice/outputPrice, after the dynamic multiplier; inputBase/outputBase are Venice list prices). Media: fixed USD per image/edit/web call. Filter by model substring. Free. |
| carpe_quoteA | Price a text request BEFORE running it, on both surfaces: what /v1 (Carpe alone, in its TEE) would bill, and what /router (best price) would pick among the markets — with each market's price, availability and whether it is a TEE. Give messages (or a prompt) so the input size is estimated, or input_tokens directly. Costs nothing. |
| carpe_marketsA | Live state of the /router best-price markets: which markets are on, the external routing fee, observed latency per market, and whether external execution is open to this key. Free. |
| carpe_statusB | Operator health (database, settlement, providers) and marketplace capacity (headroom, dynamic price multiplier). Free. |
| carpe_balanceA | Spendable balance of the Carpe Diem account behind CARPE_API_KEY: credits (1 credit = $0.01; escrow = purchased, pending = spent not yet settled, holds = reserved for in-flight requests, available = spendable), unsettled debt, prepaid account and the active payment rail. Free. |
| carpe_usage_historyB | Per-request history of the account, newest first: model, provider pseudonym, tokens, cost (USDC), market that served, routing reason, latency, savings. Free. |
| carpe_usage_summaryA | Account spend aggregated by model and by day over the last N days (1–90, default 7). Free. |
| carpe_key_usageB | Requests, tokens and cost per API key of the account over the last N days, with each key's rail and status. Free. |
| carpe_routing_summaryB | How the account's /router requests were served: wins per market and savings versus Carpe-only pricing. Free. |
| carpe_rate_limitsA | The operator rate limit applied to this key right now (max per window, remaining, reset), separate read budget, and parallel lanes. Free. |
| carpe_purchasesC | Credit purchases made by card on the account. Free. |
| carpe_topup_linkA | Card top-up for this account. Nothing is charged by this tool: with create: true it returns a checkout URL that a HUMAN must open to pay (valid for a limited time); otherwise it only lists the credit tiers. Never open or pay the link yourself. |
| carpe_session_spendA | What this MCP server has spent since it started, per tool, against the CARPE_MAX_SPEND_USD and CARPE_MAX_PER_CALL_USD guards. Local, free. |
| carpe_x402_statusA | x402 mode only: the agent wallet address, its USDC balance on Base, the permit budget, what was billed and what is left. Free. |
| carpe_revoke_this_keyA | IRREVERSIBLE: permanently revokes the API key this server uses (CARPE_API_KEY). Every later call with it fails. Use only if the user explicitly asks, or if the key leaked. Requires confirm: "REVOKE". |
| carpe_chatA | Run a chat completion on Carpe Diem (OpenAI-compatible; Venice models: GPT, Claude, Gemini, DeepSeek, GLM, Qwen, Llama, uncensored models…). Two surfaces: route "carpe" (/v1, Carpe's TEE, private) or route "router" (/router, cheapest market). Returns the answer plus usage, the exact cost billed and which market served it. Supports function tools, response_format (JSON schema), reasoning_effort and Venice web search. Paid — use carpe_quote first for expensive requests. |
| carpe_embeddingsA | Compute embedding vectors (OpenAI-compatible) for 1–128 texts. route "carpe" (/v1) or "router" (/router, cheapest market; privacy applies). Paid per input token. |
| carpe_web_searchB | Live web search through Carpe (Venice augment/search). Always on /v1 — no market arbitrates web search. Flat fee per call (see carpe_pricing, model augment-search). |
| carpe_web_scrapeB | Fetch one web page as text/markdown through Carpe (Venice augment/scrape). Always on /v1. Flat fee per call. |
| carpe_image_generateA | Generate image(s) from a prompt (Venice image models: Flux, GPT Image, Nano Banana, Seedream, Qwen Image, Recraft, uncensored SD…). Images are returned inline and/or saved to CARPE_OUTPUT_DIR. Fixed price per image (carpe_pricing). Slow models run as a queued job automatically. |
| carpe_image_editC | Transform one image from a prompt (imageEdit models such as qwen-image-2-edit, nano-banana-2-edit, gpt-image-2-edit). image: https URL, data: URI or (stdio) a local file path. |
| carpe_image_multi_editB | Compose or edit from 1–3 source images and a prompt (e.g. "put the product from image 1 on the table of image 2"). Always on /v1 — no market arbitrates multi-edit. Runs as a queued job. |
| carpe_image_upscaleA | Increase image resolution 1–4× (source ≥ 256×256). Always on /v1. image: https URL, data: URI or local path (stdio). |
| carpe_image_statusB | Fetch the result of a queued image job (job_id from an image tool). Polls on the surface that created the job. Free. |
| carpe_ttsA | Turn text (≤ 4096 characters) into speech. Voices are model-specific: omit voice for the model default, or read the voices of a model with carpe_model_details. A cloned voice (vv_… from carpe_voice_clone) only works on route "carpe" with the model it was cloned for. Billed per character. |
| carpe_transcribeB | Speech to text (Whisper-compatible). audio: https:// URL, data: URI, or local path (stdio). Formats such as mp3, wav, m4a, flac, ogg, webm. |
| carpe_voice_cloneA | Upload a short reference sample (one speaker) and get a vv_… voice handle for carpe_tts (route "carpe", same model). The upload itself is free but needs a funded account. ONLY with consent: the voice must be the user's own, or its speaker must have agreed to be cloned. The handle expires (~7 days). |
| carpe_video_generateA | Queue a video (Sora, Veo, Kling, Seedance, Wan, LTX, Grok Imagine…; text-to-video, image-to-video, reference-to-video). The payload is priced first (free quote) and refused locally above CARPE_MAX_PER_CALL_USD. Returns a job_id; carpe_video_status downloads the MP4 when ready (videos take minutes). Read the model constraints (durations, aspect ratios, resolutions) with carpe_model_details. |
| carpe_video_statusA | Check a video job from carpe_video_generate; when completed, downloads the MP4 to CARPE_OUTPUT_DIR (or the temp dir) and returns its path. Polls the surface that created the job. Free. |
| carpe_music_generateA | Queue music, a sound effect, or long-form speech (music-pipeline models: ElevenLabs Music, ACE-Step, Lyria, MiniMax, ElevenLabs sound effects / TTS v3-v4). Each model has its own accepted durations, lyrics and instrumental options — read them with carpe_model_details first. Returns a job_id for carpe_music_status. |
| carpe_music_statusA | Check a music job from carpe_music_generate; when completed, the track is saved to disk (it can be retrieved only once on /v1) and returned. Free. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| cheapest_model_for | Pick a suitable model, compare prices on /v1 and /router with carpe_quote, then run the task on the cheapest acceptable option. |
| cost_report | Summarise the account spend: balance, usage by model and day, router savings. |
| private_inference | Answer a confidential request on /v1 only (Carpe TEE), with a model Venice runs privately. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| models | Live model catalogue (GET /v1/models): ids, carpe_diem_type, capabilities, constraints, voices. |
| pricing | Live prices (GET /pricing): USD per 1M tokens and fixed costs per image / call. |
| markets | Best-price router state (GET /router/markets): markets on, fee, latency. |
TDQS
Scored across 33 tools
Most tools map to a distinct action+resource: generation (image/video/music/tts/transcribe), web utilities, and account introspection are clearly separated, and carpe_image_edit vs carpe_image_multi_edit vs carpe_image_upscale is spelled out in the descriptions. The weakest zone is the free billing/observability cluster (carpe_status, carpe_balance, carpe_x402_status, carpe_session_spend, carpe_rate_limits, carpe_usage_history, carpe_usage_summary, carpe_key_usage, carpe_routing_summary, carpe_markets, carpe_pricing, carpe_quote), where an agent can easily pick the wrong one; the long descriptions mitigate but don't eliminate this.
Every tool shares the carpe_ prefix and stays snake_case and readable, which makes the set feel like one product. The only deviation is mixed conventions inside the prefix: some are verb phrases (carpe_list_models, carpe_image_generate, carpe_revoke_this_key) while others are bare nouns (carpe_chat, carpe_pricing, carpe_balance, carpe_status), so the verb_noun pattern is not fully predictable.
33 tools is above the comfortable range and a sizeable share of them are free metadata/accounting calls rather than capabilities. The domain is genuinely broad (chat, embeddings, search, scrape, image, video, music, TTS, ASR, voice cloning, billing), so the volume is partly earned, but the surface feels heavy and would benefit from consolidating the usage/status/balance family.
Coverage is strong across the whole media and text lifecycle: catalogue discovery, pricing/quoting, generation, and polling for image, video, and music jobs, plus balance, purchases, top-up, usage, and key handling. Remaining gaps are mostly lifecycle edges: no cancel/delete for queued jobs, no job listing, and for keys only revoke of the server's own key with no create/rotate.