Skip to main content
Glama

Server Details

Lost & found pets in France: stray dogs and cats, photo search, shelter adoptions, breeds, advice.

Ownership verified
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct action+resource: adoption search, lost/found listings, volunteering, breed directory, breed recognition, photo-based listing match, advice, local help, and full listing read. The descriptions actively disambiguate the two photo tools and the two breed tools by cross-referencing each other (e.g. 'To only identify a breed, use reconnaitre_race').

Naming Consistency5/5

All nine tools follow a consistent snake_case French verb_noun pattern (chercher_*, obtenir_*, reconnaitre_*, trouver_*, voir_*). No mixing of conventions or casing styles.

Tool Count5/5

Nine tools is well-scoped for a pet rescue/adoption/reporting domain, with each tool earning its place. No redundancy and no filler.

Completeness4/5

The surface covers search (adoptions, listings, photo, breed), detail retrieval, advice, local help, and volunteering, which is a broad lifecycle. Minor gaps exist, e.g. no way to report a sighting or submit a listing, and contact details are deliberately withheld, but core workflows are covered.

Available Tools

9 tools
chercher_adoptionsChercher un animal à adopter / Search pets for adoptionA
Read-onlyIdempotent
Inspect

Search cats and dogs for adoption in France, at Mission Museaux and other shelters, near a town, in a department or region, or nationwide, by breed, sex, age and gets-on-with. Returns up to 25 animals with shelter, fee, photo, dates and link; else the closest within 300 km. Accepts French or English; replies in French, or English with langue "en".

NameRequiredDescriptionDefault
raceNoBreed in French or English (string, 2 to 60 characters), e.g. "labrador", "Maine coon" or "berger australien". A partial name such as "lévrier" covers every breed containing it.
sexeNoSex: male or femelle (female). Animals of unstated sex are kept and flagged as not stated.
especeNoSpecies: chat (cat) or chien (dog); adoptions only cover cats and dogs. cat, kitten, dog or puppy are accepted. Omit for both.
langueNoResponse language: "fr" (French, default) or "en" (English). A request written in English is answered in English even without it.fr
limiteNoNumber of animals to return (whole number, 1 to 25, default 10); a larger value is lowered to 25. Use decalage for the next page.
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.
decalageNoNumber of animals to skip, for paging (whole number, 0 to 500, default 0), e.g. 10 for the second page of 10.
ententesNoGets on with (list of 1 to 4 values): chats (cats), chiens (dogs), enfants (children), premier_animal (suits a first-time owner), e.g. ["chats", "enfants"]. Only animals whose profile says so are kept.
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 300, default 60). Without a centre or departement, all of France.
longitudeNoLongitude of the search centre in decimal degrees (number, -180 to 180), e.g. 2.693. Give it with latitude, instead of commune.
departementNoDepartment or region instead of a radius (string): code or name, several separated by commas, e.g. "77", "2A", "Bretagne" or "75, 92, 93". A commune given with it only sorts by distance.
age_max_moisNoMaximum age in months, inclusive (whole number, 0 to 300), e.g. 11 for under one year or 23 for under two. Animals of unstated age are left out.
age_min_moisNoMinimum age in months, inclusive (whole number, 0 to 300), e.g. 96 for 8 years or older. Read from the age the shelter wrote; animals of unstated age are left out.

Output Schema

NameRequiredDescription
totalYes
centreYes
rappelYes
animauxYes
criteresYes
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 animal meeting the same criteria, up to rayon_max_km from the centre or the prefecture, with its dates and source.
repartitionYes
total_exactYes
departementsYes
lieu_non_couvertNoPresent when the given town is not a French town: without a requested department, no search took place; Mission Museaux covers France.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, and openWorldHint=false. Beyond that, the description discloses the 25-result cap, the fallback behaviour ('else the closest within 300 km'), and language handling ('accepts French or English; replies in French, or English with langue "en"') — genuine behavioural traits not visible in annotations.

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?

Three sentences, front-loaded with purpose then return/fallback behaviour then language, with no filler. Slightly dense and partially overlapping with schema-documented facts, but structured and appropriately sized for a 14-parameter tool.

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, the description need not enumerate return fields, and it sensibly focuses on scope, fallback and language. For a 14-parameter, zero-required search tool, this is nearly complete; only the sibling-routing boundary is left unaddressed.

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

Parameters3/5

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

Schema description coverage is 100%, and each of the 14 parameters already documents format, ranges and examples. The description's 'by breed, sex, age and gets-on-with' merely names a subset of those parameters and adds no syntax or format meaning beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (search) and resource (cats and dogs for adoption in France), with concrete scope (Mission Museaux and other shelters, geographic modes). It is distinguishable from most siblings, but never explicitly names or contrasts with the closest alternative chercher_annonces, so an agent must infer the boundary.

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

Usage Guidelines3/5

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

The description implies usage through its geographic modes (near a town, department/region, nationwide) and filter list, which tells the agent when the tool is applicable. However, it offers no explicit when-to-use-vs-alternative guidance or exclusions relative to chercher_annonces or chercher_par_photo, leaving routing to inference.

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

chercher_annoncesChercher des animaux perdus ou trouvés / Search lost and found petsA
Read-onlyIdempotent
Inspect

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

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

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

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.

chercher_missions_benevolatChercher des missions de bénévolat / Find volunteering missionsA
Read-onlyIdempotent
Inspect

Find animal volunteering missions in France (shelters, wildlife, horses) near a town, in a department or nationwide, from API Engagement data. Use it to help someone volunteer. Returns up to 25 missions with organisation, place, dates and the Mission Museaux page to apply. Accepts French or English; replies in French, or English with langue "en".

NameRequiredDescriptionDefault
typeNoKind of mission: tous (all, default), benevolat (volunteering), service_civique (French civic service, ages 16 to 25) or volontariat (other volunteer schemes).tous
langueNoResponse language: "fr" (French, default) or "en" (English). A request written in English is answered in English even without it.fr
limiteNoNumber of missions to return (whole number, 1 to 25, default 10); a larger value is lowered to 25. Use decalage for the next page.
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.
decalageNoNumber of missions 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.
rayon_kmNoSearch radius in km around commune or the coordinates (number, 1 to 100, default 30). Without a centre or departement, all of France.
longitudeNoLongitude of the search centre in decimal degrees (number, -180 to 180), e.g. 2.693. Give it with latitude, instead of commune.
departementNoDepartment or region instead of a radius (string): code or name, several separated by commas, e.g. "77", "2A", "Bretagne" or "75, 92, 93". A commune given with it only sorts by distance.

Output Schema

