addedInput schema / properties / budget_max / description
Added value: +"Montant maximum en euros."
addedInput schema / properties / budget_min / description
Added value: +"Montant minimum en euros. Les avis sans budget renseigné sont écartés, sauf include_null_budget=true."
addedInput schema / properties / buyer_keyword / description
Added value: +"Fragment du nom de l'acheteur, 3 caractères minimum, ex. 'metropole', 'CHU'."
addedInput schema / properties / buyer_siret / description
Added value: +"SIRET de l'acheteur, 14 chiffres exactement (l'établissement, pas l'entreprise)."
addedInput schema / properties / contract_type / description
Added value: +"'services', 'works' ou 'supplies'. Les formes françaises 'travaux' et 'fournitures' sont acceptées comme alias."
addedInput schema / properties / country / description
Added value: +"Code pays ISO à 2 lettres, ex. 'FR', 'DE', 'ES'. Utile pour ne garder que le français ('FR') ou cibler un pays sur le corpus TED."
addedInput schema / properties / cpv / description
Added value: +"Code CPV exact à 8 chiffres, ex. '72000000' pour les services informatiques. Environ 40 % des avis BOAMP n'ont aucun CPV : un filtre CPV seul les écarte."
addedInput schema / properties / cpv_family / description
Added value: +"Préfixe CPV à 2 chiffres, ex. '72' = toute l'informatique, '45' = travaux."
addedInput schema / properties / deadline_after / description
Added value: +"Date limite de remise postérieure à cette date ISO (AAAA-MM-JJ)."
addedInput schema / properties / deadline_before / description
Added value: +"Date limite de remise antérieure à cette date ISO (AAAA-MM-JJ)."
addedInput schema / properties / department / description
Added value: +"Code de département, ex. '35', '2A', '974'. Plusieurs valeurs séparées par des virgules."
addedInput schema / properties / descripteur / description
Added value: +"Code descripteur BOAMP (nomenclature DILA), alternative au CPV côté français."
addedInput schema / properties / include_null_budget / description
Added value: +"Garder les avis dont le budget n'est pas renseigné malgré un filtre de montant. Beaucoup d'avis BOAMP n'annoncent aucun montant."
addedInput schema / properties / include_null_deadline / description
Added value: +"Garder les avis sans date limite malgré un filtre de date limite. Sans cela, un filtre deadline_* les écarte silencieusement."
addedInput schema / properties / include_planning / description
Added value: +"Inclure les avis de pré-information (marchés simplement envisagés, non encore ouverts). Exclus par défaut."
addedInput schema / properties / keyword / description
Added value: +"Recherche plein texte sur titre et description, insensible aux accents. TOUS les mots doivent figurer dans le même avis : préférez un seul mot puis affinez. L'opérateur OR de FTS5 est accepté, ex. 'BIM OR \"maquette numerique\"'."
addedInput schema / properties / page / description
Added value: +"Numéro de page, à partir de 1."
changedInput schema / properties / page_size / default
Previous value: -20New value: +10
addedInput schema / properties / page_size / description
Added value: +"Nombre d'avis par page, 10 par défaut, plafonné à 20 en anonyme. Un avis pèse environ 1 300 caractères : montez à 20 seulement si vous comptez les lire tous."
addedInput schema / properties / procedure_type / description
Added value: +"Type de procédure, ex. 'open', 'restricted', 'negotiated'. Valeur inconnue = erreur listant les valeurs acceptées."
addedInput schema / properties / published_after / description
Added value: +"Publié après cette date ISO (AAAA-MM-JJ). C'est le filtre d'une veille quotidienne."
addedInput schema / properties / published_before / description
Added value: +"Publié avant cette date ISO (AAAA-MM-JJ)."
addedInput schema / properties / region / description
Added value: +"Région française en slug, ex. 'bretagne', 'ile-de-france', 'occitanie'. Une valeur inconnue rend une erreur qui suggère le slug le plus proche."
addedInput schema / properties / sort / description
Added value: +"'date' (antéchronologique, défaut) ou 'relevance' (classement BM25). 'relevance' n'a de sens qu'avec un keyword et est refusé sans lui."
addedInput schema / properties / source / description
Added value: +"'boamp' (avis français) ou 'ted' (avis européens). Sans valeur, les deux."
addedInput schema / properties / status / description
Added value: +"'open' (date limite non dépassée, évaluée à l'instant de la requête) ou 'closed'. ⚠️ SANS ce filtre la recherche porte sur tout le stock depuis 2015, avis clos compris (~2,9 millions) : posez 'open' si vous cherchez des avis auxquels il est encore possible de répondre."
addedOutput schema / description
Added value: +"Enveloppe d'une page de resultats. Sert d'outputSchema : il etait declare mais\nvide (`additionalProperties: true`), donc l'agent ne savait pas ou regarder.\n\n⚠️ Le SDK VALIDE la valeur rendue contre ce modele puis la RE-SERIALISE depuis lui\n(func_metadata.py:129). D'ou deux precautions, sans lesquelles un simple ajout de\nchamp cote API casserait tous les appels :\n· `extra=allow` — les champs non declares traversent au lieu d'etre effaces ;\n· tous les champs optionnels — un champ qui disparait ne fait pas echouer l'appel.\nLe detail d'un avis reste volontairement `dict` : sa forme appartient a l'API, la\nfiger ici reviendrait a maintenir deux fois le meme schema."
addedOutput schema / properties
Added value: +{
+ "client_update": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Notice de mise à jour, uniquement pour le paquet pip `tenderapi-mcp`. Sans objet pour ce serveur hébergé, qui n'a rien à installer.",
+ "title": "Client Update"
+ },
+ "hint": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Explication des raisons pour lesquelles la requête rend peu ou pas de résultats, et comment la corriger. Souvent renseigné sur un total de 0 : LISEZ-LE avant de conclure qu'il n'existe aucun avis, et reformulez en conséquence.",
+ "title": "Hint"
+ },
+ "page": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Page rendue.",
+ "title": "Page"
+ },
+ "page_size": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Nombre d'avis par page.",
+ "title": "Page Size"
+ },
+ "quota": {
+ "anyOf": [
+ {
+ "additionalProperties": true,
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Solde du palier anonyme : {restant, plafond}. Surveillez-le plutôt que de découvrir le plafond en le heurtant.",
+ "title": "Quota"
+ },
+ "results": {
+ "description": "Les avis. Champs utiles : id (entier, à passer à get_tender), title, buyer_name, deadline, budget_max, region, source, source_url.",
+ "items": {
+ "additionalProperties": true,
+ "type": "object"
+ },
+ "title": "Results",
+ "type": "array"
+ },
+ "total": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Nombre total d'avis correspondant aux filtres, toutes pages confondues.",
+ "title": "Total"
+ },
+ "warning": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Avertissement sur l'interprétation des résultats (filtre ignoré, jeu tronqué).",
+ "title": "Warning"
+ }
+}
changedOutput schema / title
Previous value: -"search_tendersDictOutput"New value: +"TenderSearchPage"