NovoConecte qualquer agente ao UberLLM: uma chave, todos os modelos, pelo preço de tabela ou menos.
UberLLM

Servidor MCP

UberLLM é um servidor MCP em https://api.uberllm.dev/mcp. Um agente conectado a ele pode listar modelos, precificar uma requisição, criar e editar imagens, criar vídeos e verificar seu saldo, sem escrever chamadas HTTP.

Ele está listado no [Registro MCP oficial]](https://registry.modelcontextprotocol.io/v0/servers?search=dev.uberllm) como dev.uberllm/mcp, para que clientes que leem o registro possam adicioná-lo pelo nome.

Ele usa o transporte HTTP com streaming. Faça login com a mesma API key que você usa para /v1, enviada como Authorization: Bearer ull_.... Uma chamada de ferramenta é cobrada, limitada e recusada exatamente como a mesma requisição para a API: os mesmos preços, os mesmos limites de gasto por API key, e requisições falhas não custam nada.

Código Claude

Substitua $KEY pela sua API key, ou defina KEY no seu shell primeiro:

claude mcp add --transport http uberllm https://api.uberllm.dev/mcp --header "Authorization: Bearer $KEY"

Adicione --scope user para usá-lo em todos os projetos. Execute claude mcp list para checar que ele se conectou.

Claude Desktop

Claude Desktop conecta-se a um servidor remoto com uma chave através de mcp-remote (precisa de Node.js). Abra Settings → Developer → Edit Config e adicione:

{
  "mcpServers": {
    "uberllm": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.uberllm.dev/mcp", "--header", "Authorization:${UBERLLM_AUTH}"],
      "env": { "UBERLLM_AUTH": "Bearer ull_your_key_here" }
    }
  }
}

O cabeçalho não tem espaço depois de : de propósito: no Windows, Claude Desktop não coloca aspas em espaços dentro de args. Reinicie Claude Desktop depois de salvar.

Cursor e outros clientes

Clientes que leem um arquivo mcpServers (o ~/.cursor/mcp.json do Cursor, por exemplo) aceitam:

{
  "mcpServers": {
    "uberllm": {
      "url": "https://api.uberllm.dev/mcp",
      "headers": { "Authorization": "Bearer ull_your_key_here" }
    }
  }
}

Ferramentas

Ferramenta O que faz Gasta
list_models Modelos que você pode chamar agora, com seus preços. type é chat, image, video ou music; search mantém modelos cujo id ou nome contém as palavras. Não
get_model Um modelo: seu preço e, para um modelo de mídia, parameters, um JSON Schema das opções que suas requisições aceitam. Não
quote Verifica uma requisição de imagem, vídeo, música ou text-to-speech contra o modelo e a precifica, sem criar nada. Retorna cost_usd, o preço listado, e max_cost_usd, o que é retido enquanto executa e o máximo que será cobrado. Não
generate_image Cria imagens a partir de um prompt. Retorna links e usage.cost_usd. Com return_image: true as imagens também vêm na resposta. Sim
edit_image Muda a imagem em image_url (ou as imagens em input_images) seguindo o prompt. Use um modelo de edição, como um cujo id termina em -edit. Sim
start_video Inicia um vídeo e retorna um job. Envie idempotency_key para que uma nova tentativa nunca inicie ou pague por um segundo vídeo. Sim, quando o vídeo é feito
get_job Um job de vídeo ou música: status, progresso e, uma vez que foi bem-sucedido, seus links de arquivo e custo. Não
wait_job Espera até que um job termine, por até timeout_seconds (50 no máximo). Se done for false, chame-o novamente. Não
balance O que você pode gastar agora e o que está retido para requisições e jobs ainda em execução, em dólares americanos. Não

Opções que um modelo lista em seu parameters schema (por exemplo duration_seconds, resolution ou aspect_ratio) vão em options em quote, generate_image, edit_image e start_video. Envie max_cost (dólares americanos) em uma ferramenta de gasto para recusar qualquer coisa que possa custar mais.

Um vídeo leva de cerca de 30 segundos a vários minutos. O fluxo usual é get_model, quote, start_video, então wait_job até que o status seja succeeded, failed, canceled ou expired.

Arquivos

Links de resultado (/v1/media/artifacts/...) precisam da mesma API key no cabeçalho Authorization para download. Arquivos são mantidos por cerca de 3 horas depois que um trabalho termina; links de imagem por cerca de 15 minutos. Veja Crie um vídeo ou imagem para os detalhes de cada solicitação.

Erros

Quando a API recusa uma chamada, a ferramenta responde com um resultado de erro contendo a própria mensagem e código da API, por exemplo insufficient_credits ou max_cost_too_low. Os códigos são os que estão em [Erros]](./errors). Uma requisição sem uma chave válida é respondida 401 antes que qualquer ferramenta seja executada.

Verificar a conexão

curl https://api.uberllm.dev/mcp \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'