NameRequiredDescription
typeYes
totalYes
centreYes
rappelYesHow to apply: from the mission's page on Mission Museaux.
donneesYesWhere the missions come from: API Engagement, under the Licence Ouverte 2.0.
decalageYes
missionsYes
rayon_kmYes
homonymesYesWhen several towns have exactly the given name and no department tells them apart; null otherwise.
plus_procheYesIn an empty answer around a town or point, the closest mission of the same type beyond the radius, anywhere in France.
total_exactYes
departementsYes
indisponibleNoPresent when no search could take place (missions not available here, or the daily copy not ready yet).
lieu_non_couvertNoPresent when the given town is not a French town: without a requested department, no search took place; Mission Museaux covers France.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered; the description adds genuinely new behavioral context: the upstream data source (API Engagement), the result ceiling (up to 25 missions with organisation, place, dates and an application page), and the language negotiation behavior between French and English. It stops short of describing pagination behavior explicitly, which the limite/decalage schema handles.

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?

Three sentences, front-loaded with the core purpose and geographic scope before the return content and language rules. Slightly redundant between "Returns up to 25 missions" and the schema's maximum of 25, but overall efficient and free of padding.

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, the description need not enumerate return fields, yet it usefully names the key ones. Annotations cover the safety profile and the schema is fully self-documented, so the only real omission is guidance on choosing this tool over the other chercher_* siblings.

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. The description rises above that by synthesizing the three mutually exclusive geographic search modes (near a town, in a department, or nationwide) and by stating the language behavior that governs the langue parameter, both of which help an agent choose parameters rather than just fill them.

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 names a specific verb and resource (finding animal volunteering missions in France), states the scope variants (shelters, wildlife, horses) and the geographic modes (town, department, nationwide), and identifies the data source (API Engagement). This is clearly distinguishable from siblings such as chercher_adoptions or chercher_annonces, which target different resources.

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

Usage Guidelines3/5

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

"Use it to help someone volunteer" gives a purpose context but no explicit when/when-not and no named alternative among the sibling search tools. The geographic-mode hints (commune vs latitude/longitude vs departement) are usage-relevant but are restatements of the schema rather than routing guidance.

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

chercher_par_photoChercher des annonces par photo / Find listings by photoA
Read-onlyIdempotent
Inspect

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

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

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

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.

chercher_racesChercher une race / Look up breedsA
Read-onlyIdempotent
Inspect

Look up dog and cat breeds in Mission Museaux's directory by full or partial name, or list the most common. Use it to check a breed name. Returns French and English names, other names, FCI standard, origin, listings and adoptions per breed, and its page. Dogs and cats only. Accepts French or English; replies in French, or English with langue "en".

NameRequiredDescriptionDefault
especeNoSpecies: chat (cat) or chien (dog); the directory only covers cats and dogs. cat or dog are accepted. Omit for both.
langueNoResponse language: "fr" (French, default) or "en" (English). A request written in English is answered in English even without it.fr
limiteNoNumber of breeds to return (whole number, 1 to 30, default 10); a larger value is lowered to 30.
rechercheNoBreed name in French or English, full or partial (string, 2 to 60 characters), e.g. "berger", "retriever" or "Maine coon". Omit it to list the most common breeds.

Output Schema

NameRequiredDescription
racesYes
sourceYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds useful behavior beyond that: the domain restriction to cats and dogs, and the language negotiation rule (French default, English on request).

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 compact sentences, front-loaded with purpose and followed by return content, scope limits and language handling. No filler, though the enumerated return fields are somewhat list-like.

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, the description need not detail return values; scope, language behavior and the omit-to-list mode are all covered. Only the relationship to the breed-recognition sibling is left unstated.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (espece, langue, limite, recherche) are already fully documented with enums, defaults and bounds. The description's language note roughly restates the langue field, adding little beyond the schema baseline.

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

Purpose4/5

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

States a specific verb and resource — looking up dog and cat breeds in Mission Museaux's directory — plus the two retrieval modes (name search, most-common listing). Scope limits ('Dogs and cats only') help separate it from the photo-based sibling reconnaitre_race, though that sibling is never named.

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

Usage Guidelines3/5

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

'Use it to check a breed name' gives one implied use case but no explicit when-not guidance or alternatives. The agent must infer that reconnaitre_race (likely visual identification) is the other option.

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

obtenir_conseilsObtenir des conseils / Get adviceA
Read-onlyIdempotent
Inspect

Get Mission Museaux's step-by-step advice for one situation: lost pet, found animal, kittens outdoors, injured animal, stray cats, mistreatment, identification (microchip, I-CAD) or adoption. Use it when someone asks what to do. Returns steps, FAQ and links, for France. Accepts French or English; replies in French, or English with langue "en".

NameRequiredDescriptionDefault
langueNoResponse language: "fr" (French, default) or "en" (English). A request written in English is answered in English even without it.fr
situationYesThe situation (required): chat_perdu (lost cat), chien_perdu (lost dog), animal_trouve (found animal), chatons (kittens outdoors), animal_blesse (injured), chats_errants (stray cats), maltraitance (mistreatment), identification (microchip, I-CAD) or adoption, e.g. "chat_perdu".

Output Schema

NameRequiredDescription
faqNo
liensYes
titreYes
etapesYes
resumeNo
situationYes
premieres_heuresNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful behaviour beyond that: it discloses the return shape (steps, FAQ and links), a geographic scope limitation (France), and the language contract (accepts FR or EN, replies in French, or English with langue 'en'). The France-only limitation in particular is not derivable from any structured field.

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?

Three densely packed sentences, front-loaded with the resource and the use condition before the return/locale detail. Slight redundancy with the schema's enum list, but nothing is padded or 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?

The tool has an output schema, so return values need not be spelled out, and the description still summarises them (steps, FAQ, links). Coverage of situations, locale and scope is complete enough to invoke correctly; the only missing element is an explicit boundary against trouver_aide_locale for local-resource questions.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters carry rich enum descriptions, so the baseline is 3. The description's language sentence largely echoes what the 'langue' schema description already states ('A request written in English is answered in English even without it'), adding little new meaning beyond 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?

States a specific verb and resource, then enumerates the exact nine situations it covers (lost pet, found animal, kittens, injured animal, stray cats, mistreatment, identification, adoption), making it unmistakably distinct from the sibling search tools (chercher_adoptions, chercher_annonces, trouver_aide_locale). An agent can route between 'give me advice' and 'search listings' without opening any 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?

'Use it when someone asks what to do' gives a clear triggering condition tied to user intent rather than keywords. It does not name an explicit alternative or exclusion among siblings (e.g. trouver_aide_locale for geographic/local resources), so it falls short of a 5, but the context is unambiguous.

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

reconnaitre_raceEstimer la race sur une photo / Estimate breed from a photoA
Read-onlyIdempotent
Inspect

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

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

Output Schema

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

TDQS

A4.2/5.0
Behavior4/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents espece, langue, photo_url and photo_base64 in detail; baseline is 3. The description echoes the https-or-base64 input choice and the language override, adding only marginal meaning beyond the schema's own text.

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

trouver_aide_localeTrouver de l'aide près d'un lieu / Find local helpA
Read-onlyIdempotent
Inspect

