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 recipesLos 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.
| Receta | Camino | Costo típico | ¿Privado? |
|---|---|---|---|
| El modelo más barato para una tarea | MCP · API | menos de $0.0001 por respuesta | Tú eliges |
| Análisis confidencial en el TEE | MCP · API | ~$0.0005 por página | Sí — TEE, modelo que no guarda nada |
| Un agente de programación más barato | API | por token — consulta la página Models | Depende del modelo |
| Imágenes: generar, editar, escalar | MCP · API | ~$0.03 por la cadena completa | TEE en /v1 |
| Un clip de video corto | MCP · API | ~$0.10 por 5 s | TEE en /v1 |
| Voz: leer en voz alta, transcribir | MCP · API | ~$0.001 por párrafo | TEE en /v1 |
| Música para un video | MCP · API | ~$0.016 por minuto | TEE en /v1 |
| Responder preguntas sobre tus documentos (RAG) | API | ~$0.0001 por pregunta | Tú eliges |
| Investigación web con fuentes | MCP · API | ~$0.006 por pregunta | TEE en /v1 |
| Extracción estructurada a escala | API | ~$0.0001 por documento | Tú eliges |
| Mantener el gasto bajo control | MCP · API | gratis | — |
| Un agente que paga por sí mismo (x402) | MCP · API | lo que use, con tope on-chain | Tú eliges |
| Una app de chat privada para un equipo | API | por mensaje | TEE 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_USDyCARPE_MAX_SPEND_USDrechazan una llamada antes de enviarla;CARPE_READ_ONLY=1para 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-Microen/v1,X-Carpe-Route-Cost-Usdcen/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 MCPcarpe_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.