Choisir les bons identifiants
Les outils existants restent
list_models, get_balance, chat_completion, generate_image, generate_video, get_task. Un même nom peut avoir un schéma différent avec un jeton personnel : lire tools/list après connexion.
Créer un jeton et se connecter
- Dans Tableau de bord → Agent, ouvrir Personal MCP.
- Donner un nom, sélectionner les permissions nécessaires et une durée de 1 à 365 jours, 30 jours par défaut.
- Pour
models:invokeouutilities:invoke, lier une clé API active vous appartenant. Ses limites de modèles, de budget et de RPM restent applicables. La lecture du compte ne nécessite pas de solde positif. - À la création, copier le jeton
mcp_user_dans les paramètres secrets du client. Ne pas l’insérer dans le code, les conversations ou les journaux. Le révoquer dans ce même tableau de bord lorsqu’il n’est plus nécessaire.
Authorization. Il négocie la version du protocole. OAuth n’est pas implémenté ; les clients exclusivement OAuth ne sont pas compatibles. Ce tableau décrit la connexion, pas un fichier propre à un client.
Découvrir les outils avant de les appeler
Après initialisation, appelerget_capabilities avec {} puis lire tools/list. La réponse contient audience: user, ownership: self, les scopes, les outils autorisés et oauth: false. Tous les autres outils personnels utilisent un objet input, même sans paramètres métier.
Permissions
Les droits se choisissent sur le site. MCP ne peut ni créer des autorisations, ni étendre ses permissions, ni transformer une clé en identifiant administrateur. Chaque appel vérifie les droits et la propriété, même pour un outil masqué.usage:content exige aussi une demande explicite et l’enregistrement du contenu activé sur la clé.
Écritures, résultats et nouvelles tentatives
Chaque écriture exige unidempotencyKey unique pour cette intention : 1 à 191 caractères ASCII imprimables sans espaces. Le conserver avant l’appel. Si la réponse est perdue, répéter le même outil, la même entrée et la même clé. Une entrée différente donne idempotency_conflict. Chaque étape d’envoi utilise sa propre clé.
structuredContent et en texte JSON dans content. La première exécution renvoie l’enveloppe ci-dessous. Une répétition renvoie replayed: true et un petit receipt avec les identifiants disponibles, sans résultat complet ni secret de clé.
execution_pending (409) indique un premier appel non résolu. execution_unknown (409) ou status: unknown signifie que l’action a peut-être déjà eu lieu. Consulter get_execution, puis la tâche, commande ou action concernée. Ne pas contourner cet état avec une nouvelle clé. Une exécution MCP terminée peut encore contenir une tâche de modèle ou une confirmation en attente.
Modèles et utilitaires
Choisir un ID public vialist_models → get_model_schema. body accepte la requête HTTP JSON complète prise en charge par le modèle. L’ID va dans body.model ; generate_content exige à la place le model extérieur. Les fichiers ne sont acceptés que par edit_image (image, image[], mask). Les autres médias utilisent des URL publiées.
task_id et suivre avec get_task. Avec stream: true, les événements sont collectés dans le résultat MCP final ; utiliser l’API HTTP pour le streaming SDK en direct. client_request_id, UUID v4 facultatif, sert au suivi des requêtes vidéo et reste distinct de idempotencyKey. Les modèles peuvent consommer des crédits.
La collecte des résultats de modèle est limitée à 8 Mio et 300 secondes. En cas d’interruption ou de dépassement, le reçu d’exécution conserve tout request_id connu. Vérifier get_execution et la requête ou tâche existante avant d’agir ; ne pas créer une nouvelle requête payante ni une nouvelle clé d’idempotence pour remplacer un appel non résolu. Une déconnexion du client ne signifie pas qu’une tâche acceptée a été annulée.
Suivre list_utilities → get_utility_schema → run_utility pour les 32 utilitaires. Les conditions et quotas restent applicables ; certains traitements par lot exigent un compte payant éligible. Mettre les valeurs dans parameters, les ID de fichiers personnels dans files. Les sorties binaires ou volumineuses deviennent des fichiers temporaires. Fichiers et sorties non JSON exigent aussi files:write.
Envoyer et récupérer des fichiers
- Appeler
begin_uploadavec nom, type MIME et taille exacte en octets, au maximum 250 Mio. - Appeler
upload_chunkavecindexcommençant à zéro etdataBase64. Chaque bloc décodé fait au plus 1 Mio ; les index se suivent sans interruption depuis zéro. - Appeler
finish_uploadavecfile_idet éventuellement SHA-256 en minuscules. Attendrestatus: ready. - Fournir l’ID à un outil compatible.
get_artifactrenvoie les métadonnées, ou les octets Base64 avecoffset. Suivrenext_offsetjusqu’ànull. Le lien exige une connexion au site comme propriétaire.
upload_image et upload_media publient séparément les fichiers : leurs URL sont partageables. Ne publier que les fichiers destinés à être accessibles par ces URL.
Avant de lire le contenu, les opérations vérifient la propriété, l’état prêt, le nombre et la taille des fichiers. Chaque référence compte dans les limites, y compris les ID répétés.
upload_media: au plus 20 fichiers / 250 Mio au total.upload_image: un fichier de 50 Mio maximum.edit_image: au plus 20 fichiers tous champs confondus, dont un seulmask; 50 Mio par fichier / 100 Mio au total. Les limites de tableau par champ du schéma restent applicables.run_utility: les limites de nombre, de taille individuelle et totale deget_utility_schemas’appliquent, avec un plafond absolu de 250 Mio au total, même si le catalogue autorise davantage.
Confirmation sur le site et paiement
- Secret d’une clé :
start_reveal_key_action→ validation deconfirmation_urlpar l’utilisateur →reveal_api_keyavec l’idde l’action commeaction_id. L’autorisation concerne cette clé et ce jeton, expire 15 minutes après création de l’action et ne sert qu’une fois.create_api_keyrenvoie seulement des métadonnées. - Résiliation :
cancel_subscriptionlance la confirmation. L’utilisateur l’exécute sur le site. Vérifierget_account_actionet l’abonnement avant d’annoncer l’achèvement. - Mot de passe/suppression :
start_account_actionavecpassword_changeoudelete_account. L’utilisateur saisit codes et mots de passe sur le site, jamais auprès de l’assistant. La suppression révoque l’accès et déconnecte ; ne plus interroger MCP ensuite. - Paiement :
list_billing_products→create_checkout→ paiement utilisateur →get_payment_status. Un lien ne prouve pas le paiement. - Messages réels :
resend_invoiceettest_credit_alertenvoient un email ou webhook, uniquement sur demande explicite.
Gérer les erreurs sans doublons
Une erreur de connexion/authentification peut être HTTP. Un échec d’outil définitisError: true ; lire structuredContent.error.code, status, execution_id et receipt. Une répétition peut aussi renvoyer un status d’exécution non terminé.
Points de départ en lecture seule
- Dépenses :
get_balance→summarize_usage→ détails aveclist_usage. - Échec :
diagnose_requestavectask_id; vérifier erreur réelle et remboursement avant un nouvel appel. - Intégration :
list_models→get_model_schema→get_api_guide, sans exécuter de modèle. - Sécurité du compte :
list_api_keys→get_api_key→list_login_records.
from inclus, to exclu. Fenêtre par défaut de 30 jours, maximum 366. Seuls les enregistrements conservés sont couverts ; un jour absent ne prouve pas une utilisation nulle. get_overview.timezoneOffset suit JavaScript getTimezoneOffset en minutes (UTC moins heure locale), défaut 0. Les listes et synthèses restent en UTC.
Dans summarize_usage, creditsCharged et netCreditsCharged sont le débit net conservé. linkedRefundCredits couvre les remboursements connus liés aux tâches asynchrones seulement. knownGrossCredits les ajoute au net, sans représenter une dépense brute complète. totalTokens, averageLatencyMs, pending, processing concernent les requêtes conservées correspondantes.
Consulter la référence complète, l’authentification et les erreurs HTTP API.