Incarn
Animate old family photos into short lifelike videos with AI.
我該用這個嗎
品質與安全性
發現項目(2)
- LOW在 list_examples 中
- LOW在 get_animation_status 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"photo-animation": {
"url": "https://api.incarn.co/mcp"
}
}
}遠端端點
https://api.incarn.co/mcpstreamable-http它能做什麼
工具清單
工具(5)
🟢list_examples(beat)
Voir des exemples avant/après d'animation de photos anciennes (galerie de démonstration).
輸入結構描述
{
"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#"
}輸出結構描述
{
"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.
輸入結構描述
{
"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#"
}輸出結構描述
{
"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.
輸入結構描述
{
"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#"
}輸出結構描述
{
"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.
輸入結構描述
{
"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#"
}輸出結構描述
{
"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.
輸入結構描述
{
"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#"
}輸出結構描述
{
"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#"
}建議的提示詞
list_examplesget_animation_statuslist_examplesget_animation_statusget_animation_statuslist_examples社群
證據