● Documentación

Casos de uso

Recetas completas — qué construir con Carpe Diem, a través del servidor MCP o de la API, con código que funciona, lo que cuesta y qué nivel de privacidad ofrece.

Cada receta indica el objetivo, el camino (servidor MCP, API o ambos), código que funciona, lo que costó cuando lo ejecutamos y qué nivel de privacidad ofrece. Configuración inicial, una sola vez:

export CARPE_API_KEY=cdm_your_key   # API → Keys
pip install openai requests          # Python recipes

Los costos indicados se midieron el 2026-11-06 y varían con el precio dinámico. Antes de ejecutar algo grande, pide una cotización — es gratis: POST /router/quote para texto, POST /v1/video/quote para video, /pricing para todo lo demás.

RecetaCaminoCosto típico¿Privado?
El modelo más barato para una tareaMCP · APImenos de $0.0001 por respuestaTú eliges
Análisis confidencial en el TEEMCP · API~$0.0005 por páginaSí — TEE, modelo que no guarda nada
Un agente de programación más baratoAPIpor token — consulta la página ModelsDepende del modelo
Imágenes: generar, editar, escalarMCP · API~$0.03 por la cadena completaTEE en /v1
Un clip de video cortoMCP · API~$0.10 por 5 sTEE en /v1
Voz: leer en voz alta, transcribirMCP · API~$0.001 por párrafoTEE en /v1
Música para un videoMCP · API~$0.016 por minutoTEE en /v1
Responder preguntas sobre tus documentos (RAG)API~$0.0001 por preguntaTú eliges
Investigación web con fuentesMCP · API~$0.006 por preguntaTEE en /v1
Extracción estructurada a escalaAPI~$0.0001 por documentoTú eliges
Mantener el gasto bajo controlMCP · APIgratis—
Un agente que paga por sí mismo (x402)MCP · APIlo que use, con tope on-chainTú eliges
Una app de chat privada para un equipoAPIpor mensajeTEE en /v1

El modelo más barato para una tarea

Objetivo: obtener una respuesta suficientemente buena al menor precio, sin probar modelos a mano.

Con el servidor MCP, ejecuta el prompt cheapest_model_for, o simplemente pide: "Encuentra el modelo más barato capaz de traducir bien esto al alemán y luego hazlo." El asistente preselecciona modelos, cotiza cada uno en /v1 y /router con carpe_quote (gratis), ejecuta el más barato aceptable y te indica cuánto costó y quién lo atendió.

Con la API, cotiza primero y luego envía la solicitud al router — él mismo elige el mercado más barato:

import os, requests
from openai import OpenAI
 
BASE = "https://carpe-diem.xyz/api/operator"
 
# 1. Free quote: what would 500 tokens in / 300 out cost, on each market?
q = requests.post(f"{BASE}/router/quote", json={"model": "deepseek-v4-flash", "input_tokens": 500, "max_tokens": 300}).json()
print("best:", q["best"]["market"], q["best"]["costUsd"], "USD")
 
# 2. Run it through the router: the cheapest market serves it.
client = OpenAI(base_url=f"{BASE}/router", api_key=os.environ["CARPE_API_KEY"])
raw = client.chat.completions.with_raw_response.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "Translate into German: The meeting moved to Thursday."}],
)
print(raw.parse().choices[0].message.content)
print("served by", raw.headers.get("x-carpe-route-market"), "for", raw.headers.get("x-carpe-route-cost-usdc"), "USDC")

Costo: $0.00003 por esta traducción (atendida por OpenRouter cuando lo ejecutamos). Privacidad: el router puede atenderla fuera del TEE; añade extra_body={"privacy": True} para quedarte en mercados TEE.

Análisis confidencial en el TEE

Objetivo: resumir un contrato, una carta médica o código interno sin que nadie lo guarde.

Usa la superficie /v1 (siempre a través del TEE de Carpe) y un modelo listado como privacy: "private" en /v1/models — Venice los ejecuta sin guardar prompts ni respuestas.

Con el servidor MCP, ejecuta el prompt private_inference, o pide: "De forma privada, solo dentro del TEE, resume ./contract.txt en cinco viñetas." El resultado indica tee: true.

import os, requests
from openai import OpenAI
 
