Cada receita indica o objetivo, o caminho (servidor MCP, API ou ambos), código funcional, quanto custou quando a executámos e que nível de privacidade oferece. Configure uma vez:
export CARPE_API_KEY=cdm_your_key # API → Keys
pip install openai requests # Python recipesOs custos abaixo foram medidos em 2026-11-06 e variam com o preço dinâmico. Antes de executar algo de grande dimensão, peça uma cotação — é gratuita: POST /router/quote para texto, POST /v1/video/quote para vídeo, /pricing para tudo o resto.
| Receita | Caminho | Custo típico | Privado? |
|---|---|---|---|
| O modelo mais barato para uma tarefa | MCP · API | menos de 0,0001 $ por resposta | À sua escolha |
| Análise confidencial no TEE | MCP · API | ~0,0005 $ por página | Sim — TEE, modelo que não guarda nada |
| Um agente de programação mais barato | API | por token — ver a página Models | Depende do modelo |
| Imagens: gerar, editar, aumentar a resolução | MCP · API | ~0,03 $ pela cadeia completa | TEE em /v1 |
| Um pequeno clip de vídeo | MCP · API | ~0,10 $ por 5 s | TEE em /v1 |
| Voz: ler em voz alta, transcrever | MCP · API | ~0,001 $ por parágrafo | TEE em /v1 |
| Música para um vídeo | MCP · API | ~0,016 $ por minuto | TEE em /v1 |
| Responder a perguntas sobre os seus documentos (RAG) | API | ~0,0001 $ por pergunta | À sua escolha |
| Pesquisa web com fontes | MCP · API | ~0,006 $ por pergunta | TEE em /v1 |
| Extração estruturada em grande escala | API | ~0,0001 $ por documento | À sua escolha |
| Manter os gastos sob controlo | MCP · API | gratuito | — |
| Um agente que paga por si próprio (x402) | MCP · API | o que utilizar, com limite on-chain | À sua escolha |
| Uma aplicação de chat privada para uma equipa | API | por mensagem | TEE em /v1 |
O modelo mais barato para uma tarefa
Objetivo: obter uma resposta suficientemente boa ao preço mais baixo, sem testar modelos à mão.
Com o servidor MCP, execute o prompt cheapest_model_for, ou simplesmente peça: "Encontra o modelo mais barato capaz de traduzir bem isto para alemão e depois traduz." O assistente seleciona modelos, cota cada um em /v1 e /router com carpe_quote (gratuito), executa o mais barato aceitável e indica-lhe quanto custou e quem o serviu.
Com a API, cote primeiro e depois envie o pedido para o router — ele escolhe sozinho o mercado mais 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")Custo: 0,00003 $ por esta tradução (servida pela OpenRouter quando a executámos). Privacidade: o router pode servi-la fora do TEE; adicione extra_body={"privacy": True} para ficar em mercados TEE.
Análise confidencial no TEE
Objetivo: resumir um contrato, uma carta médica ou código interno sem que ninguém o guarde.
Use a superfície /v1 (sempre através do TEE do Carpe) e um modelo listado como privacy: "private" em /v1/models — a Venice executa-os sem guardar prompts nem respostas.
Com o servidor MCP, execute o prompt private_inference, ou peça: "De forma privada, apenas dentro do TEE, resume ./contract.txt em cinco pontos." O 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)Custo: 0,0001 $ por este resumo; conte com cerca de 0,0005 $ por uma página completa. Privacidade: TEE de ponta a ponta do lado do Carpe, e um modelo que não guarda nada. Os modelos e2ee-* vão mais longe (cifrados de ponta a ponta até ao enclave do próprio modelo). Verifique a atestação em /attestation e na página Privacy.
Um agente de programação mais barato
Objetivo: manter o seu agente de programação e pagar menos por tarefa.
Aponte o agente para o Carpe e escolha um modelo pelo preço e pela competência: modelos Claude para o trabalho mais difícil, kimi-k2-7-code, qwen3-coder-480b-a35b-instruct-turbo ou deepseek-v4-pro para a maior parte. Configuração passo a passo para Claude Code, OpenCode, Aider, Cline, Continue, Zed e VS Code: Agentes de programação.
Dê ao mesmo agente o servidor MCP e ele poderá também produzir os recursos de que o seu projeto precisa — ícones, maquetas, locuções — sem sair do terminal.
Custo: paga por token ao preço do Carpe, mostrado em tempo real na página Models; o espaço API mostra quanto gastou cada chave. Privacidade: prefira um modelo private para código proprietário; os modelos Claude são anonymized.
Imagens: gerar, editar, aumentar a resolução
Objetivo: uma imagem de destaque para uma página, depois uma variante, depois uma versão em tamanho de impressão.
Com o servidor MCP: "Gera uma ilustração plana 16:9 de uma raposa vermelha numa floresta, depois torna a raposa azul, depois aumenta a resolução ×2. Guarda tudo em ./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")Custo: cerca de 0,005 $ para gerar, 0,011 $ para editar e 0,011 $ para aumentar a resolução ×2. Privacidade: em /v1, através do TEE. Um modelo demasiado lento para um único pedido responde 409 MODEL_REQUIRES_ASYNC com o endpoint a usar: a função auxiliar queued() acima funciona para image/generate, image/edit e image/multi-edit (referência da fila).
Um pequeno clip de vídeo
Objetivo: um clip de 5 segundos para uma publicação ou uma landing page.
Com o servidor MCP: "Faz um clip 16:9 de 5 segundos de um barco de papel num lago calmo. Cota-o primeiro." — carpe_video_generate cota e coloca em fila, depois carpe_video_status aguarda e guarda o 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)Custo: 0,097 $ por estes 5 segundos, exatamente a cotação (os modelos vão de cêntimos a dólares: cote sempre primeiro). As durações, proporções e resoluções diferem consoante o modelo: leia-as em constraints em /v1/models. Privacidade: em /v1, através do TEE. Transfira o ficheiro assim que estiver pronto.
Voz: ler em voz alta, transcrever
Objetivo: transformar um parágrafo num MP3, e um ficheiro de áudio de volta em texto.
Com o servidor MCP: "Lê este parágrafo em voz alta em francês e guarda o MP3. Depois transcreve-o para verificar." — 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"])Custo: 0,0003 $ por esta frase, nos dois passos (a voz é faturada por carácter, a transcrição por minuto de áudio). As vozes dependem do modelo: omita voice para usar a predefinida, ou escolha uma das voices do modelo em /v1/models. Privacidade: em /v1, através do TEE. Clonar uma voz (carpe_voice_clone, POST /v1/audio/voices) requer o consentimento do orador e é guardada 7 dias pelo fornecedor.
Música para um vídeo
Objetivo: uma faixa de fundo à medida do seu clip.
Com o servidor MCP: "Compõe uma faixa de piano lo-fi calma de 60 segundos, instrumental, e guarda-a." — 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)Custo: cerca de 0,016 $ por 60 segundos com ace-step-15. Cada modelo de música aceita durações, opções e formatos de ficheiro diferentes (duration_options, supports_lyrics, default_format…): leia primeiro as suas constraints em /v1/models. Privacidade: em /v1, através do TEE.
Responder a perguntas sobre os seus documentos (RAG)
Objetivo: um pequeno bot de perguntas e respostas sobre as suas próprias 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)Custo: 0,00015 $ por esta pergunta, embeddings incluídos; gerar uma única vez os embeddings de um grande conjunto de documentos custa uma fração de cêntimo por cada cem páginas. Privacidade: ambas as chamadas em /v1, através do TEE; text-embedding-bge-m3 e deepseek-v4-flash são modelos private. O mesmo funciona com LangChain ou LlamaIndex.
Pesquisa web com fontes
Objetivo: uma resposta curta e com fontes sobre algo recente.
Com o servidor MCP: "Pesquisa na web a última atualização da rede Base e resume-a com fontes." — carpe_web_search, carpe_web_scrape, depois 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 ler uma página completa, POST /v1/augment/scrape com {"url": "https://…"} devolve o seu conteúdo. Custo: 0,0054 $ por pesquisa ou leitura de página, mais a resposta (0,0056 $ no total para esta). Privacidade: em /v1, através do TEE; a pesquisa em si vai para a web.
Extração estruturada em grande escala
Objetivo: transformar milhares de e-mails, faturas ou tickets em JSON limpo, de forma barata e sem cobrança duplicada nas repetições.
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."))Custo: 0,00004 $ por esta fatura no router. Privacidade: o router pode servi-la fora do TEE: adicione extra_body={"privacy": "private"} para mercados que não guardam nada (a reprodução idempotente fica então desativada), ou use /v1. Mantenha-se dentro dos limites de taxa: consulte os seus com GET /v1/rate_limits.
Manter os gastos sob controlo
Objetivo: saber para onde vai o dinheiro, e garantir que um agente não o esgota descontroladamente.
- Por chave: crie uma chave por aplicação ou agente em API → Keys, para que os gastos de cada um fiquem separados (
GET /buyer/api-keys/usage). - No servidor MCP:
CARPE_MAX_PER_CALL_USDeCARPE_MAX_SPEND_USDrecusam uma chamada antes de ser enviada;CARPE_READ_ONLY=1para um assistente que só deve consultar informação. - Relatórios: execute o prompt
cost_report, ou pergunte "Quanto gastei esta semana, em que modelos, e quanto poupou o router?". Com a 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 resposta inclui o seu custo (
X-Carpe-Cost-Usdc-Microem/v1,X-Carpe-Route-Cost-Usdcem/router) e o seu saldo restante (X-Carpe-Available-Credits), para que uma aplicação possa parar por si própria. - Se uma chave for comprometida: revogue-a em API → Keys, ou deixe a chave revogar-se a si própria:
POST /v1/keys/self/revoke(a ferramenta MCPcarpe_revoke_this_key).
Um agente que paga por si próprio (x402)
Objetivo: um agente autónomo com a sua própria carteira e um orçamento rígido — sem conta, sem chave para gerir.
Carregue uma carteira dedicada com um pouco de USDC na Base e depois dê a sua chave privada ao servidor MCP, com um orçamento:
{
"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"
}
}
}
}O servidor assina um único permit USDC cujo valor é o orçamento: o Carpe nunca pode retirar mais de 2 $ no total, faça o agente o que fizer, e os gastos são memorizados entre reinícios. carpe_x402_status mostra a carteira, os seus USDC e o que resta. Para o fazer a partir do seu próprio código, ver x402 na referência da API.
Custo: o que o agente utilizar, aos mesmos preços. Privacidade: sem conta, sem e-mail: a carteira é a identidade.
Uma aplicação de chat privada para uma equipa
Objetivo: uma aplicação ao estilo do ChatGPT para a sua equipa, com modelos à sua escolha, sem que cada pessoa precise de uma conta em lado nenhum.
Implemente o Open WebUI ou o LibreChat com uma chave Carpe (ou uma chave por utilizador com o user_provided do LibreChat). Aponte-o para https://carpe-diem.xyz/api/operator/v1 para que todas as conversas passem pelo TEE, e deixe visíveis apenas modelos private para trabalho confidencial. Dê também à aplicação o servidor MCP (LibreChat) e as pessoas poderão pedir imagens, voz e pesquisa web a partir do mesmo chat.
Custo: por mensagem, ao preço do Carpe; acompanhe-o por chave em API → Usage. Privacidade: em /v1, através do TEE; com modelos private, o fornecedor do modelo não guarda nada.