stage_campaign
Prepare the campaign
Action · mcp:actOuvert à l'étape : Setting up the sending infrastructure30 appels / 10 minAppelle un fournisseurIdempotentCrée la campagne chez le fournisseur d'emails à partir de la séquence validée, en brouillon : elle n'envoie rien et n'est pas active. Tant qu'elle n'est pas lancée, ses dates peuvent encore changer.
Create the campaign at the email provider from the approved sequence saved under this name, as a draft: it sends nothing and is not active. Ask the user first when it should start — a day they name (and an end only if they want one), or as soon as it is launched — and pass dates only when they named a day. Until it is launched its dates can still change: call this again with every date it should carry, or removeDates alone. Then read the launch figures with get_campaign and call launch_campaign.L'utilisateur dit
Prépare la campagne pour qu'elle démarre le lundi 3 novembre.
{ "name": "stage_campaign", "arguments": { "name": "Dentists FR — missed calls", "startDate": "2026-11-03" }}Arguments
Section intitulée « Arguments »namestringobligatoire2–120 caractèresThe name the sequence was saved under — the same one you approved. Never guess it: read it back with get_workspace_context.
startDatestringfacultatifOnly when the founder chose to schedule it: the first day it may send, as YYYY-MM-DD — exactly the calendar date they gave you. If they name a weekday or a delay instead of a date, ask them for the date rather than working it out. On a campaign already staged, pass the start it should carry even when only its end moves.
endDatestringfacultatifOnly with startDate, and only if the founder wants the campaign to stop on a given day: that day, as YYYY-MM-DD. On it the provider ends the campaign even if some leads were never reached — tell them so before you pass it. On a campaign already staged with an end, leaving it out drops that end.
removeDatesbooleanfacultatifOnly when the founder wants a campaign that is not launched yet to carry no date any more, so that it sends as soon as it is launched: true, with no startDate and no endDate. Once launched, it then sends inside its weekly window straight away.
Schéma d'entrée
{ "type": "object", "properties": { "name": { "type": "string", "minLength": 2, "maxLength": 120, "description": "The name the sequence was saved under — the same one you approved. Never guess it: read it back with get_workspace_context." }, "startDate": { "description": "Only when the founder chose to schedule it: the first day it may send, as YYYY-MM-DD — exactly the calendar date they gave you. If they name a weekday or a delay instead of a date, ask them for the date rather than working it out. On a campaign already staged, pass the start it should carry even when only its end moves.", "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "endDate": { "description": "Only with startDate, and only if the founder wants the campaign to stop on a given day: that day, as YYYY-MM-DD. On it the provider ends the campaign even if some leads were never reached — tell them so before you pass it. On a campaign already staged with an end, leaving it out drops that end.", "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "removeDates": { "description": "Only when the founder wants a campaign that is not launched yet to carry no date any more, so that it sends as soon as it is launched: true, with no startDate and no endDate. Once launched, it then sends inside its weekly window straight away.", "type": "boolean" } }, "required": ["name"]}Résultat
Section intitulée « Résultat »Sorte de résultatcampaign
kind"campaign"outcomestring | nullWhat the call that rendered it did, in a sentence. Null for a plain read.
campaignobjet | nullThe live campaign, or the last one when none is live. Null before any.
idstring — The campaign id launch, stop and resume take. Never invent one.namestringstatestringstateLabelstringlivebooleanstartsOnstring | nullendsOnstring | nullstatsobjet | null — The last counters read from the provider. Null until a first reading.
launchRecapobjet | nullWhat the user confirms before a launch. Null before the sending setup step.
completeboolean — False while one of the four figures is missing.contactsinteger — Leads ready to be pushed into the campaign.sendingMailboxesstring[]firstDayEmailsinteger | nullwindowobjet | null — The weekly sending window, in the workspace's timezone.
appUrlstringSchéma de sortie
{ "type": "object", "properties": { "kind": { "type": "string", "const": "campaign" }, "outcome": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "What the call that rendered it did, in a sentence. Null for a plain read." }, "campaign": { "anyOf": [ { "type": "object", "properties": { "id": { "type": "string", "description": "The campaign id launch, stop and resume take. Never invent one." }, "name": { "type": "string" }, "state": { "type": "string" }, "stateLabel": { "type": "string" }, "live": { "type": "boolean" }, "startsOn": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "endsOn": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "stats": { "anyOf": [ { "type": "object", "properties": { "sent": { "type": "integer" }, "replies": { "type": "integer" }, "opens": { "type": "integer" }, "bounces": { "type": "integer" }, "measuredAt": { "type": "string", "description": "When the provider's counters were last read." } }, "required": ["sent", "replies", "opens", "bounces", "measuredAt"], "additionalProperties": false }, { "type": "null" } ], "description": "The last counters read from the provider. Null until a first reading." } }, "required": [ "id", "name", "state", "stateLabel", "live", "startsOn", "endsOn", "stats" ], "additionalProperties": false }, { "type": "null" } ], "description": "The live campaign, or the last one when none is live. Null before any." }, "launchRecap": { "anyOf": [ { "type": "object", "properties": { "complete": { "type": "boolean", "description": "False while one of the four figures is missing." }, "contacts": { "type": "integer", "description": "Leads ready to be pushed into the campaign." }, "sendingMailboxes": { "type": "array", "items": { "type": "string" } }, "firstDayEmails": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "window": { "anyOf": [ { "type": "object", "properties": { "days": { "type": "array", "items": { "type": "string" } }, "from": { "type": "string" }, "to": { "type": "string" } }, "required": ["days", "from", "to"], "additionalProperties": false }, { "type": "null" } ], "description": "The weekly sending window, in the workspace's timezone." } }, "required": [ "complete", "contacts", "sendingMailboxes", "firstDayEmails", "window" ], "additionalProperties": false }, { "type": "null" } ], "description": "What the user confirms before a launch. Null before the sending setup step." }, "appUrl": { "type": "string" } }, "required": ["kind", "outcome", "campaign", "launchRecap", "appUrl"], "additionalProperties": false}Bon à savoir
Section intitulée « Bon à savoir »- L'assistant demande à l'utilisateur quand elle doit démarrer — un jour qu'il nomme, ou dès son lancement — et ne passe de dates que s'il a nommé un jour.
- Pour changer les dates avant le lancement : la rappeler avec toutes les dates qu'elle doit porter, ou removeDates seul.
- Ensuite, lire les chiffres de lancement avec get_campaign, puis appeler launch_campaign.