Skip to main content
Glama

Chercher des animaux perdus ou trouvés / Search lost and found pets

chercher_annonces
Read-onlyIdempotent

Search Mission Museaux's listings of lost, found and stray pets in France near a town or point, by species, breed, colour, sex, date or words. Use statut trouve_ou_errant for a lost pet, perdu for a found one. Returns up to 25 listings with photo, dates, source and link. Accepts French or English; replies in French, or English with langue "en".

Input Schema

NameRequiredDescriptionDefault
triNoSort order: recent (most recent first, default) or proche (closest to the centre first; needs commune or coordinates).recent
raceNoBreed or kind of animal in French or English (string, 2 to 60 characters), e.g. "labrador", "German Shepherd" or "rabbit". A partial name such as "berger" covers every breed containing it; chercher_races lists recognised names.
sexeNoSex: male or femelle (female). Listings of unknown sex are kept and flagged as not stated.
joursNoOnly listings from the last N calendar days, Paris time (whole number, 1 to 365, default 60), e.g. 30.
texteNoFree words or a phrase in French or English (string, up to 120 characters), e.g. "black lab mix red collar". Breed, colour and sex are recognised; other words are searched in the listing text. The answer says how it was understood.
especeNoSpecies: chat (cat), chien (dog), oiseau (bird) or autre (rabbit, ferret, tortoise…). cat, kitten, dog or puppy are accepted. Omit for all species.
langueNoResponse language: "fr" (French, default) or "en" (English). A request written in English is answered in English even without it.fr
limiteNoNumber of listings to return (whole number, 1 to 25, default 10); a larger value is lowered to 25. Use decalage for the next page.
statutNoWhich listings: perdu (lost by their owners), trouve (found and taken in), errant (seen roaming), trouve_ou_errant (what an owner looking for a lost pet should check) or tous (all, default). Synonyms such as lost, missing, found or stray are accepted.tous
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.
couleurNoCoat colour in French or English (string, 2 to 60 characters), e.g. "black and white" or "tabby". With a breed, listings whose colour is not stated are kept and flagged.
decalageNoNumber of listings to skip, for paging (whole number, 0 to 500, default 0), e.g. 10 for the second page of 10.
latitudeNoLatitude of the search centre in decimal degrees (number, -90 to 90), e.g. 48.267. Give it with longitude, instead of commune.
perdu_leNoDate the pet was lost (string, YYYY-MM-DD, not in the future), e.g. "2026-10-06": keeps listings whose event dates from the day before or later. Replaces jours.
rayon_kmNoSearch radius in km around commune or the coordinates (number, 1 to 100, default 25), e.g. 10 for a cat, 40 for a dog.
longitudeNoLongitude of the search centre in decimal degrees (number, -180 to 180), e.g. 2.693. Give it with latitude, instead of commune.
inclure_race_inconnueNoWith a breed (boolean, default true): also list, in a separate block, same-species animals whose breed is not stated, since found animals are often filed without one. false to leave them out.

Output Schema

