# prescriptio_linkedin_dm

Prospection LinkedIn (lecture, offre payante). TROIS MODES : (1) mode:"pending" -> liste vos prospects a traiter (profil scanne, publications presentes, aucun message en cours) ; (2) mode:"relances" -> liste les touches parties sans reponse dont la relance est due (nombre de relances faites, date du dernier envoi) ; (3) prospect_id (UUID) -> fiche du prospect : profil public (nom, poste, societe, ville, accroche) + dernieres publications, pour rediger un message personnalise. Une fois le message redige, l'enregistrer avec prescriptio_linkedin_dm_save. Ne renvoie aucune coordonnee personnelle (e-mail, telephone).

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

## Entrée MCP

```json
{
  "properties": {
    "limit": {
      "default": 20,
      "description": "Nombre max de prospects en mode pending ou relances (defaut 20).",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "mode": {
      "description": "pending = les prospects a traiter (profil scanne, publications presentes, aucun message en cours). relances = les touches parties sans reponse dont la relance est due (date de relance echue), avec le nombre de relances deja faites et la date du dernier envoi. Les deux files sont disjointes.",
      "enum": [
        "pending",
        "relances"
      ],
      "type": "string"
    },
    "prospect_id": {
      "description": "UUID du prospect : renvoie sa fiche (profil public + dernieres publications) pour rediger un message personnalise. Alias accepte : contact_id.",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
      "type": "string"
    }
  },
  "type": "object"
}
```

## Sortie MCP

```json
{
  "properties": {
    "_meta": {
      "type": "object"
    },
    "next_cursor": {
      "description": "À repasser tel quel pour la page suivante ; null s'il n'y en a plus.",
      "type": [
        "string",
        "null"
      ]
    },
    "results": {
      "description": "Résultats de la page courante.",
      "items": {
        "properties": {
          "fields": {
            "description": "Champs propres à la source.",
            "type": "object"
          },
          "id": {
            "description": "Identifiant à citer (SIREN/SIRET, marche_id, réf DECP).",
            "type": "string"
          },
          "resume": {
            "type": "string"
          },
          "titre": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "total_estimated": {
      "description": "Total connu ou estimation signalée par la source ; null si le total est inconnu. Ne jamais extrapoler depuis la taille de la page.",
      "type": [
        "integer",
        "null"
      ]
    }
  },
  "required": [
    "results"
  ],
  "type": "object"
}
```

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