Skip to main content
Glama

Server Details

Animate old family photos into short lifelike videos with AI.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

5 tools
animate_photoAnimer une photoAInspect

Anime une photo ancienne en une courte vidéo naturelle. Consomme 1 crédit (compte approvisionné requis, pas d'essai gratuit). 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoIndication libre et subtile sur le mouvement (optionnel).
photo_idNoPhoto uploadée (via confirm_upload), si l'utilisateur a joint un fichier sans URL. Prioritaire si fourni.
image_urlNoURL publique http(s) de la photo. Chemin PRÉFÉRÉ (aucun upload, marche partout).
image_fileNoFichier 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).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesIdentifiant du job d'animation (à poller).
statusYesStatut du job : en cours, réussi ou échoué.
photo_urlYesURL de la photo source (avant), pour l'aperçu inline.
video_urlYesURL de la vidéo une fois prête, sinon null.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description reveals significant behavioral traits: it consumes a credit, requires a funded account, and may be blocked in sandboxed environments for photo_id. It also imposes an ethical constraint against animating public figures. This goes well beyond what annotations already disclose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is slightly long but every sentence adds necessary value—purpose, cost, input methods, and ethics. It is well-structured and front-loaded with the core action. It could be tightened slightly, but it is not verbose or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 params, nested image_file object, output schema exists), the description covers input methods, costs, prerequisites, and ethical boundaries. It also implicitly addresses the output by referencing a video, and the output schema handles return details. It is complete for the intended use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though the schema descriptions cover all parameters, the description adds crucial priority information: it recommends image_url over others, explains that image_file is auto-populated by ChatGPT, and details the photo_id workflow with potential sandbox blocking. This enriches the schema semantics significantly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Anime une photo ancienne en une courte vidéo naturelle'. It clearly distinguishes this tool from siblings like get_animation_status and confirm_upload, which serve different purposes. The scope is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly explains when to use each input method (image_url preferred, image_file auto-filled, photo_id via create_upload/confirm_upload) and provides ethical guidance on only animating photos the user has rights to. It also states the credit requirement and no-free-trial condition, giving clear context for when the tool is applicable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

confirm_uploadFinaliser un upload de photoAInspect

É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.

ParametersJSON Schema
NameRequiredDescriptionDefault
upload_idYesLe upload_id renvoyé par create_upload.

Output Schema

ParametersJSON Schema
NameRequiredDescription
photo_idYesIdentifiant de la photo, à passer à animate_photo.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false (mutation) and destructiveHint=false. The description adds that validation includes moderation, which is additional behavioral context. However, it does not clarify failure modes, idempotency, or side effects beyond validation, leaving some transparency gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with 'Étape 2', and no redundant phrasing. The description conveys the action, condition, and output without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter, annotations, and presence of an output schema, the description covers the essential workflow: prerequisite, action, and return value. It does not detail moderation failure outcomes, but that is likely handled by the output schema, so the description is adequately complete for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (upload_id described as from create_upload). The description reinforces this and adds the prerequisite of sending bytes first, but does not go beyond the schema's description. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool validates a photo after bytes are sent, using upload_id, and returns a photo_id. It also differentiates from siblings by specifying its place as step 2 in a pipeline (create_upload → confirm_upload → animate_photo).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context: it says to call after sending bytes via PUT and with the upload_id from create_upload, and to pass the returned photo_id to animate_photo. It implies when to use it via the 'Étape 2' step, but does not name alternative tools or explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_uploadPréparer un upload de photoAInspect

É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.

