Incarn MCP
An official MCP server provided by Incarn that allows AI agents to animate old family photos and vintage portraits into short, realistic videos using the Seedance 2.0 model. It enables programmatic access to the animation service for use cases like genealogy, memorial tributes, and historical education.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.incarn.co/mcpWhat its tools do
5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (2)
Can change data (3)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to incarn.co ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Animate old family photos into short videos
- Create memorial tributes from vintage portraits
- Bring ancestors to life for genealogy projects
- Animate historical figures for educational content
Source and maintenance
Protocol and capabilities
- Server
- incarn 1.1.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 5 advertised
- Resources
- 1 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Tools
5 advertised
list_examples — Exemples d'animations
Voir des exemples avant/après d'animation de photos anciennes (galerie de démonstration).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"beat": {
"type": "string",
"description": "Thème optionnel (ex: 'mariage', 'bébé', 'portrait')."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"beat",
"gallery_url",
"examples"
],
"properties": {
"beat": {
"type": [
"string",
"null"
],
"description": "Thème appliqué, ou null."
},
"examples": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"thumbnail_url"
],
"properties": {
"title": {
"type": "string",
"description": "Titre de l'exemple."
},
"thumbnail_url": {
"type": "string",
"description": "URL de la vignette."
}
},
"additionalProperties": false
},
"description": "Liste d'exemples avant/après."
},
"gallery_url": {
"type": "string",
"description": "URL de la galerie publique où chaque portrait s'anime (avant/après). À partager avec l'utilisateur."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}create_upload — Préparer un upload de photo
É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",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"mime_type"
],
"properties": {
"mime_type": {
"type": "string",
"description": "Type MIME de l'image (ex: 'image/jpeg', 'image/png')."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"upload_id",
"upload_url",
"expires_in",
"note"
],
"properties": {
"note": {
"type": "string",
"description": "Marche à suivre + fallback si le PUT est bloqué."
},
"upload_id": {
"type": "string",
"description": "À passer à confirm_upload."
},
"expires_in": {
"type": "number",
"description": "Validité de l'URL, en secondes."
},
"upload_url": {
"type": "string",
"description": "URL sur api.incarn.co : PUT les octets du fichier dessus."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}confirm_upload — Finaliser un upload de photo
É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",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"upload_id"
],
"properties": {
"upload_id": {
"type": "string",
"description": "Le upload_id renvoyé par create_upload."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"photo_id"
],
"properties": {
"photo_id": {
"type": "string",
"description": "Identifiant de la photo, à passer à animate_photo."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}animate_photo — Animer une photo
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",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"style": {
"type": "string",
"description": "Indication libre et subtile sur le mouvement (optionnel)."
},
"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",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "Identifiant du fichier côté hôte."
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"description": "URL de téléchargement de l'image, fournie par l'hôte."
}
},
"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).",
"additionalProperties": false
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"status",
"video_url",
"photo_url"
],
"properties": {
"id": {
"type": "string",
"description": "Identifiant du job d'animation (à poller)."
},
"status": {
"enum": [
"processing",
"succeeded",
"failed"
],
"type": "string",
"description": "Statut du job : en cours, réussi ou échoué."
},
"photo_url": {
"type": [
"string",
"null"
],
"description": "URL de la photo source (avant), pour l'aperçu inline."
},
"video_url": {
"type": [
"string",
"null"
],
"description": "URL de la vidéo une fois prête, sinon null."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": false
}get_animation_status — Statut d'une animation
Récupère le statut d'un job d'animation et l'URL de la vidéo une fois prête.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "Identifiant du job d'animation."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"status",
"video_url",
"error",
"photo_url"
],
"properties": {
"id": {
"type": "string",
"description": "Identifiant du job."
},
"error": {
"type": [
"string",
"null"
],
"description": "Message d'erreur si le job a échoué, sinon null."
},
"status": {
"enum": [
"processing",
"succeeded",
"failed"
],
"type": "string",
"description": "Statut du job : en cours, réussi ou échoué."
},
"photo_url": {
"type": [
"string",
"null"
],
"description": "URL de la photo source (avant), pour l'aperçu inline."
},
"video_url": {
"type": [
"string",
"null"
],
"description": "URL de la vidéo une fois prête, sinon null."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
incarn-result
ui://incarn/result.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1343 ms
- 95th percentile latency
- 1343 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1343 ms · metadata changed · 5 tool(s), 1 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http incarn-mcp https://api.incarn.co/mcpCodex
codex mcp add incarn-mcp --url https://api.incarn.co/mcpCursor
{
"mcpServers": {
"incarn-mcp": {
"url": "https://api.incarn.co/mcp"
}
}
}Cline
{
"mcpServers": {
"incarn-mcp": {
"type": "streamableHttp",
"url": "https://api.incarn.co/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"incarn-mcp": {
"type": "http",
"url": "https://api.incarn.co/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http incarn-mcp https://api.incarn.co/mcpClaude Desktop
https://api.incarn.co/mcpWindsurf
{
"mcpServers": {
"incarn-mcp": {
"serverUrl": "https://api.incarn.co/mcp"
}
}
}Let your agent find its tools
Find servers like Incarn MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other ai and machine learning servers
Do you run Incarn MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.