● Documentação

Casos de utilização

Receitas completas — o que construir com o Carpe Diem, através do servidor MCP ou da API, com código funcional, quanto custa e que nível de privacidade oferece.

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 recipes

Os 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.

ReceitaCaminhoCusto típicoPrivado?
O modelo mais barato para uma tarefaMCP · APImenos de 0,0001 $ por respostaÀ sua escolha
Análise confidencial no TEEMCP · API~0,0005 $ por páginaSim — TEE, modelo que não guarda nada
Um agente de programação mais baratoAPIpor token — ver a página ModelsDepende do modelo
Imagens: gerar, editar, aumentar a resoluçãoMCP · API~0,03 $ pela cadeia completaTEE em /v1
Um pequeno clip de vídeoMCP · API~0,10 $ por 5 sTEE em /v1
Voz: ler em voz alta, transcreverMCP · API~0,001 $ por parágrafoTEE em /v1
Música para um vídeoMCP · API~0,016 $ por minutoTEE em /v1
Responder a perguntas sobre os seus documentos (RAG)API~0,0001 $ por perguntaÀ sua escolha
Pesquisa web com fontesMCP · API~0,006 $ por perguntaTEE em /v1
Extração estruturada em grande escalaAPI~0,0001 $ por documentoÀ sua escolha
Manter os gastos sob controloMCP · APIgratuito—
Um agente que paga por si próprio (x402)MCP · APIo que utilizar, com limite on-chainÀ sua escolha
Uma aplicação de chat privada para uma equipaAPIpor mensagemTEE 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_USD e CARPE_MAX_SPEND_USD recusam uma chamada antes de ser enviada; CARPE_READ_ONLY=1 para 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-Micro em /v1, X-Carpe-Route-Cost-Usdc em /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 MCP carpe_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.

Atualizado 2026-11-06