NameRequiredDescriptionDefault
triYes
totalYes
centreYes
annoncesYes
decalageYes
rayon_kmYes
homonymesYesWhen several towns have exactly the given name and no department tells them apart; null otherwise.
plus_procheYesIn an empty answer, the closest listing meeting the same criteria, up to rayon_max_km from the centre, with its dates and source.
total_exactYes
ecartee_par_sexeYesThe closest listing left out by the sex criterion alone (the most recent without a centre), whether or not the answer is empty; ecartees_par_sexe gives how many it leaves out.
lieu_non_couvertNoPresent when the given town is not a French town: without a requested department, no search took place; Mission Museaux covers France.
ecartees_par_sexeYes
race_non_preciseeYes
recherche_compriseYes
ecartees_par_sexe_rayon_kmYesThe radius over which ecartees_par_sexe is counted: rayon_km, or the maximum radius (100) when an empty answer was widened; null without a sex criterion or a centre. Only listings of the breed searched for are counted there; race_non_precisee counts its own.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed35 schema fields changed
    • 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."
    • changedInput schema / properties / couleur / description
      Previous value: -"Couleur de la robe, en français ou en anglais (« noir et blanc », « tabby », « black »), cherchée dans la couleur des annonces ; avec une race, une couleur non précisée reste comprise. / Coat colour in French or English, searched in the listings' colour; with a breed, an unspecified colour is kept."New value: +"Coat colour in French or English (string, 2 to 60 characters), e.g. \"black and white\" or \"tabby\". With a breed, listings whose colour is not stated are kept and flagged."
    • changedInput schema / properties / decalage / description
      Previous value: -"Nombre d'annonces à passer, pour lire la suite d'une liste : 10 donne la deuxième page de 10. / Number of listings to skip, to read the next page."New value: +"Number of listings to skip, for paging (whole number, 0 to 500, default 0), e.g. 10 for the second page of 10."
    • addedInput schema / properties / espece / description
      Added value: +"Species: chat (cat), chien (dog), oiseau (bird) or autre (rabbit, ferret, tortoise…). cat, kitten, dog or puppy are accepted. Omit for all species."
    • changedInput schema / properties / inclure_race_inconnue / description
      Previous value: -"Avec une race, donnée ou reconnue dans texte : un second bloc liste les animaux de même espèce dont la race n'est pas précisée (inconnue, européen pour un chat, croisé pour un chien), les plus proches d'abord. Vrai par défaut quand une race est connue. / With a breed: a second block lists same-species animals of unspecified breed, closest first; true by default when a breed is known."New value: +"With a breed (boolean, default true): also list, in a separate block, same-species animals whose breed is not stated, since found animals are often filed without one. false to leave them out."
    • changedInput schema / properties / jours / description
      Previous value: -"Seulement les annonces des N derniers jours, comptés en jours entiers depuis minuit, heure de Paris. / Only listings from the last N calendar days, Paris time."New value: +"Only listings from the last N calendar days, Paris time (whole number, 1 to 365, default 60), e.g. 30."
    • 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."
    • addedInput schema / properties / limite / description
      Added value: +"Number of listings to return (whole number, 1 to 25, default 10); a larger value is lowered to 25. Use decalage for the next page."
    • 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 / perdu_le / description
      Previous value: -"Date de la perte, AAAA-MM-JJ : seules restent les annonces dont l'événement (découverte, première observation) date de la veille ou d'après ; remplace jours. / Date the pet was lost, YYYY-MM-DD: only listings whose event dates from the day before or later; replaces jours."New value: +"Date the pet was lost (string, YYYY-MM-DD, not in the future), e.g. \"2026-10-06\": keeps listings whose event dates from the day before or later. Replaces jours."
    • changedInput schema / properties / race / description
      Previous value: -"Race, en français ou en anglais (« labrador », « siamoise », « German Shepherd ») ; un nom partiel (« berger ») couvre les races de l'annuaire qui le contiennent et les races écrites qui contiennent ce mot ; un nom hors de l'annuaire, ou pour un oiseau ou un autre animal (« perruche »), est cherché tel qu'écrit dans la race des annonces, sous ses noms français et anglais pour un animal courant (« lapin » trouve « Rabbit »). / Breed in French or English; a partial name covers every breed that contains it, and written breeds containing the word; a name outside the directory, or for a bird or other animal, is searched as written, under its French and English names for a common animal (“rabbit” finds “Lapin”)."New value: +"Breed or kind of animal in French or English (string, 2 to 60 characters), e.g. \"labrador\", \"German Shepherd\" or \"rabbit\". A partial name such as \"berger\" covers every breed containing it; chercher_races lists recognised names."
    • changedInput schema / properties / rayon_km / description
      Previous value: -"Rayon autour du centre. / Radius around the centre."New value: +"Search radius in km around commune or the coordinates (number, 1 to 100, default 25), e.g. 10 for a cat, 40 for a dog."
    • changedInput schema / properties / sexe / description
      Previous value: -"male ou femelle ; les annonces de sexe inconnu restent comprises. / male or femelle (female); listings of unknown sex are kept."New value: +"Sex: male or femelle (female). Listings of unknown sex are kept and flagged as not stated."
    • changedInput schema / properties / statut / description
      Previous value: -"perdu : perdus par leur famille ; trouve : trouvés et recueillis ; errant : vus en liberté ; trouve_ou_errant : ce que doit consulter qui a perdu son animal. / perdu: lost; trouve: found and taken in; errant: seen roaming; trouve_ou_errant: what someone who lost a pet should check."New value: +"Which listings: perdu (lost by their owners), trouve (found and taken in), errant (seen roaming), trouve_ou_errant (what an owner looking for a lost pet should check) or tous (all, default). Synonyms such as lost, missing, found or stray are accepted."
    • changedInput schema / properties / texte / description
      Previous value: -"Mots ou phrase à retrouver dans l'annonce. La race y est reconnue (féminins, pluriels, « croisé » ou « type » compris), les couleurs françaises ou anglaises sont ramenées au vocabulaire des annonces, chienne, chatte ou femelle disent le sexe ; les autres mots (collier, nom, signe distinctif) sont cherchés dans l'annonce. La réponse dit comment la phrase a été comprise. / Words or a phrase: the breed is recognised, French or English colours are mapped to the listings' vocabulary, sex words are read, other words are searched in the listing; the answer says how it was understood."New value: +"Free words or a phrase in French or English (string, up to 120 characters), e.g. \"black lab mix red collar\". Breed, colour and sex are recognised; other words are searched in the listing text. The answer says how it was understood."
    • changedInput schema / properties / tri / description
      Previous value: -"recent : les plus récentes d'abord (par défaut) ; proche : les plus proches du centre d'abord. / recent: most recent first (default); proche: closest to the centre first."New value: +"Sort order: recent (most recent first, default) or proche (closest to the centre first; needs commune or coordinates)."
    • 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"
      -]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"
      +]
    • changedOutput schema / properties / ecartee_par_sexe / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "commune": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "date_evenement": {
      -        "type": "string"
      -      },
      -      "distance_km": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "mot": {
      -        "description": "Le mot du texte qui a dit le sexe (« chatte »). / The word that gave the sex.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "sexe": {
      -        "description": "Le sexe noté sur l'annonce. / The sex noted on the listing.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "sexe_lu_dans": {
      -        "description": "D'où vient le critère : un mot du texte, ou le paramètre sexe. / Where the criterion comes from.",
      -        "enum": [
      -          "texte",
      -          "parametre"
      -        ],
      -        "type": "string"
      -      },
      -      "statut": {
      -        "type": "string"
      -      },
      -      "url": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "url",
      -      "commune",
      -      "distance_km",
      -      "statut",
      -      "date_evenement",
      -      "sexe",
      -      "sexe_lu_dans",
      -      "mot"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "commune": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "date_evenement": {
      +        "type": "string"
      +      },
      +      "distance_km": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "mot": {
      +        "description": "The word that gave the sex (“chatte”).",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "sexe": {
      +        "description": "The sex noted on the listing.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "sexe_lu_dans": {
      +        "description": "Where the criterion comes from: a word of texte, or the sexe parameter.",
      +        "enum": [
      +          "texte",
      +          "parametre"
      +        ],
      +        "type": "string"
      +      },
      +      "statut": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "url",
      +      "commune",
      +      "distance_km",
      +      "statut",
      +      "date_evenement",
      +      "sexe",
      +      "sexe_lu_dans",
      +      "mot"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / ecartee_par_sexe / description
      Previous value: -"L'annonce que le seul critère de sexe écarte, la plus proche (la plus récente sans centre), que la réponse soit vide ou non ; ecartees_par_sexe dit combien il en écarte. / The closest listing left out by the sex criterion alone, whether or not the answer is empty; ecartees_par_sexe gives how many it leaves out."New value: +"The closest listing left out by the sex criterion alone (the most recent without a centre), whether or not the answer is empty; ecartees_par_sexe gives how many it leaves out."
    • changedOutput schema / properties / ecartees_par_sexe_rayon_km / description
      Previous value: -"Le rayon où ecartees_par_sexe est compté : rayon_km, ou le rayon maximal (100) quand une réponse vide s'est élargie ; null sans critère de sexe ou sans centre. Seules les annonces de la race cherchée y sont comptées, race_non_precisee compte les siennes. / The radius over which ecartees_par_sexe is counted: rayon_km, or the maximum radius (100) when an empty answer was widened; null without a sex criterion or a centre. Only listings of the breed searched for are counted there; race_non_precisee counts its own."New value: +"The radius over which ecartees_par_sexe is counted: rayon_km, or the maximum radius (100) when an empty answer was widened; null without a sex criterion or a centre. Only listings of the breed searched for are counted there; race_non_precisee counts its own."
    • changedOutput schema / properties / homonymes / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "autres": {
      -        "description": "Les autres, à demander avec leur département (« Saint-Denis (93) »). / The others, to ask for with their department.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "commune": {
      -        "type": "string"
      -      },
      -      "retenue": {
      -        "description": "La commune qui a servi, la plus peuplée (« Saint-Denis (974) »). / The town used, the most populous.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "commune",
      -      "retenue",
      -      "autres"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "autres": {
      +        "description": "The others, to ask for with their department (“Saint-Denis (93)”).",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "commune": {
      +        "type": "string"
      +      },
      +      "retenue": {
      +        "description": "The town used, the most populous (“Saint-Denis (974)”).",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "commune",
      +      "retenue",
      +      "autres"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / homonymes / description
      Previous value: -"Quand plusieurs communes portent exactement le nom donné et qu'aucun département ne les départage ; null sinon. / When several towns have exactly the given name and no department tells them apart; null otherwise."New value: +"When several towns have exactly the given name and no department tells them apart; null otherwise."
    • 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 / plus_proche / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "commune": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "date_evenement": {
      -        "type": "string"
      -      },
      -      "distance_km": {
      -        "type": "number"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "rayon_max_km": {
      -        "type": "number"
      -      },
      -      "statut": {
      -        "type": "string"
      -      },
      -      "total_exact": {
      -        "type": "boolean"
      -      },
      -      "total_rayon_max": {
      -        "type": "number"
      -      },
      -      "url": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "url",
      -      "commune",
      -      "distance_km",
      -      "statut",
      -      "date_evenement",
      -      "total_rayon_max",
      -      "total_exact",
      -      "rayon_max_km"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "commune": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "date_evenement": {
      +        "type": "string"
      +      },
      +      "distance_km": {
      +        "type": "number"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "mise_a_jour_le": {
      +        "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"
      +        ]
      +      },
      +      "publiee_le": {
      +        "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"
      +        ]
      +      },
      +      "rayon_max_km": {
      +        "type": "number"
      +      },
      +      "source": {
      +        "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"
      +      },
      +      "statut": {
      +        "type": "string"
      +      },
      +      "total_exact": {
      +        "type": "boolean"
      +      },
      +      "total_rayon_max": {
      +        "type": "number"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "url",
      +      "commune",
      +      "distance_km",
      +      "statut",
      +      "date_evenement",
      +      "publiee_le",
      +      "mise_a_jour_le",
      +      "source",
      +      "total_rayon_max",
      +      "total_exact",
      +      "rayon_max_km"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / plus_proche / description
      Added value: +"In an empty answer, the closest listing meeting the same criteria, up to rayon_max_km from the centre, with its dates and source."
    • changedOutput schema / properties / race_non_precisee / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "annonces": {
      -        "items": {
      -          "properties": {
      -            "commune": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "couleur": {
      -              "description": "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.",
      -              "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"
      -              ]
      -            },
      -            "page_race": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "photo": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "race": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "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"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "ecartees_par_sexe": {
      -        "description": "Les annonces de ce bloc que le seul critère de sexe écarte, dans le même rayon. / Listings of this block left out by the sex criterion alone, within the same radius.",
      -        "type": "number"
      -      },
      -      "total": {
      -        "type": "number"
      -      },
      -      "total_exact": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "total",
      -      "total_exact",
      -      "annonces",
      -      "ecartees_par_sexe"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "annonces": {
      +        "items": {
      +          "properties": {
      +            "commune": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "couleur": {
      +              "description": "Listing colour, translated into the response language when it is in the colour vocabulary, otherwise as written.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "criteres_demandes": {
      +              "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"
      +            },
      +            "date_evenement": {
      +              "type": "string"
      +            },
      +            "derniere_nouvelle": {
      +              "type": "string"
      +            },
      +            "distance_km": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "espece": {
      +              "type": "string"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "lieu": {
      +              "description": "Written place, only when the position is not blurred.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "mise_a_jour_le": {
      +              "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"
      +              ]
      +            },
      +            "page_race": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "photo": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "publiee_le": {
      +              "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"
      +              ]
      +            },
      +            "race": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "sexe": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "signes_distinctifs": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "source": {
      +              "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"
      +            },
      +            "statut": {
      +              "description": "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",
      +            "publiee_le",
      +            "mise_a_jour_le",
      +            "source",
      +            "criteres_demandes"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "ecartees_par_sexe": {
      +        "description": "Listings of this block left out by the sex criterion alone, within the same radius.",
      +        "type": "number"
      +      },
      +      "total": {
      +        "type": "number"
      +      },
      +      "total_exact": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "total",
      +      "total_exact",
      +      "annonces",
      +      "ecartees_par_sexe"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / recherche_comprise / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "couleurs": {
      -        "description": "Les couleurs exigées. / Required colours.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "couleurs_facultatives": {
      -        "description": "Les couleurs qui classent sans écarter (« tigré » dans « roux tigré »). / Colours that rank without excluding (tabby in “ginger tabby”).",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "espece": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "mots": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "mots_ignores": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "noms_cherches": {
      -        "description": "Pour un animal autre qu'un chien ou un chat (« lapin », « perruche »), ses noms français et anglais, tous cherchés dans la race des annonces (« Rabbit », « Parakeet ») ; vide sinon. / For an animal other than a dog or cat, its French and English names, all searched in the listings' breed; empty otherwise.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "race_ecrite": {
      -        "description": "La race donnée, cherchée aussi telle qu'écrite (mot entier) dans la race des annonces : nom partiel, race hors de l'annuaire, oiseau ou autre animal. / The given breed, also searched as written (whole word) in the listings' breed.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "races": {
      -        "items": {
      -          "properties": {
      -            "nom": {
      -              "type": "string"
      -            },
      -            "page": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "nom",
      -            "page"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "races_couvertes": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "sexe": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "male",
      -              "femelle"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "texte": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "texte",
      -      "races",
      -      "races_couvertes",
      -      "race_ecrite",
      -      "noms_cherches",
      -      "espece",
      -      "sexe",
      -      "couleurs",
      -      "couleurs_facultatives",
      -      "mots",
      -      "mots_ignores"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "couleurs": {
      +        "description": "Required colours.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "couleurs_facultatives": {
      +        "description": "Colours that rank without excluding (tabby in “ginger tabby”).",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "espece": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "mots": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "mots_ignores": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "noms_cherches": {
      +        "description": "For an animal other than a dog or cat (“lapin”, “perruche”), its French and English names, all searched in the listings' breed (“Rabbit”, “Parakeet”); empty otherwise.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "race_ecrite": {
      +        "description": "The given breed, also searched as written (whole word) in the listings' breed: partial name, breed outside the directory, bird or other animal.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "races": {
      +        "items": {
      +          "properties": {
      +            "nom": {
      +              "type": "string"
      +            },
      +            "page": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "nom",
      +            "page"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "races_couvertes": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "sexe": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "male",
      +              "femelle"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "texte": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "texte",
      +      "races",
      +      "races_couvertes",
      +      "race_ecrite",
      +      "noms_cherches",
      +      "espece",
      +      "sexe",
      +      "couleurs",
      +      "couleurs_facultatives",
      +      "mots",
      +      "mots_ignores"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed2 schema fields 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."
    • changedOutput schema / properties / race_non_precisee / anyOf
      Previous 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"
      -              ]
      -            },
      -            "page_race": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "photo": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "race": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "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"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "ecartees_par_sexe": {
      -        "description": "Les annonces de ce bloc que le seul critère de sexe écarte, dans le même rayon. / Listings of this block left out by the sex criterion alone, within the same radius.",
      -        "type": "number"
      -      },
      -      "total": {
      -        "type": "number"
      -      },
      -      "total_exact": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "total",
      -      "total_exact",
      -      "annonces",
      -      "ecartees_par_sexe"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "annonces": {
      +        "items": {
      +          "properties": {
      +            "commune": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "couleur": {
      +              "description": "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.",
      +              "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"
      +              ]
      +            },
      +            "page_race": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "photo": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "race": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "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"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "ecartees_par_sexe": {
      +        "description": "Les annonces de ce bloc que le seul critère de sexe écarte, dans le même rayon. / Listings of this block left out by the sex criterion alone, within the same radius.",
      +        "type": "number"
      +      },
      +      "total": {
      +        "type": "number"
      +      },
      +      "total_exact": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "total",
      +      "total_exact",
      +      "annonces",
      +      "ecartees_par_sexe"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Changed11 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."
    • addedInput schema / properties / couleur
      Added value: +{
      +  "description": "Couleur de la robe, en français ou en anglais (« noir et blanc », « tabby », « black »), cherchée dans la couleur des annonces ; avec une race, une couleur non précisée reste comprise. / Coat colour in French or English, searched in the listings' colour; with a breed, an unspecified colour is kept.",
      +  "maxLength": 60,
      +  "minLength": 2,
      +  "type": "string"
      +}
    • addedInput schema / properties / decalage
      Added value: +{
      +  "default": 0,
      +  "description": "Nombre d'annonces à passer, pour lire la suite d'une liste : 10 donne la deuxième page de 10. / Number of listings to skip, to read the next page.",
      +  "maximum": 500,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / inclure_race_inconnue
      Added value: +{
      +  "description": "Avec une race, donnée ou reconnue dans texte : un second bloc liste les animaux de même espèce dont la race n'est pas précisée (inconnue, européen pour un chat, croisé pour un chien), les plus proches d'abord. Vrai par défaut quand une race est connue. / With a breed: a second block lists same-species animals of unspecified breed, closest first; true by default when a breed is known.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / jours / description
      Previous value: -"Seulement les annonces des N derniers jours. / Only listings from the last N days."New value: +"Seulement les annonces des N derniers jours, comptés en jours entiers depuis minuit, heure de Paris. / Only listings from the last N calendar days, Paris time."
    • addedInput schema / properties / perdu_le
      Added value: +{
      +  "description": "Date de la perte, AAAA-MM-JJ : seules restent les annonces dont l'événement (découverte, première observation) date de la veille ou d'après ; remplace jours. / Date the pet was lost, YYYY-MM-DD: only listings whose event dates from the day before or later; replaces jours.",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / race
      Added value: +{
      +  "description": "Race, en français ou en anglais (« labrador », « siamoise », « German Shepherd ») ; un nom partiel (« berger ») couvre les races de l'annuaire qui le contiennent et les races écrites qui contiennent ce mot ; un nom hors de l'annuaire, ou pour un oiseau ou un autre animal (« perruche »), est cherché tel qu'écrit dans la race des annonces, sous ses noms français et anglais pour un animal courant (« lapin » trouve « Rabbit »). / Breed in French or English; a partial name covers every breed that contains it, and written breeds containing the word; a name outside the directory, or for a bird or other animal, is searched as written, under its French and English names for a common animal (“rabbit” finds “Lapin”).",
      +  "maxLength": 60,
      +  "minLength": 2,
      +  "type": "string"
      +}
    • addedInput schema / properties / sexe
      Added value: +{
      +  "description": "male ou femelle ; les annonces de sexe inconnu restent comprises. / male or femelle (female); listings of unknown sex are kept.",
      +  "enum": [
      +    "male",
      +    "femelle"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / texte / description
      Previous value: -"Mots à retrouver dans l'annonce : couleur, race, signe distinctif, collier, nom. / Words to find in the listing."New value: +"Mots ou phrase à retrouver dans l'annonce. La race y est reconnue (féminins, pluriels, « croisé » ou « type » compris), les couleurs françaises ou anglaises sont ramenées au vocabulaire des annonces, chienne, chatte ou femelle disent le sexe ; les autres mots (collier, nom, signe distinctif) sont cherchés dans l'annonce. La réponse dit comment la phrase a été comprise. / Words or a phrase: the breed is recognised, French or English colours are mapped to the listings' vocabulary, sex words are read, other words are searched in the listing; the answer says how it was understood."
    • addedInput schema / properties / tri
      Added value: +{
      +  "default": "recent",
      +  "description": "recent : les plus récentes d'abord (par défaut) ; proche : les plus proches du centre d'abord. / recent: most recent first (default); proche: closest to the centre first.",
      +  "enum": [
      +    "recent",
      +    "proche"
      +  ],
      +  "type": "string"
      +}
    • 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"
      +            ]
      +          },
      +          "page_race": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "photo": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "race": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "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"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "centre": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "decalage": {
      +      "type": "number"
      +    },
      +    "ecartee_par_sexe": {
      +      "anyOf": [
      +        {
      +          "properties": {
      +            "commune": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "date_evenement": {
      +              "type": "string"
      +            },
      +            "distance_km": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "mot": {
      +              "description": "Le mot du texte qui a dit le sexe (« chatte »). / The word that gave the sex.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "sexe": {
      +              "description": "Le sexe noté sur l'annonce. / The sex noted on the listing.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "sexe_lu_dans": {
      +              "description": "D'où vient le critère : un mot du texte, ou le paramètre sexe. / Where the criterion comes from.",
      +              "enum": [
      +                "texte",
      +                "parametre"
      +              ],
      +              "type": "string"
      +            },
      +            "statut": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "url",
      +            "commune",
      +            "distance_km",
      +            "statut",
      +            "date_evenement",
      +            "sexe",
      +            "sexe_lu_dans",
      +            "mot"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "L'annonce que le seul critère de sexe écarte, la plus proche (la plus récente sans centre), que la réponse soit vide ou non ; ecartees_par_sexe dit combien il en écarte. / The closest listing left out by the sex criterion alone, whether or not the answer is empty; ecartees_par_sexe gives how many it leaves out."
      +    },
      +    "ecartees_par_sexe": {
      +      "type": "number"
      +    },
      +    "ecartees_par_sexe_rayon_km": {
      +      "description": "Le rayon où ecartees_par_sexe est compté : rayon_km, ou le rayon maximal (100) quand une réponse vide s'est élargie ; null sans critère de sexe ou sans centre. Seules les annonces de la race cherchée y sont comptées, race_non_precisee compte les siennes. / The radius over which ecartees_par_sexe is counted: rayon_km, or the maximum radius (100) when an empty answer was widened; null without a sex criterion or a centre. Only listings of the breed searched for are counted there; race_non_precisee counts its own.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "homonymes": {
      +      "anyOf": [
      +        {
      +          "properties": {
      +            "autres": {
      +              "description": "Les autres, à demander avec leur département (« Saint-Denis (93) »). / The others, to ask for with their department.",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "commune": {
      +              "type": "string"
      +            },
      +            "retenue": {
      +              "description": "La commune qui a servi, la plus peuplée (« Saint-Denis (974) »). / The town used, the most populous.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "commune",
      +            "retenue",
      +            "autres"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Quand plusieurs communes portent exactement le nom donné et qu'aucun département ne les départage ; null sinon. / When several towns have exactly the given name and no department tells them apart; null otherwise."
      +    },
      +    "plus_proche": {
      +      "anyOf": [
      +        {
      +          "properties": {
      +            "commune": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "date_evenement": {
      +              "type": "string"
      +            },
      +            "distance_km": {
      +              "type": "number"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "rayon_max_km": {
      +              "type": "number"
      +            },
      +            "statut": {
      +              "type": "string"
      +            },
      +            "total_exact": {
      +              "type": "boolean"
      +            },
      +            "total_rayon_max": {
      +              "type": "number"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "url",
      +            "commune",
      +            "distance_km",
      +            "statut",
      +            "date_evenement",
      +            "total_rayon_max",
      +            "total_exact",
      +            "rayon_max_km"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "race_non_precisee": {
      +      "anyOf": [
      +        {
      +          "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"
      +                    ]
      +                  },
      +                  "page_race": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "photo": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "race": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "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"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "ecartees_par_sexe": {
      +              "description": "Les annonces de ce bloc que le seul critère de sexe écarte, dans le même rayon. / Listings of this block left out by the sex criterion alone, within the same radius.",
      +              "type": "number"
      +            },
      +            "total": {
      +              "type": "number"
      +            },
      +            "total_exact": {
      +              "type": "boolean"
      +            }
      +          },
      +          "required": [
      +            "total",
      +            "total_exact",
      +            "annonces",
      +            "ecartees_par_sexe"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "rayon_km": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "recherche_comprise": {
      +      "anyOf": [
      +        {
      +          "properties": {
      +            "couleurs": {
      +              "description": "Les couleurs exigées. / Required colours.",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "couleurs_facultatives": {
      +              "description": "Les couleurs qui classent sans écarter (« tigré » dans « roux tigré »). / Colours that rank without excluding (tabby in “ginger tabby”).",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "espece": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "mots": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "mots_ignores": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "noms_cherches": {
      +              "description": "Pour un animal autre qu'un chien ou un chat (« lapin », « perruche »), ses noms français et anglais, tous cherchés dans la race des annonces (« Rabbit », « Parakeet ») ; vide sinon. / For an animal other than a dog or cat, its French and English names, all searched in the listings' breed; empty otherwise.",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "race_ecrite": {
      +              "description": "La race donnée, cherchée aussi telle qu'écrite (mot entier) dans la race des annonces : nom partiel, race hors de l'annuaire, oiseau ou autre animal. / The given breed, also searched as written (whole word) in the listings' breed.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "races": {
      +              "items": {
      +                "properties": {
      +                  "nom": {
      +                    "type": "string"
      +                  },
      +                  "page": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "nom",
      +                  "page"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "races_couvertes": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "sexe": {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "male",
      +                    "femelle"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "texte": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "texte",
      +            "races",
      +            "races_couvertes",
      +            "race_ecrite",
      +            "noms_cherches",
      +            "espece",
      +            "sexe",
      +            "couleurs",
      +            "couleurs_facultatives",
      +            "mots",
      +            "mots_ignores"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "total": {
      +      "type": "number"
      +    },
      +    "total_exact": {
      +      "type": "boolean"
      +    },
      +    "tri": {
      +      "enum": [
      +        "recent",
      +        "proche"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "total",
      +    "total_exact",
      +    "centre",
      +    "homonymes",
      +    "rayon_km",
      +    "annonces",
      +    "tri",
      +    "decalage",
      +    "recherche_comprise",
      +    "plus_proche",
      +    "ecartees_par_sexe",
      +    "ecartees_par_sexe_rayon_km",
      +    "ecartee_par_sexe",
      +    "race_non_precisee"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds behavior the annotations cannot: a hard cap of 25 returned listings with photo, dates, source and link, plus language handling — French or English input, French output by default and English with langue "en". Nothing contradicts the annotations.

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?

Three tightly packed sentences for a 17-parameter tool: purpose first, then the tricky status semantics, then return shape and language. No filler and nothing important is buried at the end.

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 an output schema present it need not describe return values in detail, and annotations carry the safety profile; the description still covers scope, the status gotcha, the 25-listing cap and language behavior. It leaves paging (decalage), the geo/radius model and the choice between this tool and the photo or listing-detail siblings to the schema, which is acceptable but not exhaustive for a tool of this size.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description surfaces the counterintuitive statut mapping (perdu vs trouve_ou_errant) at the top level rather than leaving it buried in a 17-parameter schema, and summarizes the filter facets an agent should map onto parameters. It adds emphasis and cross-field synthesis, though little that is entirely absent from the schema.

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 gives a specific verb (Search) plus the exact resource and scope: Mission Museaux's listings of lost, found and stray pets in France near a town or point, filterable by species, breed, colour, sex, date or words. The domain is unmistakably distinct from siblings such as chercher_adoptions, chercher_races and chercher_par_photo, so an agent can route 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?

It supplies a valuable, non-obvious usage rule — use statut trouve_ou_errant when looking for a lost pet, perdu when looking for a found one — and the geographic/date framing makes the intended context clear. It stops short of naming alternatives (e.g. when to prefer chercher_par_photo or voir_annonce), so no explicit exclusions or sibling routing are given.

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