# prescriptio_prospection_objectif_jour

L'OBJECTIF DU JOUR de la prospection, et la preparation qui va avec. A ne pas confondre avec prescriptio_prospection_objectif, qui porte l'objectif de VENTE (combien, pour quand, et l'offre) : celui-ci porte le RYTHME quotidien par canal, et il LIT l'autre sans jamais l'ecrire. action quota : votre objectif du jour (defaut 20 messages prives, 20 courriels). Ce n'est pas une limite imposee. action preparer : ecrit les brouillons du jour, en lots de 5, a partir de la file (cibles rangees d'abord, jamais quelqu'un de deja touche, jamais un fil ouvert, jamais une personne opposee ou ecartee). Chaque brouillon porte sa MESURE, faite sur le terme de la cible et filtree sur son departement : une cible sans resultat pertinent ne produit PAS de brouillon, et l'outil dit pourquoi. action joindre_capture : attache la capture d'ecran de la recherche au brouillon. action valider : passe un lot entier de « a valider » a « pret a partir » — AUCUN envoi. action ecarter : retire une cible, avec sa raison. action statut : ou en est la journee, par canal et par periode (jour, 7 jours, 30 jours) — la forme d'un rapport de prospection.

| | |
|---|---|
| Effets | lecture et écriture dans l'espace du compte |
| Portée OAuth | `mcp:write` |
| Offre requise | aucune — ouvert à tous les comptes |
| Données lues | l'espace du compte authentifié (ses alertes, ses dossiers, sa base) |
| Distribution | MCP historique |

Cet outil n'a pas d'équivalent REST : il s'appelle par le connecteur MCP.

## Paramètres

| Paramètre | Type | Requis | Bornes | Description |
|---|---|---|---|---|
| `accroche_id` | texte | — | — | preparer : imposer une variante d'accroche (sinon la moins servie passe en premier). |
| `action` | `statut` · `quota` · `preparer` · `valider` · `ecarter` · `joindre_capture` | — | — | statut (defaut) : ou en est la journee, par canal et par periode (jour, 7 jours, 30 jours), plus les lots prepares. quota : lit ou ecrit l'objectif quotidien du membre. preparer : ecrit les brouillons du jour, par lots. valider : fait passer un lot entier de « a valider » a « pret a partir ». ecarter : retire une cible de la file, avec sa raison. joindre_capture : attache la capture d'ecran de la recherche a un brouillon. |
| `canal` | `mp` · `mail` | — | — | mp = message prive LinkedIn (defaut), mail = courriel individuel ecrit depuis votre messagerie. Les campagnes de masse ont leur propre module et leur propre quota. |
| `image_base64` | texte | — | — | joindre_capture : la capture, en base64 (PNG, JPEG ou WebP ; 2 Mio au plus). Une data URL complete est acceptee. Re-joindre REMPLACE la capture precedente. |
| `inclure_sans_fonction` | booléen | — | — | preparer : inclure les contacts dont on ne connait pas la fonction (defaut false : on n'ecrit pas a quelqu'un dont on ignore le metier). |
| `jusqu_au` | texte | — | format `^[0-9]{4}-[0-9]{2}-[0-9]{2}$` | ecarter : date jusqu'a laquelle l'ecart court (AAAA-MM-JJ). Omettre pour un ecart definitif. |
| `legende` | texte | — | max. caractères 300 | joindre_capture : ce que la capture montre, en une phrase. |
| `limite` | entier | — | min 1, max 60 | preparer : au plus N brouillons, sans jamais depasser ce qu'il reste a faire aujourd'hui. |
| `lot` | texte | — | max. caractères 64 | valider : la cle du lot rendue par preparer (exemple 2026-09-17-mp-1). statut : detaille ce lot. |
| `message_id` | texte | — | — | joindre_capture : UUID du brouillon, rendu par preparer ou statut. |
| `modele_id` | texte | — | — | preparer : imposer un modele au lieu de laisser la selection choisir. |
| `par_jour` | entier | — | min 0, max 500 | quota : combien de touches par jour sur ce canal. C'est VOTRE objectif, pas une limite imposee. Defaut : 20 en message prive, 20 en courriel. Ghislain, 2026-09-17 : « rabaisse l objectif a 20 par jour ». |
| `prospect_id` | texte | — | — | ecarter : UUID du contact a retirer de la file. |
| `raison` | texte | — | max. caractères 300 | ecarter : pourquoi. Obligatoire, c'est elle qui permet de relire l'ecart plus tard. |
| `taille_lot` | entier | — | min 1, max 20 | preparer : combien de brouillons par lot de relecture (defaut 5). |

## Exemple d'appel

_squelette synthétique : les repères `<…>` se remplacent._

```json
{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "action": "statut"
    },
    "name": "prescriptio_prospection_objectif_jour"
  }
}
```

En HTTP, c'est ce corps que l'on poste :

```bash
curl -sS https://prescriptio.fr/api/mcp \
  -H 'Authorization: Bearer <jeton>' \
  -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"action":"statut"},"name":"prescriptio_prospection_objectif_jour"}}'
```

## Forme de la réponse

Le résultat est enveloppé par le protocole : un bloc `content[0].text` qui porte le JSON sérialisé, et `structuredContent` qui porte le même objet. Le squelette ci-dessous donne les **types**, jamais des valeurs réelles.

```json
{
  "action": "<texte>",
  "download_url": "<texte>",
  "fields": {},
  "files": [
    {}
  ],
  "ok": false,
  "page": 0,
  "pages_total": 0,
  "quota": {},
  "texte": "<texte>"
}
```

Un champ absent ou `null` n'est ni un zéro ni une estimation : la source ne l'a pas renseigné. Les propriétés additionnelles restent autorisées ; ce squelette n'invente pas les champs manquants.

## Erreurs

Le connecteur MCP renvoie une erreur JSON-RPC pour ce qui empêche l'appel, et une erreur *métier* (`isError`) lisible par le modèle pour ce que l'appel n'a pas pu faire.

| Code JSON-RPC | Quand | Que faire |
|---|---|---|
| `-32601` | Outil inconnu | Appeler `tools/list` ; ne pas deviner un nom |
| `-32602` | Argument absent ou hors schéma | Corriger l'argument nommé dans le message |
| `-32003` | Portée OAuth absente de l'autorisation | Reconnecter en acceptant `mcp:read` ou `mcp:write` |
| `-32004` | Quota dépassé | Attendre le délai indiqué ; ne jamais boucler |
| `-32603` | Dépendance indisponible | Réessayer plus tard ; ne pas rejouer une écriture sans vérifier |

Sur les routes REST `/api/mcp/v1/*`, les mêmes situations sont des codes HTTP : `400 invalid_arguments` / `invalid_cursor`, `401 unauthenticated`, `403 insufficient_scope` / `access_denied` / `user_required` / `organization_required` / `role_denied`, `404 not_found`, `409 conflict`, `429 quota_exceeded` (avec `Retry-After` quand il est connu), `503 unavailable`, `504 timeout`. Le corps porte `error.code`, `error.message`, `error.retry_after_seconds` et `api_contract_version`.

⚠ Un message d'erreur n'est jamais une donnée : ne pas le recopier comme un fait, et ne pas inventer un identifiant ou une URL qu'il ne contient pas.

## Quotas

Un appel compte pour **une unité** dans les deux compteurs d'appels, partagés entre le connecteur MCP et les routes REST :

| Compteur | Compte gratuit | Abonné | Accès interne |
|---|---|---|---|
| Appels / 24 h glissantes | 100 | 5000 | illimité |
| Appels / 60 s (anti-rafale) | 5 | 30 | illimité |
| Dossiers distincts / jour civil (Paris) | 5 | 500 | illimité |

Cet outil ne consomme aucune unité de dossier : chercher est gratuit, c'est la lecture d'un dossier (`prescriptio_dce`, `prescriptio_mairies` et leurs téléchargements) qui est décomptée.

**Aucun outil n'est réservé à une offre** (décision du 2026-09-17) : un compte gratuit voit et appelle le catalogue entier, ce sont ces plafonds qui bornent son usage.

## Voir aussi

[Référence technique](/docs/reference/concepts.md) · [Tous les outils](/docs/api/index.md) · [OpenAPI](/openapi.json) · [Texte pour agents](/llms-full.txt)