Find local help near a French town, postcode or listing: town hall (phone, hours, pound), nearest vets, shelters and pounds within 50 km, neutering aid. Use it after a pet is lost or found. Returns up to 10 places with distance, phone, hours, source; open data, call first. Accepts French or English; replies in French, or English with langue "en".

NameRequiredDescriptionDefault
besoinNoWhat is needed: tous (all, default), veterinaire (vets), refuge (shelters), fourriere (pound), mairie (town hall) or sterilisation (neutering aid for stray cats).tous
langueNoResponse language: "fr" (French, default) or "en" (English). A request written in English is answered in English even without it.fr
annonceNoListing id or url from chercher_annonces or voir_annonce (string), e.g. a 36-character UUID, instead of commune: searches around the centre of its town, never its exact spot.
communeNoFrench town name or 5-digit postcode (string, 2 to 80 characters), e.g. "Nemours" or "77140". Searches around the town centre. France only; give commune or annonce.
rayon_kmNoSearch radius in km around the town centre (number, 1 to 50, default 50). Shelters and pounds are listed within 10, then 25, then 50 km.

Output Schema

NameRequiredDescription
liensYesNeutering aid organisations, the OpenStreetMap editor and the data sources page.
lieuxYesUp to 10 places: the town hall first, then the closest of each kind. No coordinates.
besoinYesThe need searched for, as understood.
centreYesThe town centre that distances are measured from; null when the town is not covered.
donneesYesOpen data: OpenStreetMap (ODbL), Insee Sirene and Service-Public.
rayon_kmYesThe radius used, in km (50 at most).
demarchesYesWhat to do, in plain steps (town hall and pound, neutering, call first).
indisponibleNoPresent when the list of places is not available yet.
mises_en_gardeYesWarnings to pass on: open data that may be out of date, distances as the crow flies, places independent of Mission Museaux, no medical advice.
lieu_non_couvertNoPresent when the town given is abroad or not found: Mission Museaux covers France.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), but the description adds real value beyond them: a hard 10-result cap, the returned fields (distance, phone, hours, source), open-data provenance, the "call first" staleness warning, and language behavior. No auth, rate-limit, or error behavior is described, which keeps this short of a 5.

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?

Two dense sentences that front-load the purpose, then usage and return/contract details. Slightly wasteful where it re-lists the enum values ("town hall (phone, hours, pound), nearest vets, shelters and pounds") that the schema already defines.

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

Completeness5/5

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

For a 5-parameter, no-required-arg search tool with a full output schema and complete annotation coverage, the description supplies everything an agent still needs: when to call it, result cap, distance tiers, provenance caveat, and language handling. Return-value details are covered by the output schema, so nothing material is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents besoin, langue, commune, annonce and rayon_km thoroughly. The description mostly restates the enum categories and the French/English reply rule, adding little syntax or semantics the schema lacks (the 10/25/50 km tiering and 'never its exact spot' already live in the schema descriptions). Baseline 3 is correct.

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 local help near a French town/postcode/listing) and enumerates the exact result categories: town hall, vets, shelters, pounds, neutering aid. An agent can tell this apart from the sibling search tools (chercher_annonces, chercher_adoptions) without opening any 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?

Gives a clear triggering context ("Use it after a pet is lost or found") and a practical caveat ("open data, call first"). It does not name which sibling to pick instead when the agent actually wants listings or adoption results, so the routing guidance is only partial.

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

voir_annonceLire une annonce / Read a listingA
Read-onlyIdempotent
Inspect

Read one listing or adoptable animal in full after a search, by the id or url from chercher_annonces, chercher_par_photo or chercher_adoptions. Returns description, marks, dates, source, photos and sightings, or temperament, health and fee. Never returns contact details. Accepts French or English; replies in French, or English with langue "en".

NameRequiredDescriptionDefault
langueNoResponse language: "fr" (French, default) or "en" (English). A request written in English is answered in English even without it.fr
annonceYesListing or adoptable animal to read (string): the id or url returned by chercher_annonces, chercher_par_photo or chercher_adoptions, e.g. "3f2b9c1e-5d4a-4b8e-9c7f-1a2b3c4d5e6f" or "https://missionmuseaux.fr/fiches/<id>".

Output Schema

NameRequiredDescription
idYes
ageNo
nomNo
urlYes
dateNo
lieuYes
raceYes
sexeYes
fraisNo
photoYes
santeNo
titreNo
especeYes
photosNo
sourceNoWhere 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).
statutNoStatus in the response language.
tailleNo
traitsNo
communeNo
couleurNoListing colour, translated into the response language when it is in the colour vocabulary, otherwise as written.
reserveNo
ententesNo
page_raceNo
publiee_leNoWhen 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.
associationNo
departementNo
descriptionNo
distance_kmYes
verifiee_leNoWhen Mission Museaux last re-read the listing of the association offering the animal and found it still listed (ISO date); a freshness check, not a verification of the animal. null for Mission Museaux's own animals.
observationsNo
presentationNoRewording written by Mission Museaux.
date_evenementNo
mise_a_jour_leNoListing: the latest of its last sighting, last status change and derniere_nouvelle, so it can be later than in search results. Animal offered by another association: when that association last changed its listing, null when unknown. ISO date.
pays_mentionnesNo
criteres_demandesNoFor each criterion of the request (breed, colour, sex, age, gets-on-with), whether the record states it. Empty when no such criterion was asked.
derniere_nouvelleNo
description_auteurNo“Mission Museaux” when the listing text is a summary written by Mission Museaux from the original listing (a rewording, not a quotation); null when it is the listing's own text, quoted.
signes_distinctifsNo
presentation_auteurNo
association_verifieeNo
derniere_observationNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive safety, lowering the bar. The description still adds meaningful behavior: it summarizes the returned content classes, guarantees contact details are never returned, and notes French/English acceptance with French-default output. That privacy guarantee and language behavior go beyond 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.

Conciseness4/5

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

Three tight sentences, front-loaded with the core action and source tools, then returns, then the privacy note and language behavior. Every sentence carries information with no filler, though the language sentence is somewhat redundant against the schema.

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?

An output schema exists, so return values need not be spelled out, yet the description helpfully summarizes them anyway. Annotations cover safety and the schema covers parameters fully, so the definition is nearly complete; the only minor gap is no explicit statement of what happens on an invalid or expired id.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both 'annonce' (id or url) and 'langue' (enum fr/en, default fr). The description largely repeats this (accepts French or English; replies in French or English with langue "en"), adding little beyond the structured fields. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (read) and resource (one listing or adoptable animal) in full, and explicitly distinguishes itself from siblings by naming the search tools (chercher_annonces, chercher_par_photo, chercher_adoptions) that produce the id/url it consumes. An agent can tell it apart from the search siblings immediately.

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?

