# prescriptio_alerte

Gere les alertes de recherche de l'utilisateur : lister, creer, supprimer. Une alerte rejoue périodiquement une recherche sur les sources surveillables énumérées dans sources. Les limites de texte, géographie et fraîcheur diffèrent selon la source ; elles figurent dans le schéma et les warnings. realtime signifie chaque passage du robot, pas une ingestion instantanée. action:"add" -> name et query requis (+ sources, departement, montant_min, frequency). action:"remove" -> id (via action:"list"). Pas de modification : remove puis add.

État : implémenté ; distribution : historique uniquement ; offre payante : true ; effets : lecture et écriture possibles.

## Entrée MCP

```json
{
  "properties": {
    "action": {
      "description": "list (mes alertes), add (creer), remove (supprimer).",
      "enum": [
        "list",
        "add",
        "remove"
      ],
      "type": "string"
    },
    "departement": {
      "description": "Code departement (01-95, 2A, 2B, 971-978). Sans effet sur la source attribution (DECP ne porte pas le departement) ; sur la source dce, restreint aux dossiers rapproches d'un marche. L'appel le signale dans warnings.",
      "type": "string"
    },
    "departements": {
      "description": "Plusieurs codes departement (memes regles que departement) : une region = la liste de ses departements.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "frequency": {
      "description": "Espacement MINIMAL du rejeu (defaut daily). Le robot passe toutes les 3 heures : realtime = a chaque passage, daily = au plus une fois par jour, weekly = une fois par semaine.",
      "enum": [
        "realtime",
        "daily",
        "weekly"
      ],
      "type": "string"
    },
    "id": {
      "description": "UUID de l'alerte (requis pour remove ; via action:list).",
      "type": "string"
    },
    "montant_min": {
      "description": "Montant minimum en euros. S'applique a la source attribution UNIQUEMENT (DECP, montant renseigne). Sans effet sur marche, dce et permis : le montant estime n'est publie que sur 0,12 % des avis ouverts, le filtre y viderait l'alerte.",
      "minimum": 0,
      "type": "number"
    },
    "name": {
      "description": "Nom de l'alerte (requis pour add). Reutiliser un nom existant avec d'AUTRES criteres est une erreur : supprimer puis recreer.",
      "maxLength": 120,
      "type": "string"
    },
    "query": {
      "description": "Mots-cles rejoues (requis pour add, 2 caracteres minimum). Une liste separee par des virgules vaut un OU.",
      "maxLength": 500,
      "type": "string"
    },
    "sources": {
      "description": "Sources surveillables, defaut = toutes. marche = nouveaux avis publiés, plus un rappel quand la remise approche (J-7) ; dce = nouveaux dossiers de consultation citant vos termes ; attribution = marchés attribués (DECP) citant vos termes, dans les départements suivis ; permis = permis autorisés des 45 derniers jours (Sitadel, publié par dumps) ; reseaux_sociaux = nouveaux posts observés sur les réseaux sociaux citant vos termes ; mairie = nouveaux PV de conseils municipaux citant vos termes ; bodacc = nouvelles annonces légales (BODACC) citant vos termes ; entreprise = nouvelles entreprises de l'annuaire citant vos termes ; contact = nouveaux contacts de l'annuaire citant vos termes ; dvf = ventes immobilières récentes des départements suivis (le terme n'y est pas appliqué). Aucune autre source n'est surveillable : une valeur hors de cette liste est REFUSEE.",
      "items": {
        "enum": [
          "marche",
          "dce",
          "attribution",
          "permis",
          "reseaux_sociaux",
          "mairie",
          "bodacc",
          "entreprise",
          "contact",
          "dvf"
        ],
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}
```

## Sortie MCP

```json
{
  "properties": {
    "action": {
      "type": "string"
    },
    "download_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "fields": {
      "type": "object"
    },
    "files": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "ok": {
      "type": "boolean"
    },
    "page": {
      "type": [
        "integer",
        "null"
      ]
    },
    "pages_total": {
      "type": [
        "integer",
        "null"
      ]
    },
    "quota": {
      "type": "object"
    },
    "texte": {
      "description": "Contenu textuel (pièce de DCE, PV…).",
      "type": "string"
    }
  },
  "type": "object"
}
```

[Contrats externes et limites](/docs/reference/concepts.md).