BASE = "https://carpe-diem.xyz/api/operator"
models = requests.get(f"{BASE}/v1/models").json()["data"]
private = [m["id"] for m in models if m.get("carpe_diem_type") == "text" and m.get("privacy") == "private"]
print(len(private), "private text models, e.g.", private[:3])
 
client = OpenAI(base_url=f"{BASE}/v1", api_key=os.environ["CARPE_API_KEY"])
document = "This agreement is made between Alpha SA and Beta GmbH. Term: 24 months. Either party may terminate with 90 days' notice."
r = client.chat.completions.create(
    model="deepseek-v4-flash",                       # listed "private"
    messages=[
        {"role": "system", "content": "You summarise legal documents in five short bullet points."},
        {"role": "user", "content": document},
    ],
)
print(r.choices[0].message.content)

Costo: $0.0001 por este resumen; calcula unos $0.0005 por una página completa. Privacidad: TEE de extremo a extremo del lado de Carpe, y un modelo que no guarda nada. Los modelos e2ee-* van más allá (cifrado de extremo a extremo hasta el propio enclave del modelo). Comprueba la atestación en /attestation y en la página Privacy.

Un agente de programación más barato

Objetivo: conservar tu agente de programación y pagar menos por tarea.

Apunta el agente a Carpe y elige un modelo según precio y capacidad: los modelos Claude para el trabajo más difícil, kimi-k2-7-code, qwen3-coder-480b-a35b-instruct-turbo o deepseek-v4-pro para la mayor parte. Configuración paso a paso para Claude Code, OpenCode, Aider, Cline, Continue, Zed y VS Code: Agentes de programación.

Dale al mismo agente el servidor MCP y también podrá producir los recursos que necesita tu proyecto — iconos, maquetas, locuciones — sin salir de la terminal.

Costo: pagas por token al precio de Carpe, que se muestra en vivo en la página Models; el espacio API muestra lo que gastó cada clave. Privacidad: prefiere un modelo private para código propietario; los modelos Claude son anonymized.

Imágenes: generar, editar, escalar

Objetivo: una imagen de cabecera para una página, luego una variante y luego una versión en tamaño de impresión.

Con el servidor MCP: "Genera una ilustración plana 16:9 de un zorro rojo en un bosque, luego haz que el zorro sea azul y después escálala ×2. Guarda todo en ./assets." — carpe_image_generate, carpe_image_edit, carpe_image_upscale.

import base64, os, time, requests
 
BASE = "https://carpe-diem.xyz/api/operator/v1"
H = {"Authorization": f"Bearer {os.environ['CARPE_API_KEY']}"}
 
def queued(path, body):
    """Queue a slow image job, poll until the image comes back (binary)."""
    qid = requests.post(f"{BASE}/{path}/queue", headers=H, json=body).json()["queue_id"]
    while True:
        r = requests.post(f"{BASE}/{path}/retrieve", headers=H, json={"queue_id": qid})
        if r.headers.get("content-type", "").startswith("image/"):
            return r.content
        if r.json().get("status") != "pending":
            raise RuntimeError(r.text)
        time.sleep(2)
 
# 1. Generate (synchronous for fast models) → base64 WebP
gen = requests.post(f"{BASE}/image/generate", headers=H, json={
    "model": "z-image-turbo", "prompt": "a red fox in a forest, flat illustration",
}).json()
fox = gen["images"][0]
open("fox.webp", "wb").write(base64.b64decode(fox))
 
# 2. Edit (queued: edit models take longer) — the source goes in as a data URI
blue = queued("image/edit", {
    "model": "qwen-image-2-1-turbo-edit", "prompt": "make the fox blue",
    "image": f"data:image/webp;base64,{fox}",
})
open("fox-blue.png", "wb").write(blue)
 
# 3. Upscale ×2: raw base64, no data: prefix
up = requests.post(f"{BASE}/image/upscale", headers=H, json={
    "model": "upscaler", "image": base64.b64encode(blue).decode(), "scale": 2,
}, timeout=180)
up.raise_for_status()
open("fox-blue-2x.png", "wb").write(up.content)
print("cost of the last step:", up.headers.get("x-carpe-cost-usdc-micro"), "µUSDC")

Costo: unos $0.005 por generar, $0.011 por editar y $0.011 por escalar ×2. Privacidad: en /v1, a través del TEE. Un modelo demasiado lento para una sola solicitud responde 409 MODEL_REQUIRES_ASYNC con el endpoint que hay que usar: la función auxiliar queued() de arriba sirve para image/generate, image/edit e image/multi-edit (referencia de la cola).

