Connecter un agent avec MCP
MCP est une autre porte d'entrée sur la même API Pro : mêmes permissions, mêmes limites, mêmes crédits, même journal d'activité. Un agent se connecte à une seule adresse et voit des outils qu'il peut utiliser en langage naturel. Il n'y a rien à installer ni à écrire.
Claude Desktop, claude.ai, ChatGPT, Claude Code, Cursor, VS Code et Windsurf parlent tous ce protocole.
L'adresse est un secret
https://api.tendre.ai/mcp/<key>La clé est une clé API Pro, créée dans l'appli sous Réglages > API.
Relis bien cette adresse : la clé est à l'intérieur. Quiconque possède ce lien effectue des rendus avec tes crédits, dans la limite de tes plafonds. Traite-la exactement comme un mot de passe. Ne la colle pas dans un document partagé, un ticket ou une capture d'écran, et si elle fuite, révoque la clé dans l'appli : l'agent s'arrête immédiatement.
Les agents qui te permettent de définir un en-tête peuvent utiliser https://api.tendre.ai/mcp avec Authorization: Bearer <key> à la place, ce qui évite que la clé apparaisse dans l'URL.
Connecter ton agent
Tout ce qui suit a été vérifié le 22 septembre 2026. Ce sont les menus d'autres entreprises, et ils bougent : Claude et OpenAI ont tous deux changé les leurs le jour même où cette page a été rédigée, et OpenAI limite aussi les serveurs MCP personnalisés à certains abonnements. Si un chemin ne correspond plus à ce que tu vois, cherche "connecteurs" ou "MCP" dans les paramètres du produit concerné. La seule chose qui ne change pas, c'est l'adresse que tu colles.
- Claude Desktop, claude.ai et l'appli mobile : Personnaliser > Connecteurs > Ajouter un connecteur personnalisé, colle l'adresse, sans authentification supplémentaire. Lien direct :
https://claude.ai/new#customize/connectors. Ça fonctionne immédiatement, sur tous les appareils du compte, sans rien à redémarrer. (Les connecteurs se trouvaient auparavant sous Paramètres ; cette page renvoie maintenant ici.) - ChatGPT : active d'abord le mode développeur dans les paramètres, puis Plugins > Nouveau plugin > Outil personnalisé. Nomme-le Tendre.AI, mets l'adresse dans Server URL, règle l'authentification sur None, coche l'avertissement pour confirmer que tu comprends, et crée.
- Claude Code :
claude mcp add --transport http tendre https://api.tendre.ai/mcp/<key> - Cursor, dans
~/.cursor/mcp.json:
{ "mcpServers": { "tendre": { "url": "https://api.tendre.ai/mcp/<key>" } } }- VS Code, dans
mcp.json:
{ "servers": { "tendre": { "type": "http", "url": "https://api.tendre.ai/mcp/<key>" } } }- Windsurf, dans
~/.codeium/windsurf/mcp_config.json:
{ "mcpServers": { "tendre": { "serverUrl": "https://api.tendre.ai/mcp/<key>" } } }Le plus simple est l'onglet Réglages > Connecteurs de l'appli : il crée la clé et écrit ces réglages pour toi, en un clic, dans les agents installés sur ton ordinateur. Pour les agents web (claude.ai, ChatGPT), il copie l'adresse, que tu colles dans leurs réglages de connecteurs.
Les trente et un outils
| Outil | Ce qu'il fait |
|---|---|
tendre_generate_image | Une ou plusieurs images (count de 1 à 8), avec ou sans LoRA, ou la retouche d'une image source (mode edit, img2img, ou inpaint avec mask_url). seed refait ou décline un rendu précédent. Il attend le rendu par défaut, jusqu'à 55 s, et place les images directement dans la conversation. wait=false retourne des identifiants à la place. |
tendre_generate_video | Soumet un clip (format, son, durée, cadence fps, LoRA) à partir d'un prompt, en animant une image (image d'arrivée en plus pour une transition), en mode Ultra (quality max, 1080p au plus ; à la seconde, seconds donne la durée, de 4 à 30 s), avec des images clés (keyframes, mode Qualité), en cohérence renforcée (consistency enhanced, jusqu'à 721 images par plan, soit 30 s à 24 i/s, prolongations comprises), ou en prolongeant le clip précédent (extend_job_id, avec sequence_id pour une longue vidéo). Un plan Ultra se prolonge vers l'avant ou vers l'arrière (extend_direction) ; au-delà de 24 heures, depuis son fichier original (extend_video_url, ou extend_upload_id par tendre_upload_link, envoyé tel quel). seed refait ou décline un clip précédent. Un clip prend plusieurs minutes : par défaut l'outil attend la fin (55 s au plus) et rend le lien MP4, ou l'identifiant si le rendu n'est pas fini ; wait=false rend l'identifiant tout de suite. Pendant l'attente, le bouton stop de l'utilisateur annule le rendu, et rien n'est facturé. |
tendre_character_create | Crée un personnage (sept vues) à partir d'une photo : lien de dépôt, fichier joint dans ChatGPT, image rendue dans la conversation ou adresse publique. Attend la fabrication (55 s au plus) et met les vues dans la conversation (des aperçus de 1024 px ; les liens du texte donnent les vues entières). 6 crédits, tenue comprise. Voir Personnages. |
tendre_character_get | État d'un personnage et ses vues (wait attend la fin de la fabrication ; sheet_id choisit une sheet). |
tendre_character_list | Les personnages du compte, ceux créés dans l'appli compris, avec la date à laquelle chacun sera effacé. |
tendre_character_redo_view | Refait une vue ratée ou tournée du mauvais côté (1 crédit), avec au besoin une instruction à l'impératif pour un personnage ou une sheet créés par l'API ; sheet_id vise une sheet précise. |
tendre_character_set_view | Remplace une vue d'un personnage créé par l'API, ou d'une sheet ajoutée par tendre_character_add_sheet (sheet_id), par une image de l'utilisateur, sans génération (gratuit). |
tendre_character_add_sheet | Ajoute une tenue (une sheet) à un personnage existant, de l'API ou de l'appli : vues prêtes déposées gratuitement (views, rôle par rôle), rôles manquants générés (1 crédit chacun), ou, sans vues, la tenue mise sur sa vue en pied puis six vues générées (7 crédits). Rend le sheet_id, à passer à tendre_character_get, tendre_character_redo_view, tendre_character_set_view et tendre_multiref_video. Voir Ajouter une tenue. |
tendre_character_delete | Efface un personnage et ses vues. |
tendre_subject_create | Enregistre un lieu, un objet, un animal, un style ou une tenue à partir de 1 à 6 images de l'utilisateur, pour le réutiliser dans le Multi-Ref. Gratuit. Voir Lieux, objets, animaux, styles et tenues. |
tendre_subject_list, tendre_subject_get, tendre_subject_delete | Les lieux, objets, animaux, styles et tenues du compte (ceux de la Bibliothèque de l'appli compris), leur fiche et leurs images, leur effacement. Les éléments offerts par Tendre.AI rejoignent la liste à sa première lecture. |
tendre_subject_generate | Génère un lieu, un objet, un animal, un style ou une tenue sans image de l'utilisateur : une image de départ tirée d'une description en anglais (ou importée, gratuite), puis des vues (voir Générer un sujet sans image). 1 crédit par image rendue, 6 images au plus ; attend 55 s, puis rend l'état et les images. |
tendre_subject_add_views, tendre_subject_redo_view | Ajoute des vues à un sujet généré, ou en refait une (instructions remplace sa consigne ; start refait l'image de départ tant qu'aucune vue n'en part). |
tendre_multiref_video | Un clip Multi-Ref avec 1 à 4 personnages, objets et animaux désignés par @Nom dans le prompt (subjects ; en Ultra, jusqu'à 30 images en tout, dont 12 personnages au plus, 8 conseillés), un lieu enregistré (location_id) ou un décor ponctuel facultatif, Qualité ou Ultra (à la seconde : seconds, de 4 à 30 s), format, durée, cadence fps, son, seed, et avec le son une voix pour les deux premiers personnages (voice_url, l'adresse publique d'un fichier audio, 4 Mo au plus ; range les personnages dans l'ordre du dialogue). Attend la fin comme tendre_generate_video, et le bouton stop annule le rendu. En Ultra, aussi styles, outfits (avec worn_by) et motion (une vidéo de mouvement : video_upload_id, video_job_id ou video_url ; mode camera ou choreography). Voir Multi-Ref Vidéo. Avec le son, les deux premiers personnages parlent par défaut avec la voix de leur fiche (voice generated pour une voix faite par le modèle). |
tendre_multiref_image | Crée une image avec des personnages (par leur vue ou leur LoRA), des objets, des animaux et un lieu, désignés par @Nom dans le prompt anglais (voir Créer une image). Rend le jobId tout de suite : l'image prend 1 à 3 minutes, suis-la avec tendre_job_status (kind images). quote_only donne le prix sans rien lancer. |
tendre_face_swap | Face swap (le personnage entier, ou la tête seule avec part head) : la personne filmée dans une de tes vidéos (lien de dépôt, fichier joint dans ChatGPT, adresse publique, 95 Mo au plus) ou dans une vidéo rendue dans la conversation devient un de tes personnages, sur un passage de 20 s au plus (start, duration), avec scene, name, zone, likeness et, avec le son, la voix du personnage (voice_url, l'adresse publique d'un fichier audio, 2 Mo au plus). Par défaut, le son prend la voix de la fiche du personnage s'il en a une (voice original garde la voix filmée). Transitions transition_in et transition_out : cut (par défaut), morphing (un fondu) ou glitch (un effet numérique sur la silhouette) ; avec une transition, c'est la vidéo entière qui revient (60 s au plus). La réponse donne les bornes du passage (passage). 6 crédits par seconde de passage. Attend la fin comme tendre_generate_video, et le bouton stop annule le rendu. Voir Face swap. |
tendre_sequence_create | Ouvre une séquence, pour construire une longue vidéo plan par plan. |
tendre_sequence_export | Assemble les plans d'une séquence en une seule vidéo et retourne son lien MP4. |
tendre_project_export | Exporte le dossier de projet d'un rendu (job_id) ou d'une séquence (sequence_id) de moins de 24 heures : le manifeste dans la réponse, le ZIP par un lien. manifest_only rend le manifeste seul. Pour une séquence, include_film ajoute le film assemblé. include_media, include_references et exclude_references choisissent ce qui y entre, comme la fenêtre d'export de l'application. Gratuit. Voir Exporter le dossier du projet. |
tendre_upload_link | Crée un lien de dépôt pour l'une de tes images ou de tes vidéos (une photo ou une vidéo jointe à la conversation, un fichier sur ton ordinateur ou ton téléphone). Tu l'ouvres et y déposes le fichier, ou un agent qui a accès à tes fichiers l'envoie lui-même. Une vidéo (MP4, MOV, WebM ou MKV, 95 Mo au plus) sert au tendre_face_swap. Gratuit. |
tendre_job_status | Où en est un rendu. Pour une vidéo, il attend la fin par défaut (55 s au plus, wait=false pour un simple coup d'œil), et le bouton stop annule le rendu pendant l'attente. Une fois terminé, une image revient dans la conversation et une vidéo sous forme de lien. |
tendre_cancel_job | Annule un rendu. Rien n'est facturé. |
tendre_list_loras | Les personnages du compte, avec le nom à passer en lora et le mot déclencheur à mettre dans le prompt. |
tendre_buy_credits | Les packs de crédits avec les tarifs du jour, et le lien d'achat de ta licence. Au-delà du plus gros pack, il propose aussi un montant libre (paramètre credits). Cet outil ne paie pas : tu ouvres le lien et tu paies, par carte ou en crypto. |
tendre_purchase_credits | Achète un pack (ou un montant libre) sur ta carte enregistrée, si tu as autorisé ton agent à acheter dans la recharge automatique de ta page compte, dans ton plafond mensuel. L'agent doit annoncer le pack et son prix, puis attendre ton oui dans la conversation (confirmed). En cas de refus, il te donne le lien d'achat ordinaire. Un e-mail confirme chaque achat. |
tendre_credits | Solde, plafonds de la clé, rendus en cours. |
tendre_pricing | La grille tarifaire du jour. |
tendre_quote | Ce que coûtera un rendu, avant de le lancer : la fabrication d'un personnage (kind characters) et un clip Multi-Ref (multiref true) compris. Prend consistency pour un clip en cohérence renforcée, et fps : la réponse donne la durée en secondes à cette cadence. Pour un Ultra à la seconde, seconds fixe la durée. Pour une prolongation Ultra, extend_job_id et extend_direction. |
Si la connexion se coupe avant la réponse de tendre_generate_image, tendre_generate_video, tendre_multiref_video ou tendre_face_swap (délai d'un proxy dépassé, erreur 524, programme arrêté), le rendu n'est pas lancé, ou il est annulé aussitôt, et rien n'est facturé : rappelle simplement l'outil. Une création de personnage (tendre_character_create), elle, continue : la relancer avec la même photo et les mêmes réglages rend le même personnage, sans rien facturer deux fois.
À la connexion, le serveur transmet à l'agent les règles de la maison : les prompts en anglais, le mot déclencheur est obligatoire avec un LoRA, annoncer le coût avant un rendu coûteux, vérifier les vues d'un nouveau personnage avant son premier clip et refaire une vue ratée, et un personnage, lieu, objet ou animal inutilisé pendant un an est effacé.
Partir d'une image
Tu peux demander plus qu'une image partie de rien : « génère une image puis anime-la », une transition entre deux images, une retouche.
L'agent désigne l'image de deux façons. Soit par son identifiant, quand elle a été rendue dans la conversation (image_job_id ; le fichier est relu de notre côté tant que le moteur le garde, quelques dizaines de minutes). Soit par l'adresse publique d'un PNG ou d'un JPEG de 12 Mo au plus (image_url ; les adresses privées sont refusées). Pour une transition, l'image d'arrivée se donne de la même façon (end_image_job_id, end_image_url). Sans format imposé, le clip prend celui de l'image. Une transition sort à la taille demandée, du 480p au 1080p, et se paie comme un clip de ce format. Pour des images clés (mode Qualité), keyframes prend 1 à 4 objets { at, image_job_id | image_url | image_upload_id, strength } et demande une durée fixe (length).
Ta propre photo
- ChatGPT : joins l'image à la conversation et demande. Rien d'autre.
- Tous les autres agents (Claude, Cursor…) : l'agent te donne un lien de dépôt (
tendre_upload_link). Ouvre-le, glisse-y l'image ou colle-la, puis dis à l'agent que c'est fait. Un agent qui a accès à tes fichiers (Claude Code, Cursor, VS Code) l'envoie lui-même.
Ta photo n'est jamais écrite sur disque. Elle reste 30 minutes en mémoire, le temps du rendu, puis elle est oubliée. Le lien de dépôt ne sert qu'à la clé qui l'a créé. Deux exceptions : une photo qui sert à créer un personnage, qui devient l'une de ses vues, et les images d'un lieu, objet ou animal enregistré. Les deux sont stockées chiffrées, à ta main, jusqu'à ce que tu les effaces ou après un an sans usage (voir plus bas).
Des personnages dans le même clip
Demande « fais un personnage avec cette photo » : l'agent le crée (6 crédits), te montre les sept vues, et refait une vue ratée. Puis demande la scène, « un clip où Lea tend une tasse à Tom dans une cuisine ensoleillée » : il les fait jouer avec le Multi-Ref Vidéo, chacun désigné par @Nom, jusqu'à quatre par clip (douze en Ultra, huit conseillés). Les personnages créés dans l'appli y sont aussi. Une vue qui sort mal à chaque fois (une prothèse du mauvais côté, par exemple) se refait avec une consigne, ou se remplace par ta propre image.
Donne à l'agent quelques images d'un lieu, d'un objet ou d'un animal et dis-lui ce que c'est : il l'enregistre (gratuit), et tu peux ensuite demander « @Lea attend @Tram sur @Esplanade ». Jusqu'à quatre personnages, objets et animaux en tout, plus un lieu enregistré comme décor ; en Ultra, jusqu'à 30 images en tout, dont douze personnages au plus (huit conseillés). Le détail est sur la page Personnages et dans Multi-Ref Vidéo.
Un personnage dans ta propre vidéo (Face swap)
Envoie une vidéo à l'agent et nomme un de tes personnages : avec tendre_face_swap, la personne filmée
devient ce personnage, visage, cheveux, corps et tenue, en gardant ses gestes, ses lèvres, le son et le
décor, sur un passage de 20 s au plus. La vidéo vient :
- d'un lien de dépôt (
tendre_upload_linkprend aussi une vidéo : MP4, MOV, WebM ou MKV, 95 Mo au plus) ; - d'un fichier joint dans ChatGPT ;
- d'une adresse publique (les adresses privées sont refusées) ;
- ou d'une vidéo rendue dans la conversation.
Pour ne changer que la tête (visage et cheveux) et garder le corps filmé, les vêtements et le décor, demande-le à l'agent : il envoie part head.
Par défaut, le son de la vidéo prend la voix de la fiche du personnage s'il en a une ; pour garder la voix filmée, demande-le : l'agent envoie voice original. Une voix donnée par voice_url passe devant, et ses 20 premières secondes servent.
Un personnage créé dans l'appli n'a pas de nom de notre côté : l'agent lui en donne un (name) pour
l'appeler par @Nom dans la scène. Pour la voix du personnage, donne l'adresse publique d'un fichier
audio de 2 Mo au plus (voice_url) : le son de la vidéo est converti dans cette voix. Ta vidéo transite
par nos serveurs le temps d'être préparée, puis part vers la carte graphique qui fait le rendu. Le
résultat revient par un lien vidéo, comme tout clip, au format de travail (environ 1 million de
pixels) : la pleine résolution et l'enchaînement de plusieurs personnages restent propres à l'appli sur
ordinateur. Le prix se compte à la seconde de passage, voir Face swap.
Les transitions, comme les coins des cartes de l'appli : transition_in passe de la personne filmée au personnage au début du passage, transition_out revient du personnage à la personne filmée à la fin. Chacune vaut cut (par défaut, pas de transition), morphing (un fondu, environ 0,5 s) ou glitch (un effet numérique limité à la silhouette, environ 0,4 s). Pas de transition d'entrée si le passage commence la vidéo, ni de sortie s'il la finit.
Avec une transition, tu récupères la vidéo entière, 60 s au plus (au-delà, elle est refusée) : la personne filmée, la transition, le personnage sur son passage, la transition, puis de nouveau la personne filmée. Elle revient au format de travail (environ 1 million de pixels), à 24 ou 30 i/s ; l'appli sur ordinateur, elle, recolle le personnage en pleine résolution et à la cadence d'origine. Le passage rendu (et facturé) s'allonge d'environ 0,3 s de chaque côté qui a une transition. La pose des transitions est gratuite et prend de quelques secondes à une minute après le rendu, pendant lesquelles tendre_job_status répond pending (phase assembling the transitions). Le video_job_id d'un tel rendu désigne sa vidéo entière : redonne-le à tendre_face_swap pour mettre un second personnage dans la même vidéo. Notre serveur traite deux face swaps avec transitions à la fois ; au-delà, l'outil te demande de réessayer dans quelques minutes.
La réponse donne les bornes exactes du passage, en secondes (passage : start, end). Sans transition, un passage compte 8n+1 images, arrondi en dessous : 2,9 s demandées donnent 2,7 s. Pour coller un autre passage juste après, commence-le à end. Avec une transition, le passage est exact à l'image.
Pour coller deux personnages, commence le second au passage.end du premier : il s'y colle à l'image près, et sa transition d'entrée se fait entière juste avant le raccord (environ 0,4 s de glitch ou 0,5 s de fondu rendues en plus de son côté), sans repasser par la personne filmée. Laisse le transition_out du premier en cut : sinon l'outil prévient que les deux transitions se chevaucheraient. La réponse porte alors passage.joined_to_previous.
N'utilise que des vidéos de personnes qui ont donné leur accord : c'est une règle des conditions d'utilisation.
Les images reviennent dans la conversation, les vidéos sont un lien qui expire
Une image arrive dans la conversation : le protocole prévoit un emplacement pour le contenu image.
Une vidéo, non, et elle pèse trop lourd pour ça. Elle revient sous forme de lien qui relaie le fichier depuis la sortie du moteur et reste valide pendant quelques dizaines de minutes. Rien n'est conservé de notre côté ensuite.
Ainsi, un agent capable d'écrire sur ton disque (Claude Code, Cursor, VS Code) est invité à sauvegarder le fichier pour toi. Un agent qui ne le peut pas, comme un chat web, ne peut que te transmettre le lien. Télécharge-le pendant qu'il est actif : une fois expiré, le clip est perdu, et le rendre à nouveau coûte des crédits.
Il y a trois exceptions. Une longue vidéo : ses plans restent sur notre serveur uniquement le temps de l'assemblage, et sont effacés 30 minutes après l'ajout du dernier ; la vidéo assemblée est conservée 24 heures, pour que tu puisses la retrouver si tu reviens plus tard, puis elle est effacée à son tour. Et un personnage : ses vues, dont la photo envoyée, sont stockées chiffrées sous ta licence jusqu'à ce que tu l'effaces (tendre_character_delete) ou qu'il reste un an sans servir. Enfin, un Face swap avec transition : la vidéo entière reste dans la mémoire de notre serveur jusqu'à la pose du personnage et de ses transitions, la vidéo finale 30 minutes de plus, et ta vidéo ne passe sur le disque que le temps de sa préparation. Rien d'autre ne reste chez nous.
Qualité maximale
Pour le rendu le plus fin, demande-le simplement (« en qualité maximale ») : l'agent passe en mode Ultra, t'annonce le prix d'abord, et te prévient que le rendu prend plus de temps. La vidéo va jusqu'au 1080p : il n'y a pas de 4K.
Longue vidéo
Un clip dure 20 secondes au maximum à 24 i/s (16 s à 30, la cadence par défaut), 30 s en cohérence renforcée à 24 i/s. Pour plus long, il suffit de demander la vidéo entière (« une vidéo d'une minute de… ») : il n'y a rien d'autre à savoir. L'agent la rend plan par plan, chaque plan continuant le mouvement du précédent sans arrêt au raccord, puis les assemble en un seul MP4 et te donne son lien.
Les plans se rendent l'un après l'autre, et chacun prend plusieurs minutes. Chacun coûte le prix d'un clip, que tendre_quote donne avant que rien ne démarre. En cohérence renforcée (consistency enhanced), une minute tient en deux plans de 30 s à 24 i/s, chacun au double du prix de son format. Le son continue d'un plan à l'autre, sauf en cohérence renforcée et en Ultra, où il repart à neuf à chaque plan. Les règles et les appels qui sont derrière se trouvent sur la page Vidéos.
Plusieurs plans avec des coupes franches, jusqu'à 20 secondes, n'ont pas besoin de séquence : demande les plans, et l'agent les écrit dans un seul clip (comment les décrire).
Sous le capot
Le transport est MCP Streamable HTTP, version de protocole 2025-06-18, sans état : un message JSON-RPC par POST, une réponse JSON, sans flux serveur (un GET répond 405). Les méthodes sont initialize, ping, tools/list et tools/call, et chaque outil appelle la même API décrite dans ces pages, avec la clé de l'agent.