Skip to main content
Glama

Chercher des annonces par photo / Find listings by photo

chercher_par_photo
Read-onlyIdempotent

Find LISTINGS whose photo looks like a pet photo (https url or base64), to see if a lost or found animal was reported. To only identify a breed, use reconnaitre_race. Returns up to 10 listings with likeness %, dates and source, plus a breed estimate. Photo not stored. Accepts French or English; replies in French, or English with langue "en".

Input Schema

NameRequiredDescriptionDefault
cibleNoWhich listings to compare with: trouves (found or stray animals, default: for an owner who lost a pet), perdus (lost animals: for someone who found one) or tous (all). found and lost are accepted.trouves
especeNoSpecies: chat (cat), chien (dog), oiseau (bird) or autre (other animal). cat or dog are accepted. Omit it and the species is inferred from the photo.
langueNoResponse language: "fr" (French, default) or "en" (English). A request written in English is answered in English even without it.fr
communeNoFrench town name or 5-digit postcode (string, 2 to 80 characters), e.g. "Nemours", "77140" or "Chaumont 52" (department number to tell namesakes apart). France only; a place abroad returns no result.
latitudeNoLatitude of the search centre in decimal degrees (number, -90 to 90), e.g. 48.267. Give it with longitude, instead of commune.
rayon_kmNoSearch radius in km around commune or the coordinates (number, 1 to 500, default 100 with a centre). Without a centre, all of France is searched.
longitudeNoLongitude of the search centre in decimal degrees (number, -180 to 180), e.g. 2.693. Give it with latitude, instead of commune.
photo_urlNoPublic https address of the photo itself (string url; jpeg, png or webp, 8 MB at most), e.g. "https://example.com/cat.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
centreYes
conseilYes
annoncesYes
rayon_kmYes
race_estimeeYes
lieu_non_couvertNoPresent when the given town is not a French town: without a requested department, no search took place; Mission Museaux covers France.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed19 schema fields changed
    • changedInput schema / properties / cible / description
      Previous value: -"trouves : parmi les animaux trouvés ou vus errants ; perdus : parmi les animaux perdus. / trouves: among found or stray animals; perdus: among lost animals."New value: +"Which listings to compare with: trouves (found or stray animals, default: for an owner who lost a pet), perdus (lost animals: for someone who found one) or tous (all). found and lost are accepted."
    • changedInput schema / properties / commune / description
      Previous value: -"Commune française (nom ou code postal), par exemple « Nemours », « Chaumont 52 » (avec le département) ou « 77140 ». / French town (name or postcode), e.g. “Chaumont 52” with the department."New value: +"French town name or 5-digit postcode (string, 2 to 80 characters), e.g. \"Nemours\", \"77140\" or \"Chaumont 52\" (department number to tell namesakes apart). France only; a place abroad returns no result."
    • addedInput schema / properties / espece / description
      Added value: +"Species: chat (cat), chien (dog), oiseau (bird) or autre (other animal). cat or dog are accepted. Omit it and the species is inferred from the photo."
    • 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 / latitude / description
      Previous value: -"Latitude du centre de recherche, à la place de la commune. / Search centre latitude."New value: +"Latitude of the search centre in decimal degrees (number, -90 to 90), e.g. 48.267. Give it with longitude, instead of commune."
    • changedInput schema / properties / longitude / description
      Previous value: -"Longitude du centre de recherche. / Search centre longitude."New value: +"Longitude of the search centre in decimal degrees (number, -180 to 180), e.g. 2.693. Give it with latitude, instead of commune."
    • changedInput schema / properties / photo_base64 / description
      Previous value: -"La photo en base64 (avec ou sans en-tête data:), 2,5 Mo au plus, à 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 (jpeg, png ou webp, 8 Mo au plus). / 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/cat.jpg\". Give photo_url or photo_base64, not both."
    • changedInput schema / properties / rayon_km / description
      Previous value: -"Rayon autour du centre ; sans centre ni rayon, toute la France. / Radius; without centre, all of France."New value: +"Search radius in km around commune or the coordinates (number, 1 to 500, default 100 with a centre). Without a centre, all of France is searched."
    • changedOutput schema / properties / annonces / items / properties / couleur / description
      Previous value: -"Couleur de l'annonce, traduite dans la langue de la réponse quand elle est dans le vocabulaire des couleurs, sinon telle qu'écrite. / Listing colour, translated into the response language when it is in the colour vocabulary, otherwise as written."New value: +"Listing colour, translated into the response language when it is in the colour vocabulary, otherwise as written."
    • addedOutput schema / properties / annonces / items / properties / criteres_demandes
      Added value: +{
      +  "description": "For each criterion of the request (breed, colour, sex, age, gets-on-with), whether the record states it. Empty when no such criterion was asked.",
      +  "items": {
      +    "properties": {
      +      "critere": {
      +        "enum": [
      +          "race",
      +          "couleur",
      +          "sexe",
      +          "age",
      +          "ententes"
      +        ],
      +        "type": "string"
      +      },
      +      "precise": {
      +        "description": "true when the record states this criterion (and matches it); false when it does not say, so it is kept as a possible match.",
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "critere",
      +      "precise"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / annonces / items / properties / lieu / description
      Previous value: -"Lieu écrit, seulement quand la position n'est pas floutée. / Written place, only when the position is not blurred."New value: +"Written place, only when the position is not blurred."
    • addedOutput schema / properties / annonces / items / properties / mise_a_jour_le
      Added value: +{
      +  "description": "Latest news of the listing (ISO date). In search results: the latest located sighting that moved it, otherwise its publication (same as derniere_nouvelle). voir_annonce also counts its last sighting and status change, so it can be later there.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / annonces / items / properties / publiee_le
      Added value: +{
      +  "description": "When the record was first published (ISO date): on Mission Museaux, at the original platform for a reprise, or by the association offering the animal. null when unknown.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / annonces / items / properties / source
      Added value: +{
      +  "description": "Where the record comes from: mission_museaux (published on Mission Museaux), reprise (a listing relayed from another platform, not named; contact goes through the original listing) or association_partenaire (an animal offered by another French association or shelter, not registered on Mission Museaux, whose listing Mission Museaux relays).",
      +  "enum": [
      +    "mission_museaux",
      +    "reprise",
      +    "association_partenaire"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / annonces / items / properties / statut / description
      Previous value: -"Statut dans la langue de la réponse. / Status in the response language."New value: +"Status in the response language."
    • changedOutput schema / properties / annonces / items / required
      Previous value: -[
      -  "id",
      -  "url",
      -  "titre",
      -  "statut",
      -  "espece",
      -  "race",
      -  "page_race",
      -  "couleur",
      -  "sexe",
      -  "commune",
      -  "lieu",
      -  "date_evenement",
      -  "derniere_nouvelle",
      -  "distance_km",
      -  "signes_distinctifs",
      -  "photo",
      -  "ressemblance",
      -  "niveau"
      -]New value: +[
      +  "id",
      +  "url",
      +  "titre",
      +  "statut",
      +  "espece",
      +  "race",
      +  "page_race",
      +  "couleur",
      +  "sexe",
      +  "commune",
      +  "lieu",
      +  "date_evenement",
      +  "derniere_nouvelle",
      +  "distance_km",
      +  "signes_distinctifs",
      +  "photo",
      +  "publiee_le",
      +  "mise_a_jour_le",
      +  "source",
      +  "criteres_demandes",
      +  "ressemblance",
      +  "niveau"
      +]
    • addedOutput schema / properties / lieu_non_couvert
      Added value: +{
      +  "description": "Present when the given town is not a French town: without a requested department, no search took place; Mission Museaux covers France.",
      +  "properties": {
      +    "commune": {
      +      "description": "The town as given.",
      +      "type": "string"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "raison": {
      +      "description": "hors_france: a place abroad (Madrid, London); introuvable: no town of that name.",
      +      "enum": [
      +        "hors_france",
      +        "introuvable"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "commune",
      +    "raison",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / race_estimee / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "espece": {
      -        "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"
      -      },
      -      "famille": {
      -        "anyOf": [
      -          {
      -            "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"
      -          }
      -        ],
      -        "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 ; 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."
      -      },
      -      "races": {
      -        "items": {
      -          "properties": {
      -            "id": {
      -              "type": "string"
      -            },
      -            "nom": {
      -              "type": "string"
      -            },
      -            "nom_en": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "nom_fr": {
      -              "type": "string"
      -            },
      -            "page": {
      -              "description": "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).",
      -              "type": "string"
      -            },
      -            "part": {
      -              "type": "number"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "nom",
      -            "nom_fr",
      -            "nom_en",
      -            "part",
      -            "page"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "verdict": {
      -        "enum": [
      -          "probable",
      -          "croise",
      -          "incertain"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "espece",
      -      "verdict",
      -      "races",
      -      "famille"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "espece": {
      +        "description": "The estimated or given species, in the response language; for a bird or another animal, races lists its kinds (budgerigar, rabbit…).",
      +        "type": "string"
      +      },
      +      "famille": {
      +        "anyOf": [
      +          {
      +            "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"
      +          }
      +        ],
      +        "description": "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."
      +      },
      +      "races": {
      +        "items": {
      +          "properties": {
      +            "id": {
      +              "type": "string"
      +            },
      +            "nom": {
      +              "type": "string"
      +            },
      +            "nom_en": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "nom_fr": {
      +              "type": "string"
      +            },
      +            "page": {
      +              "description": "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).",
      +              "type": "string"
      +            },
      +            "part": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "nom",
      +            "nom_fr",
      +            "nom_en",
      +            "part",
      +            "page"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "verdict": {
      +        "enum": [
      +          "probable",
      +          "croise",
      +          "incertain"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "espece",
      +      "verdict",
      +      "races",
      +      "famille"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / espece / enum
      Previous value: -[
      -  "chat",
      -  "chien"
      -]New value: +[
      +  "chat",
      +  "chien",
      +  "oiseau",
      +  "autre"
      +]
    • changedOutput schema / properties / race_estimee / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "famille": {
      -        "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."
      -      },
      -      "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"
      -      },
      -      "verdict": {
      -        "enum": [
      -          "probable",
      -          "croise",
      -          "incertain"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "verdict",
      -      "races",
      -      "famille"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "espece": {
      +        "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"
      +      },
      +      "famille": {
      +        "anyOf": [
      +          {
      +            "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"
      +          }
      +        ],
      +        "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 ; 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."
      +      },
      +      "races": {
      +        "items": {
      +          "properties": {
      +            "id": {
      +              "type": "string"
      +            },
      +            "nom": {
      +              "type": "string"
      +            },
      +            "nom_en": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "nom_fr": {
      +              "type": "string"
      +            },
      +            "page": {
      +              "description": "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).",
      +              "type": "string"
      +            },
      +            "part": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "nom",
      +            "nom_fr",
      +            "nom_en",
      +            "part",
      +            "page"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "verdict": {
      +        "enum": [
      +          "probable",
      +          "croise",
      +          "incertain"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "espece",
      +      "verdict",
      +      "races",
      +      "famille"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Changed1 schema field changed
    • changedOutput schema / properties / annonces / items / properties / couleur / description
      Previous value: -"Couleur telle qu'écrite dans l'annonce. / Colour as written in the listing."New value: +"Couleur de l'annonce, traduite dans la langue de la réponse quand elle est dans le vocabulaire des couleurs, sinon telle qu'écrite. / Listing colour, translated into the response language when it is in the colour vocabulary, otherwise as written."
  4. Changed1 schema field changed
    • changedOutput schema / properties / race_estimee / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "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"
      -      },
      -      "verdict": {
      -        "enum": [
      -          "probable",
      -          "croise",
      -          "incertain"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "verdict",
      -      "races"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "famille": {
      +        "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."
      +      },
      +      "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"
      +      },
      +      "verdict": {
      +        "enum": [
      +          "probable",
      +          "croise",
      +          "incertain"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "verdict",
      +      "races",
      +      "famille"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  5. Changed2 schema fields changed
    • changedInput schema / properties / commune / description
      Previous value: -"Commune française (nom ou code postal), par exemple « Nemours » ou « 77140 ». / French town (name or postcode)."New value: +"Commune française (nom ou code postal), par exemple « Nemours », « Chaumont 52 » (avec le département) ou « 77140 ». / French town (name or postcode), e.g. “Chaumont 52” with the department."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "annonces": {
      +      "items": {
      +        "properties": {
      +          "commune": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "couleur": {
      +            "description": "Couleur telle qu'écrite dans l'annonce. / Colour as written in the listing.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "date_evenement": {
      +            "type": "string"
      +          },
      +          "derniere_nouvelle": {
      +            "type": "string"
      +          },
      +          "distance_km": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "espece": {
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "lieu": {
      +            "description": "Lieu écrit, seulement quand la position n'est pas floutée. / Written place, only when the position is not blurred.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "niveau": {
      +            "type": "string"
      +          },
      +          "page_race": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "photo": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "race": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "ressemblance": {
      +            "type": "number"
      +          },
      +          "sexe": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "signes_distinctifs": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "statut": {
      +            "description": "Statut dans la langue de la réponse. / Status in the response language.",
      +            "type": "string"
      +          },
      +          "titre": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "url",
      +          "titre",
      +          "statut",
      +          "espece",
      +          "race",
      +          "page_race",
      +          "couleur",
      +          "sexe",
      +          "commune",
      +          "lieu",
      +          "date_evenement",
      +          "derniere_nouvelle",
      +          "distance_km",
      +          "signes_distinctifs",
      +          "photo",
      +          "ressemblance",
      +          "niveau"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "centre": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "conseil": {
      +      "type": "string"
      +    },
      +    "race_estimee": {
      +      "anyOf": [
      +        {
      +          "properties": {
      +            "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"
      +            },
      +            "verdict": {
      +              "enum": [
      +                "probable",
      +                "croise",
      +                "incertain"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "verdict",
      +            "races"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "rayon_km": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "race_estimee",
      +    "centre",
      +    "rayon_km",
      +    "annonces",
      +    "conseil"
      +  ],
      +  "type": "object"
      +}
  6. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior: capped at 10 results, likeness %, dates and source returned, plus a breed estimate, and the reassurance that the photo is not stored.

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?

Four sentences, front-loaded with purpose and the sibling alternative, with no filler. The final sentence is a slightly dense bundle of format/language facts, but nothing is wasted.

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?

With annotations covering safety and an output schema covering return shape, the description only needs to add matching behavior and limits, which it does (10 results, likeness, storage disclaimer). Minor omissions like error handling for bad photos are acceptable given the schema and output schema.

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 parameter descriptions are themselves detailed, so the schema does the heavy lifting. The description restates accepted photo formats and the French/English behavior rather than adding semantics the schema lacks, so the baseline 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?

States a specific verb and resource ('Find LISTINGS whose photo looks like a pet photo') and frames the goal ('to see if a lost or found animal was reported'). It explicitly distinguishes itself from the sibling reconnaitre_race, which is the nearest lookalike tool.

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?

Explicitly routes the agent: use reconnaitre_race if the goal is only breed identification, use this tool if the goal is matching a photo against lost/found listings. The 'cible' parameter description also encodes the owner-vs-finder use case, though there are no explicit when-not-to-use conditions beyond the one alternative.

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