Un clip de video corto

Objetivo: un clip de 5 segundos para una publicación o una landing page.

Con el servidor MCP: "Haz un clip 16:9 de 5 segundos de un barco de papel en un lago en calma. Cotízalo primero." — carpe_video_generate cotiza y pone el trabajo en cola, luego carpe_video_status espera y guarda el MP4.

import os, time, requests
 
BASE = "https://carpe-diem.xyz/api/operator"
H = {"Authorization": f"Bearer {os.environ['CARPE_API_KEY']}"}
job = {"model": "grok-imagine-1-5-lite-text-to-video", "prompt": "a paper boat on a calm lake, morning light",
       "duration": "5s", "aspect_ratio": "16:9"}
 
print("quote:", requests.post(f"{BASE}/v1/video/quote", headers=H, json=job).json()["cost_usdc"], "USD")
qid = requests.post(f"{BASE}/v1/video/queue", headers=H, json=job).json()["queue_id"]
 
while True:
    r = requests.post(f"{BASE}/v1/video/retrieve", headers=H, json={"queue_id": qid}).json()
    if r["status"] == "completed":
        url = r.get("video_url") or r.get("url")
        video = requests.get(url if url.startswith("http") else BASE + url)   # kept ~10 minutes
        open("boat.mp4", "wb").write(video.content)
        break
    if r["status"] == "failed":
        raise RuntimeError(r)
    time.sleep(5)

Costo: $0.097 por estos 5 segundos, exactamente la cotización (los modelos van de unos céntimos a varios dólares: cotiza siempre primero). Las duraciones, relaciones de aspecto y resoluciones varían según el modelo: léelas en constraints de /v1/models. Privacidad: en /v1, a través del TEE. Descarga el archivo en cuanto esté listo.

Voz: leer en voz alta, transcribir

Objetivo: convertir un párrafo en un MP3, y un archivo de audio de nuevo en texto.

Con el servidor MCP: "Lee este párrafo en voz alta en francés y guarda el MP3. Luego transcríbelo para comprobarlo." — carpe_tts, carpe_transcribe.

import os, requests
 
BASE = "https://carpe-diem.xyz/api/operator/v1"
H = {"Authorization": f"Bearer {os.environ['CARPE_API_KEY']}"}
 
speech = requests.post(f"{BASE}/audio/speech", headers=H, json={
    "model": "tts-kokoro", "input": "Bonjour ! Ceci est un test de synthèse vocale.", "response_format": "mp3",
})
speech.raise_for_status()
open("hello.mp3", "wb").write(speech.content)
 
text = requests.post(f"{BASE}/audio/transcriptions", headers=H,
    files={"file": ("hello.mp3", speech.content, "audio/mpeg")},
    data={"model": "openai/whisper-large-v3"}).json()
print(text["text"])

Costo: $0.0003 por esta frase, ambos pasos incluidos (la síntesis de voz se factura por carácter, la transcripción por minuto de audio). Las voces dependen del modelo: omite voice para usar la predeterminada, o elige una de las voices del modelo en /v1/models. Privacidad: en /v1, a través del TEE. Clonar una voz (carpe_voice_clone, POST /v1/audio/voices) requiere el consentimiento de la persona que habla, y el proveedor la conserva 7 días.

Música para un video

Objetivo: una pista de fondo ajustada a la duración de tu clip.

Con el servidor MCP: "Compón una pista de piano lo-fi tranquila de 60 segundos, instrumental, y guárdala." — carpe_music_generate, carpe_music_status.

import os, time, requests
 
BASE = "https://carpe-diem.xyz/api/operator/v1"
H = {"Authorization": f"Bearer {os.environ['CARPE_API_KEY']}"}
 
qid = requests.post(f"{BASE}/audio/music/queue", headers=H, json={
    "model": "ace-step-15", "prompt": "calm lo-fi piano loop, warm, slow", "duration_seconds": 60,
}).json()["queue_id"]
 
while True:
    r = requests.post(f"{BASE}/audio/music/retrieve", headers=H, json={"queue_id": qid, "model": "ace-step-15"})
    if r.headers.get("content-type", "").startswith("audio/"):
        open("track.flac", "wb").write(r.content)  # ace-step-15 delivers FLAC; a /v1 track can be fetched once
        break
    if r.json().get("status") == "failed":
        raise RuntimeError(r.text)
    time.sleep(5)