ParametersJSON Schema
NameRequiredDescriptionDefault
mime_typeYesType MIME de l'image (ex: 'image/jpeg', 'image/png').

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYesMarche à suivre + fallback si le PUT est bloqué.
upload_idYesÀ passer à confirm_upload.
expires_inYesValidité de l'URL, en secondes.
upload_urlYesURL sur api.incarn.co : PUT les octets du fichier dessus.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only declare readOnlyHint=false, openWorldHint=false, destructiveHint=false, providing little behavioral detail. The description discloses important behavior: the tool returns an upload URL, requires a subsequent PUT and confirm_upload, and the PUT may fail due to sandbox egress restrictions. It also warns against base64 sending. It does not describe all possible response fields, but it covers the key workflow behavior clearly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately compact and front-loaded with the essential purpose and condition. It includes conditional advice and a strong caveat ('N'envie JAMAIS l'image en base64') that is necessary. It is slightly longer than necessary due to the caveats, but each sentence serves a purpose and the structure flows logically from steps to fallback instructions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a small multi-step upload workflow with an output schema present, and the description covers both the initial call and the follow-up PUT. It addresses error handling (403) and fallback options, which is complete for the agent. It does not detail the exact format of the response, but the output schema is present, so that is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage for the single parameter mime_type. The description mentions 'en-tête Content-Type' for the subsequent PUT, which adds a bit of context about how the mime_type relates to the upload, but otherwise the schema already documents the parameter. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: it's 'Étape 1 pour animer une photo JOINTE dans le chat quand il n'y a pas d'URL publique' and returns an upload URL. It specifies a verb (créer/préparer), a resource (upload de photo), and the condition when it applies, distinguishing it from the sibling alternate 'animate_photo' with an explicit contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool (animated photo with a public URL is unavailable) and when to prefer the alternative (animate_photo with image_url). It also gives an instruction for what to do if the PUT fails with 403, including not retrying and falling back to image_url or requesting authorization.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_animation_statusStatut d'une animationA
Read-only
Inspect

Récupère le statut d'un job d'animation et l'URL de la vidéo une fois prête.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesIdentifiant du job d'animation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesIdentifiant du job.
errorYesMessage d'erreur si le job a échoué, sinon null.
statusYesStatut du job : en cours, réussi ou échoué.
photo_urlYesURL de la photo source (avant), pour l'aperçu inline.
video_urlYesURL de la vidéo une fois prête, sinon null.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as safe and read-only. The description adds the useful detail that the video URL only becomes available when the animation is ready. However, it does not describe behavior such as polling semantics, status values, or error scenarios, though the output schema may cover some of this.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence delivers exactly the essential information: what is retrieved and what additional data is returned when ready. There is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, one-parameter, read-only status tool with an output schema, the description is nearly sufficient. It clearly states the tool's purpose and the eventual video URL. Slightly more guidance about using it after animate_photo would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the only parameter, job_id, is already documented as 'Identifiant du job d'animation'. The description does not need to repeat this and provides no additional syntax or format details, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Récupère'), a clear resource ('statut d'un job d'animation'), and an additional output detail (video URL once ready). This distinguishes it from sibling tools like animate_photo, confirm_upload, and create_upload, which perform different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied: this is the status-checking counterpart to animate_photo. However, the description does not explicitly say when to use it, such as after submitting an animation job, nor does it mention any alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_examplesExemples d'animationsA
Read-only
Inspect

Voir des exemples avant/après d'animation de photos anciennes (galerie de démonstration).

ParametersJSON Schema
NameRequiredDescriptionDefault
beatNoThème optionnel (ex: 'mariage', 'bébé', 'portrait').

Output Schema

