# programmer_message_recurrent

> For AI agents: the complete documentation index is at [llms.txt](https://stampywallet.com/en/docs/llms.txt), and the whole documentation fits in one file: [llms-full.txt](https://stampywallet.com/en/docs/llms-full.txt). Online page: https://stampywallet.com/en/docs/mcp/tools/programmer_message_recurrent/

With account · Writes (confirm) · Growth plan.

Schedules a message that repeats on its own on customers' lock screens: every week (one or more days), or every month (a given day of the month, or "the first Monday", "the last Friday"), at the business's local time between 7:00 and 21:45. Examples: "every Tuesday at 11:00, where the food truck is parked", "on the 1st of every month, to this month's birthdays". The target group is recalculated at each send. Optional end: a date, or a number of sends. Rules: one message per day (on a day when another message already goes out, the occurrence is skipped), closed days and holidays are skipped (or moved to the next open day with si_ferme=decaler), quiet hours are respected, first send within 60 days. confirmer=false (default) returns a preview; confirmer=true carries it out, after the person's explicit approval. For a single, immediate send, use envoyer_message.

## Parameters

- `texte` (string, ≤ 180 characters, required) : The exact text of the notification, 180 characters at most.
- `groupe` (enum, optional) : Who receives it, recalculated at each send: tous (everyone), inactifs_30/60/90 (no visit for N days), proches (1 or 2 stamps from the reward), anniversaires (born this month), meilleurs (best customers), nouveaux (new). Any group other than tous requires targeted notifications. Default tous. Values : tous, inactifs_30, inactifs_60, inactifs_90, proches, anniversaires, meilleurs, nouveaux.
- `frequence` (enum, optional) : semaine: with jours. mois: with jour_mois, or rang and jour_rang. Values : semaine, mois.
- `jours` (array<enum>, ≤ 7, optional) : For frequence=semaine: the sending days. Values : dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi.
- `jour_mois` (integer, 1…31, optional) : For frequence=mois: the day of the month (1 to 31; a 31 falls on the last day of a shorter month).
- `rang` (enum, optional) : For frequence=mois: the "premier" (first) Monday, ..., the "dernier" (last) Friday of the month (with jour_rang). Values : premier, deuxieme, troisieme, quatrieme, dernier.
- `jour_rang` (enum, optional) : The day of the week that goes with rang. Values : dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi.
- `heure` (string, optional) : The business's local time, HH:MM, between 07:00 and 21:45.
- `debut` (string (date), optional) : First possible day (YYYY-MM-DD). Today by default.
- `fin` (string (date), optional) : Last possible day, included (YYYY-MM-DD). Optional.
- `nombre` (integer, 1…366, optional) : Or: the number of messages actually sent after which the rule stops.
- `si_ferme` (enum, optional) : On a closed day or during holidays: skip it (sauter, default) or move to the next open day (decaler). Values : sauter, decaler.
- `confirmer` (boolean, optional) : false (default): only returns a preview of what would be done, without changing anything. true: carries it out. Always show the preview to the person and wait for their approval before calling again with true. Default : false.

## Response

A text the assistant reads (`content`), and the same information as structured data (`structuredContent`). When a call is refused (a parameter to fix, plan, role), the response has `isError: true` and a sentence the assistant can rephrase.

> **Warning :** this tool writes. Called with `confirmer: false` (the default), it only returns a preview, without changing anything. The assistant must show it to you and wait for your approval before calling again with `confirmer: true`.

## Example

Prompt : « Every Tuesday at 11, tell my customers where the food truck is parked. »

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "programmer_message_recurrent",
    "arguments": {
      "texte": "Food truck today: Place de la Mairie, 11:30 to 14:00. See you there!",
      "groupe": "tous",
      "frequence": "semaine",
      "jours": [
        "mardi"
      ],
      "heure": "11:00",
      "confirmer": false
    }
  }
}
```

```bash
curl https://app.stampywallet.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer $STAMPY_JETON" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"programmer_message_recurrent","arguments":{"texte":"Food truck today: Place de la Mairie, 11:30 to 14:00. See you there!","groupe":"tous","frequence":"semaine","jours":["mardi"],"heure":"11:00","confirmer":false}}}'
```

`$STAMPY_JETON` is the OAuth token the assistant gets when you connect your account ([see Connect](https://stampywallet.com/en/docs/mcp/connect/#connexion)). You don't have to handle it yourself.