Costo: unos $0.016 por 60 segundos con ace-step-15. Cada modelo de música acepta duraciones, opciones y formatos de archivo distintos (duration_options, supports_lyrics, default_format…): lee primero sus constraints en /v1/models. Privacidad: en /v1, a través del TEE.

Responder preguntas sobre tus documentos (RAG)

Objetivo: un pequeño bot de preguntas y respuestas sobre tus propias notas.

import os, math
from openai import OpenAI
 
client = OpenAI(base_url="https://carpe-diem.xyz/api/operator/v1", api_key=os.environ["CARPE_API_KEY"])
docs = [
    "Refunds are possible within 30 days of purchase.",
    "Support answers in English and French, Monday to Friday.",
    "Enterprise plans include a dedicated account manager.",
]
 
def embed(texts):
    r = client.embeddings.create(model="text-embedding-bge-m3", input=texts)
    return [d.embedding for d in r.data]
 
def cos(a, b):
    return sum(x * y for x, y in zip(a, b)) / (math.sqrt(sum(x * x for x in a)) * math.sqrt(sum(y * y for y in b)))
 
index = embed(docs)
question = "Can I get my money back after three weeks?"
q = embed([question])[0]
best = max(range(len(docs)), key=lambda i: cos(q, index[i]))
 
answer = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "system", "content": f"Answer only from this context: {docs[best]}"},
        {"role": "user", "content": question},
    ],
)
print(answer.choices[0].message.content)

Costo: $0.00015 por esta pregunta, embeddings incluidos; generar los embeddings de un conjunto grande de documentos una sola vez cuesta una fracción de céntimo por cada cien páginas. Privacidad: ambas llamadas en /v1, a través del TEE; text-embedding-bge-m3 y deepseek-v4-flash son modelos private. Lo mismo funciona con LangChain o LlamaIndex.

Investigación web con fuentes

Objetivo: una respuesta breve y con fuentes sobre algo reciente.

Con el servidor MCP: "Busca en la web la última actualización de la red Base y resúmela con fuentes." — carpe_web_search, carpe_web_scrape, luego carpe_chat.

import os, requests
from openai import OpenAI
 
BASE = "https://carpe-diem.xyz/api/operator/v1"
H = {"Authorization": f"Bearer {os.environ['CARPE_API_KEY']}"}
 
results = requests.post(f"{BASE}/augment/search", headers=H, json={"query": "Base network latest upgrade"}).json()["results"][:5]
context = "\n\n".join(f"[{i + 1}] {r['title']} ({r['url']})\n{r['content']}" for i, r in enumerate(results))
 
client = OpenAI(base_url=BASE, api_key=os.environ["CARPE_API_KEY"])
r = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "system", "content": "Answer from the sources below and cite them as [n].\n\n" + context},
        {"role": "user", "content": "What changed in the latest Base network upgrade?"},
    ],
)
print(r.choices[0].message.content)

Para leer una página completa, POST /v1/augment/scrape con {"url": "https://…"} devuelve su contenido. Costo: $0.0054 por búsqueda o scrape, más la respuesta ($0.0056 en total para esta). Privacidad: en /v1, a través del TEE; la búsqueda en sí sale a la web.

Extracción estructurada a escala

Objetivo: convertir miles de emails, facturas o tickets en JSON limpio, de forma económica y sin doble facturación en los reintentos.

import json, os, uuid
from openai import OpenAI
 
client = OpenAI(base_url="https://carpe-diem.xyz/api/operator/router", api_key=os.environ["CARPE_API_KEY"], max_retries=3)
schema = {
    "name": "invoice",
    "strict": True,
    "schema": {
        "type": "object",
        "properties": {
            "vendor": {"type": "string"},
            "total": {"type": "number"},
            "currency": {"type": "string"},
            "due_date": {"type": "string"},
        },
        "required": ["vendor", "total", "currency", "due_date"],
        "additionalProperties": False,
    },
}
 