ParametersJSON Schema
NameRequiredDescription
beatYesThème appliqué, ou null.
examplesYesListe d'exemples avant/après.
gallery_urlYesURL de la galerie publique où chaque portrait s'anime (avant/après). À partager avec l'utilisateur.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only and non-destructive, and the description does not contradict them. It adds the 'before/after example gallery' context but does not disclose additional behaviors such as default unfiltered listing, pagination, or how the optional theme affects results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no filler. It front-loads the action and resource, and the parenthetical clarifies the nature of the tool effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only demonstration tool with full annotation coverage, an output schema, and one well-documented optional parameter, the description is nearly complete. It could explicitly say that 'beat' filters the examples, but the schema already covers that, so the gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single optional parameter 'beat' is already explained with examples in the schema. The tool description adds no additional semantic detail about the parameter, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Voir des exemples avant/après d'animation de photos anciennes' (see before/after examples). It also labels itself as a demonstration gallery, which sets it apart from the upload/processing siblings even though it does not name any sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'galerie de démonstration' framing implies it is meant for previewing examples, presumably before animating a photo, but the description does not explicitly say when to use it versus the sibling tools. Usage context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool update
    • Changedlist_examples2 fields changed
      • addedOutput schema / properties / gallery_url
        Added value: +{
        +  "description": "URL de la galerie publique où chaque portrait s'anime (avant/après). À partager avec l'utilisateur.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "beat",
        -  "examples"
        -]New value: +[
        +  "beat",
        +  "gallery_url",
        +  "examples"
        +]
  2. 1 tool update
    • Changedlist_examples4 fields changed
      • changedOutput schema / properties / examples / items / properties / thumbnail_url / description
        Previous value: -"URL de la photo d'origine (avant)."New value: +"URL de la vignette."
      • removedOutput schema / properties / examples / items / properties / video_url
        Removed value: -{
        -  "description": "URL de la vidéo animée (après).",
        -  "type": "string"
        -}
      • removedOutput schema / properties / examples / items / properties / year
        Removed value: -{
        -  "description": "Année de la photo d'origine.",
        -  "type": "string"
        -}
      • changedOutput schema / properties / examples / items / required
        Previous value: -[
        -  "title",
        -  "year",
        -  "thumbnail_url",
        -  "video_url"
        -]New value: +[
        +  "title",
        +  "thumbnail_url"
        +]
  3. 1 tool update
    • Changedlist_examples4 fields changed
      • changedOutput schema / properties / examples / items / properties / thumbnail_url / description
        Previous value: -"URL de la vignette."New value: +"URL de la photo d'origine (avant)."
      • addedOutput schema / properties / examples / items / properties / video_url
        Added value: +{
        +  "description": "URL de la vidéo animée (après).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / examples / items / properties / year
        Added value: +{
        +  "description": "Année de la photo d'origine.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / examples / items / required
        Previous value: -[
        -  "title",
        -  "thumbnail_url"
        -]New value: +[
        +  "title",
        +  "year",
        +  "thumbnail_url",
        +  "video_url"
        +]
  4. 2 tool updates
    • Changedanimate_photo2 fields changed
      • addedOutput schema / properties / photo_url
        Added value: +{
        +  "description": "URL de la photo source (avant), pour l'aperçu inline.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "status",
        -  "video_url"
        -]New value: +[
        +  "id",
        +  "status",
        +  "video_url",
        +  "photo_url"
        +]
    • Changedget_animation_status2 fields changed
      • addedOutput schema / properties / photo_url
        Added value: +{
        +  "description": "URL de la photo source (avant), pour l'aperçu inline.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "status",
        -  "video_url",
        -  "error"
        -]New value: +[
        +  "id",
        +  "status",
        +  "video_url",
        +  "error",
        +  "photo_url"
        +]
  5. 1 tool update
    • Changedanimate_photo1 field changed
      • addedInput schema / properties / image_file
        Added value: +{
        +  "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).",
        +  "properties": {
        +    "download_url": {
        +      "description": "URL de téléchargement de l'image, fournie par l'hôte.",
        +      "type": "string"
        +    },
        +    "file_id": {
        +      "description": "Identifiant du fichier côté hôte.",
        +      "type": "string"
        +    },
        +    "file_name": {
        +      "type": "string"
        +    },
        +    "mime_type": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "download_url",
        +    "file_id"
        +  ],
        +  "type": "object"
        +}
  6. 2 tool updates
    • Changedanimate_photo2 fields changed
      • changedInput schema / properties / image_url / description
        Previous value: -"URL publique http(s) de la photo à animer."New value: +"URL publique http(s) de la photo. Chemin PRÉFÉRÉ (aucun upload, marche partout)."
      • changedInput schema / properties / photo_id / description
        Previous value: -"Photo uploadée (via confirm_upload). Prioritaire si fourni."New value: +"Photo uploadée (via confirm_upload), si l'utilisateur a joint un fichier sans URL. Prioritaire si fourni."
    • Changedcreate_upload3 fields changed
      • addedOutput schema / properties / note
        Added value: +{
        +  "description": "Marche à suivre + fallback si le PUT est bloqué.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / upload_url / description
        Previous value: -"URL présignée : PUT les octets du fichier dessus."New value: +"URL sur api.incarn.co : PUT les octets du fichier dessus."
      • changedOutput schema / required
        Previous value: -[
        -  "upload_id",
        -  "upload_url",
        -  "expires_in"
        -]New value: +[
        +  "upload_id",
        +  "upload_url",
        +  "expires_in",
        +  "note"
        +]
  7. 3 tool updates
    • Changedanimate_photo2 fields changed
      • addedInput schema / properties / photo_id
        Added value: +{
        +  "description": "Photo uploadée (via confirm_upload). Prioritaire si fourni.",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "image_url"
        -]
    • Addedconfirm_upload
    • Addedcreate_upload
  8. 3 tool updates
    • Changedanimate_photo1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "id": {
        +      "description": "Identifiant du job d'animation (à poller).",
        +      "type": "string"
        +    },
        +    "status": {
        +      "description": "Statut du job : en cours, réussi ou échoué.",
        +      "enum": [
        +        "processing",
        +        "succeeded",
        +        "failed"
        +      ],
        +      "type": "string"
        +    },
        +    "video_url": {
        +      "description": "URL de la vidéo une fois prête, sinon null.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status",
        +    "video_url"
        +  ],
        +  "type": "object"
        +}
    • Changedget_animation_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "error": {
        +      "description": "Message d'erreur si le job a échoué, sinon null.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "id": {
        +      "description": "Identifiant du job.",
        +      "type": "string"
        +    },
        +    "status": {
        +      "description": "Statut du job : en cours, réussi ou échoué.",
        +      "enum": [
        +        "processing",
        +        "succeeded",
        +        "failed"
        +      ],
        +      "type": "string"
        +    },
        +    "video_url": {
        +      "description": "URL de la vidéo une fois prête, sinon null.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status",
        +    "video_url",
        +    "error"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_examples1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "beat": {
        +      "description": "Thème appliqué, ou null.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "examples": {
        +      "description": "Liste d'exemples avant/après.",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "thumbnail_url": {
        +            "description": "URL de la vignette.",
        +            "type": "string"
        +          },
        +          "title": {
        +            "description": "Titre de l'exemple.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "thumbnail_url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "beat",
        +    "examples"
        +  ],
        +  "type": "object"
        +}
  9. 3 tool updates
    • First observedanimate_photo
    • First observedget_animation_status
    • First observedlist_examples

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4/5.0
Disambiguation4/5

Each tool targets a distinct stage of the animation workflow—main action, upload steps, status polling, and examples—and the descriptions cross-reference each other explicitly. Minor ambiguity exists between animate_photo and create_upload as alternative entry points, but the 'prefer image_url' guidance effectively resolves it.

Naming Consistency5/5

All five tools follow a consistent verb_noun snake_case pattern (animate_photo, create_upload, confirm_upload, get_animation_status, list_examples), using clear, predictable verbs throughout. There is no mixing of conventions or vague generic names.

Tool Count4/5

Five tools is well-scoped for the narrow domain of photo animation, with the two upload steps adding necessary surface area for the file-attachment path. Slightly heavy for such a niche service, but each tool earns its place.

Completeness4/5

The core lifecycle is fully covered: upload a photo, animate it, poll status, and view examples. Minor gaps include no credit-balance check despite animation being credit-gated, and no way to list past animations or recover a lost job ID.

Resources