# prescriptio_suivis

La base de donnees du client : ce qu'elle contient, et la couche de travail posee dessus. TROIS TYPES : entreprise (ecran Concurrence), acheteur public (ecran Acheteurs), projet detecte (ecran Projets). PRESENCE — action list / add / remove. Identifiant selon le type : entreprise -> siren OU siret OU entreprise_id ; acheteur -> siret OU acheteur_id ; projet -> projet_id. Une entreprise absente de l'annuaire s'ajoute par `nom` (+ `ville`), en fiche hors referentiel. COUCHE DE TRAVAIL, sur une fiche deja dans la base — action qualifier (statut prospect/client/a_qualifier/concurrent, ou null pour l'effacer ; entreprises seulement), etiqueter (`tag`, + `retirer:true` pour l'oter), noter (`note`, visible par l'equipe). Le `list` rend aussi le statut, les etiquettes et les fiches HORS referentiel — ne jamais conclure « pas dans votre base » sans l'avoir appele. Trouver un identifiant : prescriptio_entreprises. Pour les recherches sauvegardees : prescriptio_alerte. Les contacts et les communes ne s'ecrivent pas ici : prescriptio_contacts et prescriptio_mairies.

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

## Entrée MCP

```json
{
  "properties": {
    "acheteur_id": {
      "description": "UUID de l'acheteur public (type=acheteur).",
      "type": "string"
    },
    "action": {
      "description": "list/add/remove gerent la PRESENCE dans la base ; qualifier/etiqueter/noter posent la couche de travail sur une fiche qui y est deja.",
      "enum": [
        "list",
        "add",
        "remove",
        "qualifier",
        "etiqueter",
        "noter"
      ],
      "type": "string"
    },
    "cle": {
      "description": "Pour un projet, clé unique de l’intention : rejouer la même clé évite de doubler une note.",
      "maxLength": 160,
      "minLength": 8,
      "type": "string"
    },
    "entreprise_id": {
      "description": "UUID entreprise (CORE).",
      "type": "string"
    },
    "limit": {
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    },
    "nom": {
      "description": "action=add, type=entreprise, SANS siren/siret : cree une fiche HORS REFERENTIEL pour un acteur absent de l'annuaire. Elle ne se mettra pas a jour toute seule — a n'utiliser que si la recherche par nom n'a rien rendu.",
      "type": "string"
    },
    "note": {
      "description": "action=noter : le texte, visible par toute l'equipe.",
      "type": "string"
    },
    "page": {
      "minimum": 1,
      "type": "integer"
    },
    "projet_id": {
      "description": "UUID du projet detecte (type=projet). Il se lit dans un action:\"list\" type:\"projet\" ou sur l'ecran Projets ; prescriptio_projets permet aussi de le rechercher.",
      "type": "string"
    },
    "retirer": {
      "description": "action=etiqueter : true retire l'etiquette au lieu de la poser.",
      "type": "boolean"
    },
    "scope": {
      "description": "Portee du list : me (defaut) ou team. SANS EFFET — une fiche appartient a l'organisation, la reponse le dit (scope_applique).",
      "enum": [
        "me",
        "team"
      ],
      "type": "string"
    },
    "siren": {
      "description": "SIREN 9 chiffres (type=entreprise).",
      "type": "string"
    },
    "siret": {
      "description": "SIRET 14 chiffres (type=entreprise ou acheteur).",
      "type": "string"
    },
    "statut": {
      "description": "action=qualifier, type=entreprise. `null` RETIRE la qualification (geste reel, pas une absence).",
      "enum": [
        "prospect",
        "client",
        "a_qualifier",
        "concurrent",
        null
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "tag": {
      "description": "action=etiqueter : le libelle de l'etiquette. La casse et les accents sont ignores (« Maconnerie » = « MAÇONNERIE »).",
      "type": "string"
    },
    "type": {
      "description": "Type d'entite suivie. Les CONTACTS ne s'ecrivent pas ici (opt-out et coordonnees encadres) : les lire avec prescriptio_contacts.",
      "enum": [
        "entreprise",
        "acheteur",
        "projet"
      ],
      "type": "string"
    },
    "ville": {
      "description": "Ville de la fiche hors referentiel (avec `nom`).",
      "type": "string"
    }
  },
  "required": [
    "action",
    "type"
  ],
  "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).