def extract(text: str) -> dict:
    r = client.chat.completions.create(
        model="deepseek-v4-flash",
        messages=[{"role": "user", "content": f"Extract the invoice fields:\n\n{text}"}],
        response_format={"type": "json_schema", "json_schema": schema},
        # Same key on a retry → the router replays the first answer instead of billing twice.
        extra_headers={"Idempotency-Key": str(uuid.uuid5(uuid.NAMESPACE_URL, text))},
    )
    return json.loads(r.choices[0].message.content)
 
print(extract("ACME Corp — Invoice 1042 — Total due: 1,250.00 EUR by 2026-12-01."))

Costo: $0.00004 por esta factura en el router. Privacidad: el router puede atenderla fuera del TEE: añade extra_body={"privacy": "private"} para usar mercados que no guardan nada (la repetición idempotente queda entonces desactivada), o usa /v1. Mantente dentro de los límites de tasa: consulta los tuyos con GET /v1/rate_limits.

Mantener el gasto bajo control

Objetivo: saber adónde va el dinero, y asegurarte de que un agente no pueda desbocarse con él.

  • Por clave: crea una clave por app o agente en API → Keys, para que el gasto de cada una esté separado (GET /buyer/api-keys/usage).
  • En el servidor MCP: CARPE_MAX_PER_CALL_USD y CARPE_MAX_SPEND_USD rechazan una llamada antes de enviarla; CARPE_READ_ONLY=1 para un asistente que solo debe consultar información.
  • Informes: ejecuta el prompt cost_report, o pregunta "¿Cuánto gasté esta semana, en qué modelos, y cuánto ahorró el router?". Con la API:
curl -s https://carpe-diem.xyz/api/operator/v1/credits -H "Authorization: Bearer $CARPE_API_KEY"
curl -s "https://carpe-diem.xyz/api/operator/buyer/usage/summary?days=7" -H "Authorization: Bearer $CARPE_API_KEY"
curl -s "https://carpe-diem.xyz/api/operator/buyer/routing/summary" -H "Authorization: Bearer $CARPE_API_KEY"
  • Cada respuesta incluye su costo (X-Carpe-Cost-Usdc-Micro en /v1, X-Carpe-Route-Cost-Usdc en /router) y tu saldo restante (X-Carpe-Available-Credits), para que una app pueda detenerse por sí misma.
  • Si una clave se filtra: revócala en API → Keys, o deja que la clave se revoque a sí misma: POST /v1/keys/self/revoke (la herramienta MCP carpe_revoke_this_key).

Un agente que paga por sí mismo (x402)

Objetivo: un agente autónomo con su propia wallet y un presupuesto estricto — sin cuenta, sin clave que gestionar.

Financia una wallet dedicada con un poco de USDC en Base y luego entrega su clave privada al servidor MCP junto con un presupuesto:

{
  "mcpServers": {
    "carpe": {
      "command": "npx",
      "args": ["-y", "carpe-diem-mcp"],
      "env": {
        "CARPE_X402_PRIVATE_KEY": "0xYOUR_AGENT_WALLET_KEY",
        "CARPE_X402_BUDGET_USD": "2",
        "CARPE_MAX_PER_CALL_USD": "0.25"
      }
    }
  }
}

El servidor firma un único permit de USDC cuyo valor es el presupuesto: Carpe nunca puede retirar más de $2 en total, haga lo que haga el agente, y el gasto se recuerda entre reinicios. carpe_x402_status muestra la wallet, sus USDC y lo que queda. Para hacerlo desde tu propio código, consulta x402 en la referencia de la API.

Costo: lo que use el agente, a los mismos precios. Privacidad: sin cuenta, sin email: la wallet es la identidad.

Una app de chat privada para un equipo

Objetivo: una app tipo ChatGPT para tu equipo, con los modelos que elijas, sin que cada persona necesite una cuenta en ningún sitio.

Despliega Open WebUI o LibreChat con una clave de Carpe (o una clave por usuario con user_provided de LibreChat). Apúntala a https://carpe-diem.xyz/api/operator/v1 para que cada conversación pase por el TEE, y deja visibles solo los modelos private para el trabajo confidencial. Dale también el servidor MCP a la app (LibreChat) y las personas podrán pedir imágenes, voz e investigación web desde el mismo chat.

Costo: por mensaje, al precio de Carpe; síguelo por clave en API → Usage. Privacidad: en /v1, a través del TEE; con modelos private, el proveedor del modelo no guarda nada.

Actualizado 2026-11-06