Clearly states the precondition: use it after a search, with the id or url returned by one of three named search tools. This gives strong routing context. It stops short of stating when not to use it (e.g., that it only reads a single item vs. listing many), so it is not a full when/when-not.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedtrouver_aide_locale2 fields changed
      • addedOutput schema / properties / lieux / items / properties / lien_google_maps
        Added value: +{
        +  "description": "A Google Maps search for the place (name and town only), for the person to check phone, hours and reviews before calling; null for a town hall or State services, whose details come from the official directory.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / lieux / items / required
        Previous value: -[
        -  "type",
        -  "nom",
        -  "commune",
        -  "distance_km",
        -  "telephone",
        -  "horaires",
        -  "horaires_lisibles",
        -  "site",
        -  "source",
        -  "date_source",
        -  "lien_osm"
        -]New value: +[
        +  "type",
        +  "nom",
        +  "commune",
        +  "distance_km",
        +  "telephone",
        +  "horaires",
        +  "horaires_lisibles",
        +  "site",
        +  "source",
        +  "date_source",
        +  "lien_osm",
        +  "lien_google_maps"
        +]
  2. 1 tool update
    • Addedtrouver_aide_locale
  3. 10 tool updates
    • Changedchercher_adoptions25 fields changed
      • changedInput schema / properties / age_max_mois / description
        Previous value: -"Âge maximal en mois, compris (11 pour moins d'un an, 23 pour moins de 2 ans). / Maximum age in months, inclusive (11 for under one year, 23 for under two)."New value: +"Maximum age in months, inclusive (whole number, 0 to 300), e.g. 11 for under one year or 23 for under two. Animals of unstated age are left out."
      • changedInput schema / properties / age_min_mois / description
        Previous value: -"Âge minimal en mois, compris (96 pour 8 ans ou plus), d'après l'âge écrit par l'association : « 2 ans » compte 24 mois. Un animal d'âge non indiqué est écarté. / Minimum age in months, inclusive (96 for 8 years or more), from the age the association wrote; animals of unstated age are left out."New value: +"Minimum age in months, inclusive (whole number, 0 to 300), e.g. 96 for 8 years or older. Read from the age the shelter wrote; animals of unstated age are left out."
      • 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 / decalage / description
        Previous value: -"Nombre d'animaux à passer, pour lire la suite d'une liste : 10 donne la deuxième page de 10. / Number of animals to skip, to read the next page."New value: +"Number of animals to skip, for paging (whole number, 0 to 500, default 0), e.g. 10 for the second page of 10."
      • changedInput schema / properties / departement / description
        Previous value: -"Département ou région : code (« 77 », « 2A », « 971 ») ou nom (« Seine-et-Marne », « Bretagne », « Île-de-France »), plusieurs séparés par des virgules. Remplace le rayon ; une commune ou des coordonnées données avec lui servent à classer par distance. / Department or region: code or name, several separated by commas. Replaces the radius; a commune or coordinates given with it sort by distance."New value: +"Department or region instead of a radius (string): code or name, several separated by commas, e.g. \"77\", \"2A\", \"Bretagne\" or \"75, 92, 93\". A commune given with it only sorts by distance."
      • changedInput schema / properties / ententes / description
        Previous value: -"S'entend avec : chats, chiens, enfants, premier_animal (convient à qui n'a jamais eu d'animal). Seuls restent les animaux dont la fiche le dit ; la réponse dit pour combien l'information manque. / Gets on with: chats (cats), chiens (dogs), enfants (children), premier_animal (suits a first-time owner); only animals whose listing says so are kept, and the answer says how many lack the information."New value: +"Gets on with (list of 1 to 4 values): chats (cats), chiens (dogs), enfants (children), premier_animal (suits a first-time owner), e.g. [\"chats\", \"enfants\"]. Only animals whose profile says so are kept."
      • addedInput schema / properties / espece / description
        Added value: +"Species: chat (cat) or chien (dog); adoptions only cover cats and dogs. cat, kitten, dog or puppy are accepted. Omit for both."
      • 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 animals 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 / race / description
        Previous value: -"Race, en français ou en anglais (« labrador », « berger australien », « Maine coon ») ; un nom partiel (« lévrier ») couvre les races de l'annuaire qui le contiennent. / Breed in French or English; a partial name covers every breed that contains it."New value: +"Breed in French or English (string, 2 to 60 characters), e.g. \"labrador\", \"Maine coon\" or \"berger australien\". A partial name such as \"lévrier\" covers every breed containing it."
      • changedInput schema / properties / rayon_km / description
        Previous value: -"Rayon autour du centre ; sans centre, toute la France. / Radius; without centre, all of France."New value: +"Search radius in km around commune or the coordinates (number, 1 to 300, default 60). Without a centre or departement, all of France."
      • changedInput schema / properties / sexe / description
        Previous value: -"male ou femelle ; les animaux de sexe non indiqué restent compris. / male or femelle (female); animals of unstated sex are kept."New value: +"Sex: male or femelle (female). Animals of unstated sex are kept and flagged as not stated."
      • addedOutput schema / properties / animaux / 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"
        +}
      • addedOutput schema / properties / animaux / items / properties / mise_a_jour_le
        Added value: +{
        +  "description": "When the association offering the animal last changed its listing (ISO date); null when unknown, and for Mission Museaux's own animals.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / animaux / 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 / animaux / 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"
        +}
      • addedOutput schema / properties / animaux / items / properties / verifiee_le
        Added value: +{
        +  "description": "When Mission Museaux last re-read the listing of the association offering the animal and found it still listed (ISO date); a freshness check, not a verification of the animal. null for Mission Museaux's own animals.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / animaux / items / required
        Previous value: -[
        -  "id",
        -  "url",
        -  "nom",
        -  "espece",
        -  "race",
        -  "age",
        -  "sexe",
        -  "lieu",
        -  "departement",
        -  "association",
        -  "frais",
        -  "photo",
        -  "distance_km",
        -  "date",
        -  "reserve",
        -  "pays_mentionnes"
        -]New value: +[
        +  "id",
        +  "url",
        +  "nom",
        +  "espece",
        +  "race",
        +  "age",
        +  "sexe",
        +  "lieu",
        +  "departement",
        +  "association",
        +  "frais",
        +  "photo",
        +  "distance_km",
        +  "date",
        +  "reserve",
        +  "pays_mentionnes",
        +  "publiee_le",
        +  "mise_a_jour_le",
        +  "verifiee_le",
        +  "source",
        +  "criteres_demandes"
        +]
      • 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": {
        -      "association": {
        -        "type": "string"
        -      },
        -      "departement": {
        -        "description": "Le code du département où se trouve l'animal (« 01 »). / Code of the department where the animal is.",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "departement_nom": {
        -        "description": "Le nom de ce département (« Ain »). / Name of that department.",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "departement_suffisant": {
        -        "description": "Pour une recherche par départements : la valeur de departement qui comprend aussi cet animal (« Rhône, 01 »). / For a department search: the departement value that also includes this animal.",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "depuis": {
        -        "description": "D'où se mesure la distance : le centre de la recherche, ou, pour une recherche par départements sans commune, une préfecture (« Lyon (préfecture, 69) »). / Where the distance is measured from: the search centre, or a prefecture for a department search without a town.",
        -        "type": "string"
        -      },
        -      "distance_km": {
        -        "type": "number"
        -      },
        -      "id": {
        -        "type": "string"
        -      },
        -      "lieu": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "nom": {
        -        "type": "string"
        -      },
        -      "rayon_km_suffisant": {
        -        "type": "number"
        -      },
        -      "rayon_max_km": {
        -        "type": "number"
        -      },
        -      "total_exact": {
        -        "type": "boolean"
        -      },
        -      "total_rayon_max": {
        -        "type": "number"
        -      },
        -      "url": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "url",
        -      "nom",
        -      "lieu",
        -      "distance_km",
        -      "rayon_km_suffisant",
        -      "association",
        -      "total_rayon_max",
        -      "total_exact",
        -      "rayon_max_km",
        -      "depuis",
        -      "departement",
        -      "departement_nom",
        -      "departement_suffisant"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "association": {
        +        "type": "string"
        +      },
        +      "departement": {
        +        "description": "Code of the department where the animal is (“01”).",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "departement_nom": {
        +        "description": "Name of that department (“Ain”).",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "departement_suffisant": {
        +        "description": "For a department search: the departement value that also includes this animal (“Rhône, 01”).",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "depuis": {
        +        "description": "Where the distance is measured from: the search centre, or a prefecture for a department search without a town (“Lyon (préfecture, 69)”).",
        +        "type": "string"
        +      },
        +      "distance_km": {
        +        "type": "number"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "lieu": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "mise_a_jour_le": {
        +        "description": "When the association offering the animal last changed its listing (ISO date); null when unknown, and for Mission Museaux's own animals.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "nom": {
        +        "type": "string"
        +      },
        +      "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_km_suffisant": {
        +        "type": "number"
        +      },
        +      "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"
        +      },
        +      "total_exact": {
        +        "type": "boolean"
        +      },
        +      "total_rayon_max": {
        +        "type": "number"
        +      },
        +      "url": {
        +        "type": "string"
        +      },
        +      "verifiee_le": {
        +        "description": "When Mission Museaux last re-read the listing of the association offering the animal and found it still listed (ISO date); a freshness check, not a verification of the animal. null for Mission Museaux's own animals.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "url",
        +      "nom",
        +      "lieu",
        +      "distance_km",
        +      "rayon_km_suffisant",
        +      "association",
        +      "publiee_le",
        +      "mise_a_jour_le",
        +      "verifiee_le",
        +      "source",
        +      "total_rayon_max",
        +      "total_exact",
        +      "rayon_max_km",
        +      "depuis",
        +      "departement",
        +      "departement_nom",
        +      "departement_suffisant"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / plus_proche / description
        Previous value: -"Dans une réponse vide, l'animal le plus proche qui répond aux mêmes critères, jusqu'à rayon_max_km du centre ou de la préfecture. / In an empty answer, the closest animal meeting the same criteria, up to rayon_max_km from the centre or the prefecture."New value: +"In an empty answer, the closest animal meeting the same criteria, up to rayon_max_km from the centre or the prefecture, with its dates and source."
    • Changedchercher_annonces35 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"
        +  }
        +]
    • Addedchercher_missions_benevolat
    • Changedchercher_par_photo19 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"
        +  }
        +]
    • Addedchercher_races
    • Removedconseils
    • Addedobtenir_conseils
    • Removedraces
    • Changedreconnaitre_race8 fields changed
      • changedInput schema / properties / espece / description
        Previous value: -"Chat, chien, oiseau ou autre animal (lapin, cochon d'Inde, tortue, furet…). / Cat, dog, bird or other animal (rabbit, guinea pig, tortoise, ferret…)."New value: +"Species shown on the photo (required): chat (cat), chien (dog), oiseau (bird) or autre (rabbit, guinea pig, tortoise, ferret…). cat, dog or rabbit are accepted."
      • changedInput schema / properties / langue / description
        Previous value: -"Langue de la réponse : fr (par défaut) ou en. / Response language: fr (default) or en."New value: +"Response language: \"fr\" (French, default) or \"en\" (English). A request written in English is answered in English even without it."
      • changedInput schema / properties / photo_base64 / description
        Previous value: -"La photo en base64, à la place de photo_url. / The photo in base64, instead of photo_url."New value: +"The photo encoded in base64 (string, with or without a data: header, about 2.5 MB at most), instead of photo_url; an image received in the conversation goes here."
      • changedInput schema / properties / photo_url / description
        Previous value: -"Adresse https d'une photo de l'animal. / https address of a photo of the animal."New value: +"Public https address of the photo itself (string url; jpeg, png or webp, 8 MB at most), e.g. \"https://example.com/dog.jpg\". Give photo_url or photo_base64, not both."
      • changedOutput schema / properties / espece / description
        Previous value: -"L'espèce estimée ou donnée, dans la langue de la réponse ; pour un oiseau ou un autre animal, races liste ses sortes (perruche ondulée, lapin…). / The estimated or given species, in the response language; for a bird or another animal, races lists its kinds (budgerigar, rabbit…)."New value: +"The estimated or given species, in the response language; for a bird or another animal, races lists its kinds (budgerigar, rabbit…)."
      • changedOutput schema / properties / famille / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "id": {
        -        "type": "string"
        -      },
        -      "nom": {
        -        "description": "Le type dans la langue de la réponse (« chien de berger », « rongeur »). / The type in the response language (“herding dog”, “rodent”).",
        -        "type": "string"
        -      },
        -      "nom_en": {
        -        "type": "string"
        -      },
        -      "nom_fr": {
        -        "type": "string"
        -      },
        -      "part": {
        -        "description": "Part cumulée des races, ou des sortes, de ce type parmi les trois en tête, en %. / Combined share of this type's breeds, or kinds, among the top three, in %.",
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "nom",
        -      "nom_fr",
        -      "nom_en",
        -      "part"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "nom": {
        +        "description": "The type in the response language (“herding dog”, “rodent”).",
        +        "type": "string"
        +      },
        +      "nom_en": {
        +        "type": "string"
        +      },
        +      "nom_fr": {
        +        "type": "string"
        +      },
        +      "part": {
        +        "description": "Combined share of this type's breeds, or kinds, among the top three, in %.",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "nom",
        +      "nom_fr",
        +      "nom_en",
        +      "part"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / famille / description
        Previous value: -"Le type de chien probable quand aucune race ne domine (verdict « incertain ») mais que les deux premières races, ses exemples, sont de ce type et que ses races parmi les trois en tête réunissent plus de la moitié de l'estimation ; pour un oiseau ou un autre animal, de même, le groupe de ses deux premières sortes (rongeur, perroquet, tortue…) ; null sinon, et toujours pour un chat. / The likely dog type when no breed dominates (verdict “incertain”) but the first two breeds, its examples, are of this type and its breeds among the top three gather more than half of the estimate; likewise, for a bird or another animal, the group of its first two kinds (rodent, parrot, tortoise…); null otherwise, and always for a cat."New value: +"The likely dog type when no breed dominates (verdict “incertain”) but the first two breeds, its examples, are of this type and its breeds among the top three gather more than half of the estimate; likewise, for a bird or another animal, the group of its first two kinds (rodent, parrot, tortoise…); null otherwise, and always for a cat."
      • changedOutput schema / properties / races / items / properties / page / description
        Previous value: -"La page de la race sur le site ; pour une sorte d'oiseau ou d'autre animal, qui n'en a pas, sa fiche Wikidata (pour un oiseau sauvage, les conseils de l'association). / The breed's page on the site; for a kind of bird or other animal, which has none, its Wikidata entry (for a wild bird, the association's advice)."New value: +"The breed's page on the site; for a kind of bird or other animal, which has none, its Wikidata entry (for a wild bird, the association's advice)."
    • Changedvoir_annonce11 fields changed
      • changedInput schema / properties / annonce / description
        Previous value: -"Identifiant de l'annonce, ou son adresse https://missionmuseaux.fr/fiches/… ; ou un animal à l'adoption renvoyé par chercher_adoptions (son id, ou son adresse /adoption/…). / Listing id or address, or an animal for adoption returned by chercher_adoptions (its id or address)."New value: +"Listing or adoptable animal to read (string): the id or url returned by chercher_annonces, chercher_par_photo or chercher_adoptions, e.g. \"3f2b9c1e-5d4a-4b8e-9c7f-1a2b3c4d5e6f\" or \"https://missionmuseaux.fr/fiches/<id>\"."
      • 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."
      • changedOutput schema / 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 / 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 / description_auteur / description
        Previous value: -"« Mission Museaux » quand le texte de l'annonce est un résumé rédigé par Mission Museaux d'après l'annonce d'origine (reformulation, pas une citation) ; null quand c'est le texte de l'annonce, cité. / “Mission Museaux” when the listing text is a summary written by Mission Museaux from the original listing (a rewording, not a quotation); null when it is the listing's own text, quoted."New value: +"“Mission Museaux” when the listing text is a summary written by Mission Museaux from the original listing (a rewording, not a quotation); null when it is the listing's own text, quoted."
      • addedOutput schema / properties / mise_a_jour_le
        Added value: +{
        +  "description": "Listing: the latest of its last sighting, last status change and derniere_nouvelle, so it can be later than in search results. Animal offered by another association: when that association last changed its listing, null when unknown. ISO date.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / presentation / description
        Previous value: -"Reformulation rédigée par Mission Museaux. / Rewording written by Mission Museaux."New value: +"Rewording written by Mission Museaux."
      • addedOutput schema / 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 / 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 / statut / description
        Previous value: -"Statut dans la langue de la réponse. / Status in the response language."New value: +"Status in the response language."
      • addedOutput schema / properties / verifiee_le
        Added value: +{
        +  "description": "When Mission Museaux last re-read the listing of the association offering the animal and found it still listed (ISO date); a freshness check, not a verification of the animal. null for Mission Museaux's own animals.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  4. 2 tool updates
    • Changedchercher_par_photo2 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"
        +  }
        +]
    • Changedreconnaitre_race7 fields changed
      • changedInput schema / properties / espece / description
        Previous value: -"Chat ou chien. / Cat or dog."New value: +"Chat, chien, oiseau ou autre animal (lapin, cochon d'Inde, tortue, furet…). / Cat, dog, bird or other animal (rabbit, guinea pig, tortoise, ferret…)."
      • changedInput schema / properties / espece / enum
        Previous value: -[
        -  "chat",
        -  "chien"
        -]New value: +[
        +  "chat",
        +  "chien",
        +  "oiseau",
        +  "autre"
        +]
      • addedOutput schema / properties / espece
        Added value: +{
        +  "description": "L'espèce estimée ou donnée, dans la langue de la réponse ; pour un oiseau ou un autre animal, races liste ses sortes (perruche ondulée, lapin…). / The estimated or given species, in the response language; for a bird or another animal, races lists its kinds (budgerigar, rabbit…).",
        +  "type": "string"
        +}
      • changedOutput schema / properties / famille / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "id": {
        -        "type": "string"
        -      },
        -      "nom": {
        -        "description": "Le type dans la langue de la réponse (« chien de berger »). / The type in the response language (“herding dog”).",
        -        "type": "string"
        -      },
        -      "nom_en": {
        -        "type": "string"
        -      },
        -      "nom_fr": {
        -        "type": "string"
        -      },
        -      "part": {
        -        "description": "Part cumulée des races de ce type parmi les trois en tête, en %. / Combined share of this type's breeds among the top three, in %.",
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "nom",
        -      "nom_fr",
        -      "nom_en",
        -      "part"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "nom": {
        +        "description": "Le type dans la langue de la réponse (« chien de berger », « rongeur »). / The type in the response language (“herding dog”, “rodent”).",
        +        "type": "string"
        +      },
        +      "nom_en": {
        +        "type": "string"
        +      },
        +      "nom_fr": {
        +        "type": "string"
        +      },
        +      "part": {
        +        "description": "Part cumulée des races, ou des sortes, de ce type parmi les trois en tête, en %. / Combined share of this type's breeds, or kinds, among the top three, in %.",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "nom",
        +      "nom_fr",
        +      "nom_en",
        +      "part"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / famille / description
        Previous value: -"Le type de chien probable quand aucune race ne domine (verdict « incertain ») mais que les deux premières races, ses exemples, sont de ce type et que ses races parmi les trois en tête réunissent plus de la moitié de l'estimation ; null sinon, et toujours pour un chat. / The likely dog type when no breed dominates (verdict “incertain”) but the first two breeds, its examples, are of this type and its breeds among the top three gather more than half of the estimate; null otherwise, and always for a cat."New value: +"Le type de chien probable quand aucune race ne domine (verdict « incertain ») mais que les deux premières races, ses exemples, sont de ce type et que ses races parmi les trois en tête réunissent plus de la moitié de l'estimation ; pour un oiseau ou un autre animal, de même, le groupe de ses deux premières sortes (rongeur, perroquet, tortue…) ; null sinon, et toujours pour un chat. / The likely dog type when no breed dominates (verdict “incertain”) but the first two breeds, its examples, are of this type and its breeds among the top three gather more than half of the estimate; likewise, for a bird or another animal, the group of its first two kinds (rodent, parrot, tortoise…); null otherwise, and always for a cat."
      • addedOutput schema / properties / races / items / properties / page / description
        Added value: +"La page de la race sur le site ; pour une sorte d'oiseau ou d'autre animal, qui n'en a pas, sa fiche Wikidata (pour un oiseau sauvage, les conseils de l'association). / The breed's page on the site; for a kind of bird or other animal, which has none, its Wikidata entry (for a wild bird, the association's advice)."
      • changedOutput schema / required
        Previous value: -[
        -  "verdict",
        -  "races",
        -  "famille",
        -  "note",
        -  "source"
        -]New value: +[
        +  "espece",
        +  "verdict",
        +  "races",
        +  "famille",
        +  "note",
        +  "source"
        +]
  5. 3 tool updates
    • Changedchercher_annonces2 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"
        +  }
        +]
    • Changedchercher_par_photo1 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."
    • Changedvoir_annonce1 field changed
      • changedOutput schema / 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."
  6. 2 tool updates
    • Changedchercher_par_photo1 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"
        +  }
        +]
    • Changedreconnaitre_race2 fields changed
      • addedOutput schema / properties / famille
        Added value: +{
        +  "anyOf": [
        +    {
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "nom": {
        +          "description": "Le type dans la langue de la réponse (« chien de berger »). / The type in the response language (“herding dog”).",
        +          "type": "string"
        +        },
        +        "nom_en": {
        +          "type": "string"
        +        },
        +        "nom_fr": {
        +          "type": "string"
        +        },
        +        "part": {
        +          "description": "Part cumulée des races de ce type parmi les trois en tête, en %. / Combined share of this type's breeds among the top three, in %.",
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "nom",
        +        "nom_fr",
        +        "nom_en",
        +        "part"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Le type de chien probable quand aucune race ne domine (verdict « incertain ») mais que les deux premières races, ses exemples, sont de ce type et que ses races parmi les trois en tête réunissent plus de la moitié de l'estimation ; null sinon, et toujours pour un chat. / The likely dog type when no breed dominates (verdict “incertain”) but the first two breeds, its examples, are of this type and its breeds among the top three gather more than half of the estimate; null otherwise, and always for a cat."
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "verdict",
        -  "races",
        -  "note",
        -  "source"
        -]New value: +[
        +  "verdict",
        +  "races",
        +  "famille",
        +  "note",
        +  "source"
        +]
  7. 7 tool updates
    • Changedchercher_adoptions9 fields changed
      • addedInput schema / properties / age_max_mois
        Added value: +{
        +  "description": "Âge maximal en mois, compris (11 pour moins d'un an, 23 pour moins de 2 ans). / Maximum age in months, inclusive (11 for under one year, 23 for under two).",
        +  "maximum": 300,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / age_min_mois
        Added value: +{
        +  "description": "Âge minimal en mois, compris (96 pour 8 ans ou plus), d'après l'âge écrit par l'association : « 2 ans » compte 24 mois. Un animal d'âge non indiqué est écarté. / Minimum age in months, inclusive (96 for 8 years or more), from the age the association wrote; animals of unstated age are left out.",
        +  "maximum": 300,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • 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 / decalage
        Added value: +{
        +  "default": 0,
        +  "description": "Nombre d'animaux à passer, pour lire la suite d'une liste : 10 donne la deuxième page de 10. / Number of animals to skip, to read the next page.",
        +  "maximum": 500,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / departement
        Added value: +{
        +  "description": "Département ou région : code (« 77 », « 2A », « 971 ») ou nom (« Seine-et-Marne », « Bretagne », « Île-de-France »), plusieurs séparés par des virgules. Remplace le rayon ; une commune ou des coordonnées données avec lui servent à classer par distance. / Department or region: code or name, several separated by commas. Replaces the radius; a commune or coordinates given with it sort by distance.",
        +  "maxLength": 120,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / ententes
        Added value: +{
        +  "description": "S'entend avec : chats, chiens, enfants, premier_animal (convient à qui n'a jamais eu d'animal). Seuls restent les animaux dont la fiche le dit ; la réponse dit pour combien l'information manque. / Gets on with: chats (cats), chiens (dogs), enfants (children), premier_animal (suits a first-time owner); only animals whose listing says so are kept, and the answer says how many lack the information.",
        +  "items": {
        +    "enum": [
        +      "chats",
        +      "chiens",
        +      "enfants",
        +      "premier_animal"
        +    ],
        +    "type": "string"
        +  },
        +  "maxItems": 4,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / race
        Added value: +{
        +  "description": "Race, en français ou en anglais (« labrador », « berger australien », « Maine coon ») ; un nom partiel (« lévrier ») couvre les races de l'annuaire qui le contiennent. / Breed in French or English; a partial name covers every breed that contains it.",
        +  "maxLength": 60,
        +  "minLength": 2,
        +  "type": "string"
        +}
      • addedInput schema / properties / sexe
        Added value: +{
        +  "description": "male ou femelle ; les animaux de sexe non indiqué restent compris. / male or femelle (female); animals of unstated sex are kept.",
        +  "enum": [
        +    "male",
        +    "femelle"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "animaux": {
        +      "items": {
        +        "properties": {
        +          "age": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "association": {
        +            "type": "string"
        +          },
        +          "date": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "departement": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "distance_km": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "espece": {
        +            "type": "string"
        +          },
        +          "frais": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "lieu": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "nom": {
        +            "type": "string"
        +          },
        +          "pays_mentionnes": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "photo": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "race": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "reserve": {
        +            "type": "boolean"
        +          },
        +          "sexe": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "url",
        +          "nom",
        +          "espece",
        +          "race",
        +          "age",
        +          "sexe",
        +          "lieu",
        +          "departement",
        +          "association",
        +          "frais",
        +          "photo",
        +          "distance_km",
        +          "date",
        +          "reserve",
        +          "pays_mentionnes"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "centre": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "criteres": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "decalage": {
        +      "type": "number"
        +    },
        +    "departements": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "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": {
        +            "association": {
        +              "type": "string"
        +            },
        +            "departement": {
        +              "description": "Le code du département où se trouve l'animal (« 01 »). / Code of the department where the animal is.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "departement_nom": {
        +              "description": "Le nom de ce département (« Ain »). / Name of that department.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "departement_suffisant": {
        +              "description": "Pour une recherche par départements : la valeur de departement qui comprend aussi cet animal (« Rhône, 01 »). / For a department search: the departement value that also includes this animal.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "depuis": {
        +              "description": "D'où se mesure la distance : le centre de la recherche, ou, pour une recherche par départements sans commune, une préfecture (« Lyon (préfecture, 69) »). / Where the distance is measured from: the search centre, or a prefecture for a department search without a town.",
        +              "type": "string"
        +            },
        +            "distance_km": {
        +              "type": "number"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "lieu": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "nom": {
        +              "type": "string"
        +            },
        +            "rayon_km_suffisant": {
        +              "type": "number"
        +            },
        +            "rayon_max_km": {
        +              "type": "number"
        +            },
        +            "total_exact": {
        +              "type": "boolean"
        +            },
        +            "total_rayon_max": {
        +              "type": "number"
        +            },
        +            "url": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "url",
        +            "nom",
        +            "lieu",
        +            "distance_km",
        +            "rayon_km_suffisant",
        +            "association",
        +            "total_rayon_max",
        +            "total_exact",
        +            "rayon_max_km",
        +            "depuis",
        +            "departement",
        +            "departement_nom",
        +            "departement_suffisant"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Dans une réponse vide, l'animal le plus proche qui répond aux mêmes critères, jusqu'à rayon_max_km du centre ou de la préfecture. / In an empty answer, the closest animal meeting the same criteria, up to rayon_max_km from the centre or the prefecture."
        +    },
        +    "rappel": {
        +      "type": "string"
        +    },
        +    "rayon_km": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "repartition": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "properties": {
        +              "association": {
        +                "type": "string"
        +              },
        +              "commune": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "nombre": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "association",
        +              "nombre",
        +              "commune"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "total": {
        +      "type": "number"
        +    },
        +    "total_exact": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "total_exact",
        +    "centre",
        +    "homonymes",
        +    "rayon_km",
        +    "departements",
        +    "decalage",
        +    "criteres",
        +    "repartition",
        +    "animaux",
        +    "plus_proche",
        +    "rappel"
        +  ],
        +  "type": "object"
        +}
    • Changedchercher_annonces11 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"
        +}
    • Changedchercher_par_photo2 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"
        +}
    • Changedconseils1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "etapes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "faq": {
        +      "items": {
        +        "properties": {
        +          "question": {
        +            "type": "string"
        +          },
        +          "reponse": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "question",
        +          "reponse"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "liens": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "premieres_heures": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "resume": {
        +      "type": "string"
        +    },
        +    "situation": {
        +      "type": "string"
        +    },
        +    "titre": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "situation",
        +    "titre",
        +    "etapes",
        +    "liens"
        +  ],
        +  "type": "object"
        +}
    • Changedraces1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "races": {
        +      "items": {
        +        "properties": {
        +          "a_l_adoption": {
        +            "type": "number"
        +          },
        +          "annonces_en_cours": {
        +            "properties": {
        +              "perdus": {
        +                "type": "number"
        +              },
        +              "trouves_ou_vus": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "perdus",
        +              "trouves_ou_vus"
        +            ],
        +            "type": "object"
        +          },
        +          "autres_noms": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "espece": {
        +            "type": "string"
        +          },
        +          "nom": {
        +            "type": "string"
        +          },
        +          "nom_en": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "nom_fr": {
        +            "type": "string"
        +          },
        +          "origine": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "page": {
        +            "type": "string"
        +          },
        +          "standard_fci": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "wikidata": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "nom",
        +          "nom_fr",
        +          "nom_en",
        +          "autres_noms",
        +          "espece",
        +          "standard_fci",
        +          "origine",
        +          "annonces_en_cours",
        +          "a_l_adoption",
        +          "page",
        +          "wikidata"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "source": {
        +      "properties": {
        +        "donnees": {
        +          "type": "string"
        +        },
        +        "nom": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "nom",
        +        "url",
        +        "donnees"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "races",
        +    "source"
        +  ],
        +  "type": "object"
        +}
    • Changedreconnaitre_race1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "note": {
        +      "type": "string"
        +    },
        +    "races": {
        +      "items": {
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "nom": {
        +            "type": "string"
        +          },
        +          "nom_en": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "nom_fr": {
        +            "type": "string"
        +          },
        +          "page": {
        +            "type": "string"
        +          },
        +          "part": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "nom",
        +          "nom_fr",
        +          "nom_en",
        +          "part",
        +          "page"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "source": {
        +      "properties": {
        +        "donnees": {
        +          "type": "string"
        +        },
        +        "nom": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "nom",
        +        "url",
        +        "donnees"
        +      ],
        +      "type": "object"
        +    },
        +    "verdict": {
        +      "enum": [
        +        "probable",
        +        "croise",
        +        "incertain"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "verdict",
        +    "races",
        +    "note",
        +    "source"
        +  ],
        +  "type": "object"
        +}
    • Changedvoir_annonce2 fields changed
      • changedInput schema / properties / annonce / description
        Previous value: -"Identifiant de l'annonce, ou son adresse https://missionmuseaux.fr/fiches/… / Listing id or address."New value: +"Identifiant de l'annonce, ou son adresse https://missionmuseaux.fr/fiches/… ; ou un animal à l'adoption renvoyé par chercher_adoptions (son id, ou son adresse /adoption/…). / Listing id or address, or an animal for adoption returned by chercher_adoptions (its id or address)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "age": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "association": {
        +      "type": "string"
        +    },
        +    "association_verifiee": {
        +      "type": "boolean"
        +    },
        +    "commune": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "couleur": {
        +      "description": "Couleur telle qu'écrite dans l'annonce. / Colour as written in the listing.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "date_evenement": {
        +      "type": "string"
        +    },
        +    "departement": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "derniere_nouvelle": {
        +      "type": "string"
        +    },
        +    "derniere_observation": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "description": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "description_auteur": {
        +      "description": "« Mission Museaux » quand le texte de l'annonce est un résumé rédigé par Mission Museaux d'après l'annonce d'origine (reformulation, pas une citation) ; null quand c'est le texte de l'annonce, cité. / “Mission Museaux” when the listing text is a summary written by Mission Museaux from the original listing (a rewording, not a quotation); null when it is the listing's own text, quoted.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "distance_km": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "ententes": {
        +      "additionalProperties": {
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "espece": {
        +      "type": "string"
        +    },
        +    "frais": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "lieu": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "nom": {
        +      "type": "string"
        +    },
        +    "observations": {
        +      "type": "number"
        +    },
        +    "page_race": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "pays_mentionnes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "photo": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "photos": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "presentation": {
        +      "description": "Reformulation rédigée par Mission Museaux. / Rewording written by Mission Museaux.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "presentation_auteur": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "race": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "reserve": {
        +      "type": "boolean"
        +    },
        +    "sante": {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "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"
        +    },
        +    "taille": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "titre": {
        +      "type": "string"
        +    },
        +    "traits": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "url",
        +    "espece",
        +    "race",
        +    "sexe",
        +    "lieu",
        +    "photo",
        +    "distance_km"
        +  ],
        +  "type": "object"
        +}
  8. 7 tool updates
    • First observedchercher_adoptions
    • First observedchercher_annonces
    • First observedchercher_par_photo
    • First observedconseils
    • First observedraces
    • First observedreconnaitre_race
    • First observedvoir_annonce

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables users to find and contact building tradespeople in France, and lets independent tradespeople create free profiles.
    Apache 2.0
  • F
    license
    Not graded
    quality
    F
    maintenance
    Ask Valérie about French property prices, recent transactions (22M+ DVF records 2020–2025), and internet coverage at any address. Free tier + €5/month subscription.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Access 17M+ geocoded French property transactions (DVF), 22M+ DPE energy ratings, and 20M+ building records via MCP or REST API. Search transactions, market stats, comparables, price trends, rental yield, flip detection, and more.
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    French real estate data platform for AI agents. Identifies property owners likely to sell and tracks behavioral signals on active listings. Coverage: metropolitan France.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources