Skip to main content
Glama

Estimer la race sur une photo / Estimate breed from a photo

reconnaitre_race
Read-onlyIdempotent

Estimate the BREED of a dog or cat on a photo (https or base64), or the kind of bird or small pet (budgerigar, rabbit…). For matching listings, use chercher_par_photo. Returns likely breeds with shares, type or mix, and pages; an estimate, not a certainty. Photo not stored. Accepts French or English; replies in French, or English with langue "en".

Input Schema

NameRequiredDescriptionDefault
especeYesSpecies shown on the photo (required): chat (cat), chien (dog), oiseau (bird) or autre (rabbit, guinea pig, tortoise, ferret…). cat, dog or rabbit are accepted.
langueNoResponse language: "fr" (French, default) or "en" (English). A request written in English is answered in English even without it.fr
photo_urlNoPublic https address of the photo itself (string url; jpeg, png or webp, 8 MB at most), e.g. "https://example.com/dog.jpg". Give photo_url or photo_base64, not both.
photo_base64NoThe photo encoded in base64 (string, with or without a data: header, about 2.5 MB at most), instead of photo_url; an image received in the conversation goes here.

Output Schema

NameRequiredDescriptionDefault
noteYes
racesYes
especeYesThe estimated or given species, in the response language; for a bird or another animal, races lists its kinds (budgerigar, rabbit…).
sourceYes
familleYesThe likely dog type when no breed dominates (verdict “incertain”) but the first two breeds, its examples, are of this type and its breeds among the top three gather more than half of the estimate; likewise, for a bird or another animal, the group of its first two kinds (rodent, parrot, tortoise…); null otherwise, and always for a cat.
verdictYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • changedInput schema / properties / espece / description
      Previous value: -"Chat, chien, oiseau ou autre animal (lapin, cochon d'Inde, tortue, furet…). / Cat, dog, bird or other animal (rabbit, guinea pig, tortoise, ferret…)."New value: +"Species shown on the photo (required): chat (cat), chien (dog), oiseau (bird) or autre (rabbit, guinea pig, tortoise, ferret…). cat, dog or rabbit are accepted."
    • changedInput schema / properties / langue / description
      Previous value: -"Langue de la réponse : fr (par défaut) ou en. / Response language: fr (default) or en."New value: +"Response language: \"fr\" (French, default) or \"en\" (English). A request written in English is answered in English even without it."
    • changedInput schema / properties / photo_base64 / description
      Previous value: -"La photo en base64, à la place de photo_url. / The photo in base64, instead of photo_url."New value: +"The photo encoded in base64 (string, with or without a data: header, about 2.5 MB at most), instead of photo_url; an image received in the conversation goes here."
    • changedInput schema / properties / photo_url / description
      Previous value: -"Adresse https d'une photo de l'animal. / https address of a photo of the animal."New value: +"Public https address of the photo itself (string url; jpeg, png or webp, 8 MB at most), e.g. \"https://example.com/dog.jpg\". Give photo_url or photo_base64, not both."
    • changedOutput schema / properties / espece / description
      Previous value: -"L'espèce estimée ou donnée, dans la langue de la réponse ; pour un oiseau ou un autre animal, races liste ses sortes (perruche ondulée, lapin…). / The estimated or given species, in the response language; for a bird or another animal, races lists its kinds (budgerigar, rabbit…)."New value: +"The estimated or given species, in the response language; for a bird or another animal, races lists its kinds (budgerigar, rabbit…)."
    • changedOutput schema / properties / famille / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "id": {
      -        "type": "string"
      -      },
      -      "nom": {
      -        "description": "Le type dans la langue de la réponse (« chien de berger », « rongeur »). / The type in the response language (“herding dog”, “rodent”).",
      -        "type": "string"
      -      },
      -      "nom_en": {
      -        "type": "string"
      -      },
      -      "nom_fr": {
      -        "type": "string"
      -      },
      -      "part": {
      -        "description": "Part cumulée des races, ou des sortes, de ce type parmi les trois en tête, en %. / Combined share of this type's breeds, or kinds, among the top three, in %.",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "nom",
      -      "nom_fr",
      -      "nom_en",
      -      "part"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "nom": {
      +        "description": "The type in the response language (“herding dog”, “rodent”).",
      +        "type": "string"
      +      },
      +      "nom_en": {
      +        "type": "string"
      +      },
      +      "nom_fr": {
      +        "type": "string"
      +      },
      +      "part": {
      +        "description": "Combined share of this type's breeds, or kinds, among the top three, in %.",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "nom",
      +      "nom_fr",
      +      "nom_en",
      +      "part"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / famille / description
      Previous value: -"Le type de chien probable quand aucune race ne domine (verdict « incertain ») mais que les deux premières races, ses exemples, sont de ce type et que ses races parmi les trois en tête réunissent plus de la moitié de l'estimation ; pour un oiseau ou un autre animal, de même, le groupe de ses deux premières sortes (rongeur, perroquet, tortue…) ; null sinon, et toujours pour un chat. / The likely dog type when no breed dominates (verdict “incertain”) but the first two breeds, its examples, are of this type and its breeds among the top three gather more than half of the estimate; likewise, for a bird or another animal, the group of its first two kinds (rodent, parrot, tortoise…); null otherwise, and always for a cat."New value: +"The likely dog type when no breed dominates (verdict “incertain”) but the first two breeds, its examples, are of this type and its breeds among the top three gather more than half of the estimate; likewise, for a bird or another animal, the group of its first two kinds (rodent, parrot, tortoise…); null otherwise, and always for a cat."
    • changedOutput schema / properties / races / items / properties / page / description
      Previous value: -"La page de la race sur le site ; pour une sorte d'oiseau ou d'autre animal, qui n'en a pas, sa fiche Wikidata (pour un oiseau sauvage, les conseils de l'association). / The breed's page on the site; for a kind of bird or other animal, which has none, its Wikidata entry (for a wild bird, the association's advice)."New value: +"The breed's page on the site; for a kind of bird or other animal, which has none, its Wikidata entry (for a wild bird, the association's advice)."
  2. Changed7 schema fields changed
    • changedInput schema / properties / espece / description
      Previous value: -"Chat ou chien. / Cat or dog."New value: +"Chat, chien, oiseau ou autre animal (lapin, cochon d'Inde, tortue, furet…). / Cat, dog, bird or other animal (rabbit, guinea pig, tortoise, ferret…)."
    • changedInput schema / properties / espece / enum
      Previous value: -[
      -  "chat",
      -  "chien"
      -]New value: +[
      +  "chat",
      +  "chien",
      +  "oiseau",
      +  "autre"
      +]
    • addedOutput schema / properties / espece
      Added value: +{
      +  "description": "L'espèce estimée ou donnée, dans la langue de la réponse ; pour un oiseau ou un autre animal, races liste ses sortes (perruche ondulée, lapin…). / The estimated or given species, in the response language; for a bird or another animal, races lists its kinds (budgerigar, rabbit…).",
      +  "type": "string"
      +}
    • changedOutput schema / properties / famille / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "id": {
      -        "type": "string"
      -      },
      -      "nom": {
      -        "description": "Le type dans la langue de la réponse (« chien de berger »). / The type in the response language (“herding dog”).",
      -        "type": "string"
      -      },
      -      "nom_en": {
      -        "type": "string"
      -      },
      -      "nom_fr": {
      -        "type": "string"
      -      },
      -      "part": {
      -        "description": "Part cumulée des races de ce type parmi les trois en tête, en %. / Combined share of this type's breeds among the top three, in %.",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "nom",
      -      "nom_fr",
      -      "nom_en",
      -      "part"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "nom": {
      +        "description": "Le type dans la langue de la réponse (« chien de berger », « rongeur »). / The type in the response language (“herding dog”, “rodent”).",
      +        "type": "string"
      +      },
      +      "nom_en": {
      +        "type": "string"
      +      },
      +      "nom_fr": {
      +        "type": "string"
      +      },
      +      "part": {
      +        "description": "Part cumulée des races, ou des sortes, de ce type parmi les trois en tête, en %. / Combined share of this type's breeds, or kinds, among the top three, in %.",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "nom",
      +      "nom_fr",
      +      "nom_en",
      +      "part"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / famille / description
      Previous value: -"Le type de chien probable quand aucune race ne domine (verdict « incertain ») mais que les deux premières races, ses exemples, sont de ce type et que ses races parmi les trois en tête réunissent plus de la moitié de l'estimation ; null sinon, et toujours pour un chat. / The likely dog type when no breed dominates (verdict “incertain”) but the first two breeds, its examples, are of this type and its breeds among the top three gather more than half of the estimate; null otherwise, and always for a cat."New value: +"Le type de chien probable quand aucune race ne domine (verdict « incertain ») mais que les deux premières races, ses exemples, sont de ce type et que ses races parmi les trois en tête réunissent plus de la moitié de l'estimation ; pour un oiseau ou un autre animal, de même, le groupe de ses deux premières sortes (rongeur, perroquet, tortue…) ; null sinon, et toujours pour un chat. / The likely dog type when no breed dominates (verdict “incertain”) but the first two breeds, its examples, are of this type and its breeds among the top three gather more than half of the estimate; likewise, for a bird or another animal, the group of its first two kinds (rodent, parrot, tortoise…); null otherwise, and always for a cat."
    • addedOutput schema / properties / races / items / properties / page / description
      Added value: +"La page de la race sur le site ; pour une sorte d'oiseau ou d'autre animal, qui n'en a pas, sa fiche Wikidata (pour un oiseau sauvage, les conseils de l'association). / The breed's page on the site; for a kind of bird or other animal, which has none, its Wikidata entry (for a wild bird, the association's advice)."
    • changedOutput schema / required
      Previous value: -[
      -  "verdict",
      -  "races",
      -  "famille",
      -  "note",
      -  "source"
      -]New value: +[
      +  "espece",
      +  "verdict",
      +  "races",
      +  "famille",
      +  "note",
      +  "source"
      +]
  3. Changed2 schema fields changed
    • addedOutput schema / properties / famille
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "nom": {
      +          "description": "Le type dans la langue de la réponse (« chien de berger »). / The type in the response language (“herding dog”).",
      +          "type": "string"
      +        },
      +        "nom_en": {
      +          "type": "string"
      +        },
      +        "nom_fr": {
      +          "type": "string"
      +        },
      +        "part": {
      +          "description": "Part cumulée des races de ce type parmi les trois en tête, en %. / Combined share of this type's breeds among the top three, in %.",
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "nom",
      +        "nom_fr",
      +        "nom_en",
      +        "part"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Le type de chien probable quand aucune race ne domine (verdict « incertain ») mais que les deux premières races, ses exemples, sont de ce type et que ses races parmi les trois en tête réunissent plus de la moitié de l'estimation ; null sinon, et toujours pour un chat. / The likely dog type when no breed dominates (verdict “incertain”) but the first two breeds, its examples, are of this type and its breeds among the top three gather more than half of the estimate; null otherwise, and always for a cat."
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "verdict",
      -  "races",
      -  "note",
      -  "source"
      -]New value: +[
      +  "verdict",
      +  "races",
      +  "famille",
      +  "note",
      +  "source"
      +]
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "note": {
      +      "type": "string"
      +    },
      +    "races": {
      +      "items": {
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          },
      +          "nom": {
      +            "type": "string"
      +          },
      +          "nom_en": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "nom_fr": {
      +            "type": "string"
      +          },
      +          "page": {
      +            "type": "string"
      +          },
      +          "part": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "nom",
      +          "nom_fr",
      +          "nom_en",
      +          "part",
      +          "page"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "source": {
      +      "properties": {
      +        "donnees": {
      +          "type": "string"
      +        },
      +        "nom": {
      +          "type": "string"
      +        },
      +        "url": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "nom",
      +        "url",
      +        "donnees"
      +      ],
      +      "type": "object"
      +    },
      +    "verdict": {
      +      "enum": [
      +        "probable",
      +        "croise",
      +        "incertain"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "verdict",
      +    "races",
      +    "note",
      +    "source"
      +  ],
      +  "type": "object"
      +}
  5. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description still adds real behavioral value: it discloses the return shape (breeds with shares, type or mix), the uncertainty of the result ("an estimate, not a certainty"), the privacy trait (photo not stored), and language behavior.

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?

Front-loaded with the core action, then alternatives, then return/privacy/language notes. Dense but each clause carries information. The language sentence is slightly redundant with the langue parameter description.

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?

An output schema exists, so return values needn't be spelled out, yet the description still summarizes them. With annotations covering safety and a 100%-covered schema, the agent has everything needed to select and invoke the tool correctly.

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%, so the schema already documents espece, langue, photo_url and photo_base64 in detail; baseline is 3. The description echoes the https-or-base64 input choice and the language override, adding only marginal meaning beyond the schema's own text.

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?

States a specific verb+resource (estimate the breed of an animal on a photo) and explicitly scopes which species are handled (dog/cat vs. bird/small pet). It names the sibling it is not (chercher_par_photo for matching listings), so an agent can separate it from alternatives without opening a schema.

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?

Names the alternative and the condition that selects it: "For matching listings, use chercher_par_photo." This is clear context and routing. It lacks any explicit when-not guidance (e.g., no usable photo, low-quality image, unsupported species beyond 'autre'), which keeps it short of a 5.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources