Aller au contenu

stage_campaign

Prepare the campaign

Action · mcp:actOuvert à l'étape : Setting up the sending infrastructure30 appels / 10 minAppelle un fournisseurIdempotent

Cré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.

Description lue par le modèleEnvoyée telle quelle dans tools/list, en anglais.
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.

tools/call · Arguments envoyés par l'assistant
{
"name": "stage_campaign",
"arguments": {
"name": "Dentists FR — missed calls",
"startDate": "2026-11-03"
}
}
namestringobligatoire2–120 caractères

The name the sequence was saved under — the same one you approved. Never guess it: read it back with get_workspace_context.

startDatestringfacultatif

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.

endDatestringfacultatif

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.

removeDatesbooleanfacultatif

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.

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"]
}

Sorte de résultatcampaign

kind"campaign"
outcomestring | null

What the call that rendered it did, in a sentence. Null for a plain read.

campaignobjet | null

The live campaign, or the last one when none is live. Null before any.

  • id string — The campaign id launch, stop and resume take. Never invent one.
  • name string
  • state string
  • stateLabel string
  • live boolean
  • startsOn string | null
  • endsOn string | null
  • stats objet | null — The last counters read from the provider. Null until a first reading.
launchRecapobjet | null

What the user confirms before a launch. Null before the sending setup step.

  • complete boolean — False while one of the four figures is missing.
  • contacts integer — Leads ready to be pushed into the campaign.
  • sendingMailboxes string[]
  • firstDayEmails integer | null
  • window objet | null — The weekly sending window, in the workspace's timezone.
appUrlstring
Sché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
}
  • 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.