NouveauBranchez n’importe quel agent sur UberLLM : une clé, tous les modèles, au prix catalogue ou moins.
UberLLM

Serveur MCP

UberLLM est un serveur MCP à https://api.uberllm.dev/mcp. Un agent qui y est connecté peut lister les modèles, estimer le coût d'une requête, créer et modifier des images, créer des vidéos et vérifier votre solde, sans écrire d'appels HTTP.

Il est listé dans le registre MCP officiel sous le nom dev.uberllm/mcp, ainsi les clients qui lisent le registre peuvent l'ajouter par son nom.

Il utilise le transport HTTP Streamable. Connectez-vous avec la même API key que vous utilisez pour /v1, envoyée comme Authorization: Bearer ull_.... Un appel d'outil est facturé, limité et refusé exactement comme la même requête à l'API : les mêmes prix, les mêmes limites de dépenses par API key, et les requêtes échouées ne coûtent rien.

Code Claude

Remplacez $KEY par votre clé API, ou définissez KEY dans votre shell d'abord :

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

Ajoutez --scope user pour l'utiliser dans chaque projet. Exécutez claude mcp list pour vérifier qu'il est connecté.

Claude Desktop

Claude Desktop se connecte à un serveur distant avec une clé via mcp-remote (nécessite Node.js). Ouvrez Paramètres → Développeur → Modifier la configuration et ajoutez :

{
  "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" }
    }
  }
}

L'en-tête n'a pas d'espace après : volontairement : sur Windows, Claude Desktop ne met pas entre guillemets les espaces à l'intérieur de args. Redémarrez Claude Desktop après avoir enregistré.

Cursor et autres clients

Les clients qui lisent un fichier mcpServers (le ~/.cursor/mcp.json de Cursor, par exemple) prennent :

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

Outils

Outil Ce qu'il fait Dépenses
list_models Modèles que vous pouvez appeler maintenant, avec leur prix. type est chat, image, video ou music ; search conserve les modèles dont l'id ou le nom contient les mots. Non
get_model Un modèle : son prix et, pour un modèle média, parameters, un JSON Schema des options que ses requêtes acceptent. Non
quote Vérifie une requête d'image, de vidéo, de musique ou de synthèse vocale par rapport au modèle et la tarifie, sans rien produire. Retourne cost_usd, le prix affiché, et max_cost_usd, ce qui est retenu pendant l'exécution et le montant maximum facturé. Non
generate_image Crée des images à partir d'un prompt. Retourne des liens et usage.cost_usd. Avec return_image: true les images sont aussi renvoyées dans la réponse. Oui
edit_image Modifie l'image dans image_url (ou les images dans input_images) en suivant le prompt. Utilisez un modèle d'édition, comme un dont l'id se termine par -edit. Oui
start_video Démarre une vidéo et retourne un job. Envoyez idempotency_key pour qu'une nouvelle tentative ne démarre ni ne paie jamais une deuxième vidéo. Oui, quand la vidéo est faite
get_job Un job vidéo ou musical : statut, progression et, une fois réussi, ses liens de fichiers et son coût. Non
wait_job Attend qu'un job se termine, jusqu'à timeout_seconds (50 au maximum). Si done est false, rappelez-le. Non
balance Ce que vous pouvez dépenser maintenant et ce qui est retenu pour les requêtes et jobs toujours en cours, en dollars US. Non

Les options qu'un modèle liste dans son schéma parameters (par exemple duration_seconds, resolution ou aspect_ratio) vont dans options sur quote, generate_image, edit_image et start_video. Envoyez max_cost (dollars US) sur un outil de dépense pour refuser tout ce qui pourrait coûter plus cher.

Une vidéo prend d'environ 30 secondes à plusieurs minutes. Le flux habituel est get_model, quote, start_video, puis wait_job jusqu'à ce que le statut soit succeeded, failed, canceled ou expired.

Fichiers

Les liens de résultat (/v1/media/artifacts/...) nécessitent la même clé API dans l'en-tête Authorization pour les télécharger. Les fichiers sont conservés pendant environ 3 heures après la fin d'une tâche ; les liens d'image pendant environ 15 minutes. Consultez Créer une vidéo ou une image pour les détails de chaque requête.

Erreurs

Lorsque l'API refuse un appel, l'outil répond avec un résultat d'erreur portant le message et le code propres à l'API, par exemple insufficient_credits ou max_cost_too_low. Les codes sont ceux décrits dans Erreurs. Une requête sans clé valide reçoit la réponse 401 avant l'exécution de tout outil.

Vérifier la connexion

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"}'