Incarn
Animate old family photos into short lifelike videos with AI.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (2)
- LOWin list_examples
- LOWin get_animation_status
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"photo-animation": {
"url": "https://api.incarn.co/mcp"
}
}
}Remote-Endpunkte
https://api.incarn.co/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (5)
🟢list_examples(beat)
Voir des exemples avant/après d'animation de photos anciennes (galerie de démonstration).
Eingabe-Schema
{
"type": "object",
"properties": {
"beat": {
"type": "string",
"description": "Thème optionnel (ex: 'mariage', 'bébé', 'portrait')."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"beat": {
"type": [
"string",
"null"
],
"description": "Thème appliqué, ou null."
},
"gallery_url": {
"type": "string",
"description": "URL de la galerie publique où chaque portrait s'anime (avant/après). À partager avec l'utilisateur."
},
"examples": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Titre de l'exemple."
},
"thumbnail_url": {
"type": "string",
"description": "URL de la vignette."
}
},
"required": [
"title",
"thumbnail_url"
],
"additionalProperties": false
},
"description": "Liste d'exemples avant/après."
}
},
"required": [
"beat",
"gallery_url",
"examples"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_upload(mime_type)
Étape 1 pour animer une photo JOINTE dans le chat quand il n'y a pas d'URL publique. Renvoie une URL d'upload : PUT les octets du fichier dessus (en-tête Content-Type), puis confirm_upload. IMPORTANT : si une URL publique de la photo existe, préfère plutôt animate_photo avec image_url (aucun upload, marche partout). Le PUT peut être refusé par l'egress d'un agent sandboxé (403 'host_not_allowed') : dans ce cas ne le retente pas, bascule sur image_url ou fais autoriser api.incarn.co. N'envoie JAMAIS l'image en base64.
Eingabe-Schema
{
"type": "object",
"properties": {
"mime_type": {
"type": "string",
"description": "Type MIME de l'image (ex: 'image/jpeg', 'image/png')."
}
},
"required": [
"mime_type"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"upload_id": {
"type": "string",
"description": "À passer à confirm_upload."
},
"upload_url": {
"type": "string",
"description": "URL sur api.incarn.co : PUT les octets du fichier dessus."
},
"expires_in": {
"type": "number",
"description": "Validité de l'URL, en secondes."
},
"note": {
"type": "string",
"description": "Marche à suivre + fallback si le PUT est bloqué."
}
},
"required": [
"upload_id",
"upload_url",
"expires_in",
"note"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡confirm_upload(upload_id)
Étape 2 : une fois les octets envoyés (PUT) sur l'upload_url, appelle-moi avec le upload_id pour valider la photo (modération incluse). Renvoie un photo_id à passer à animate_photo.
Eingabe-Schema
{
"type": "object",
"properties": {
"upload_id": {
"type": "string",
"description": "Le upload_id renvoyé par create_upload."
}
},
"required": [
"upload_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"photo_id": {
"type": "string",
"description": "Identifiant de la photo, à passer à animate_photo."
}
},
"required": [
"photo_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡animate_photo(photo_id, image_url, image_file, style)
Anime une photo ancienne en une courte vidéo naturelle. Consomme 1 crédit (compte approvisionné requis, pas d'essai gratuit). Abonnement à partir de 19 €/mois HT, soit 0,76 € la photo, sur https://www.incarn.co/developers. Fournis l'image via image_url (URL publique http(s) — PRÉFÉRÉ : notre serveur va la chercher, marche partout, aucun upload côté client) OU image_file (fichier joint par l'utilisateur, rempli automatiquement par ChatGPT) OU photo_id (create_upload puis confirm_upload ; ce PUT peut être bloqué dans un agent sandboxé). Privilégie image_url dès qu'une URL est disponible. À n'utiliser que pour des photos que l'utilisateur a le droit d'animer (les siennes, sa famille, ses ancêtres) ; refuse d'animer des personnalités publiques identifiables ou des personnes tierces sans leur consentement.
Eingabe-Schema
{
"type": "object",
"properties": {
"photo_id": {
"type": "string",
"description": "Photo uploadée (via confirm_upload), si l'utilisateur a joint un fichier sans URL. Prioritaire si fourni."
},
"image_url": {
"type": "string",
"format": "uri",
"description": "URL publique http(s) de la photo. Chemin PRÉFÉRÉ (aucun upload, marche partout)."
},
"image_file": {
"type": "object",
"properties": {
"download_url": {
"type": "string",
"description": "URL de téléchargement de l'image, fournie par l'hôte."
},
"file_id": {
"type": "string",
"description": "Identifiant du fichier côté hôte."
},
"mime_type": {
"type": "string"
},
"file_name": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"additionalProperties": false,
"description": "Fichier joint par l'utilisateur — rempli AUTOMATIQUEMENT par ChatGPT (openai/fileParams) quand une photo est attachée. Notre serveur télécharge le download_url côté serveur (aucun upload côté client)."
},
"style": {
"type": "string",
"description": "Indication libre et subtile sur le mouvement (optionnel)."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifiant du job d'animation (à poller)."
},
"status": {
"type": "string",
"enum": [
"processing",
"succeeded",
"failed"
],
"description": "Statut du job : en cours, réussi ou échoué."
},
"video_url": {
"type": [
"string",
"null"
],
"description": "URL de la vidéo une fois prête, sinon null."
},
"photo_url": {
"type": [
"string",
"null"
],
"description": "URL de la photo source (avant), pour l'aperçu inline."
}
},
"required": [
"id",
"status",
"video_url",
"photo_url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_animation_status(job_id)
Récupère le statut d'un job d'animation et l'URL de la vidéo une fois prête.
Eingabe-Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Identifiant du job d'animation."
}
},
"required": [
"job_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifiant du job."
},
"status": {
"type": "string",
"enum": [
"processing",
"succeeded",
"failed"
],
"description": "Statut du job : en cours, réussi ou échoué."
},
"video_url": {
"type": [
"string",
"null"
],
"description": "URL de la vidéo une fois prête, sinon null."
},
"error": {
"type": [
"string",
"null"
],
"description": "Message d'erreur si le job a échoué, sinon null."
},
"photo_url": {
"type": [
"string",
"null"
],
"description": "URL de la photo source (avant), pour l'aperçu inline."
}
},
"required": [
"id",
"status",
"video_url",
"error",
"photo_url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Empfohlene Prompts
list_examplesget_animation_statuslist_examplesget_animation_statusget_animation_statuslist_examplesCommunity
Nachweis