estimate_campaign_plan
Estimate a campaign
Read · mcpIdempotentTurns a number of contacts, a horizon and a sending calendar into a campaign scenario: total emails, new people per sending day, peak emails per day, the mailboxes and domains it needs, and the smallest plan that carries it.
Compute a campaign scenario from a number of distinct contacts, a horizon that includes the follow-ups, and a sending calendar: total emails, new people contacted per sending day, peak emails per day, the mailboxes and domains it needs, and the smallest plan that carries it. Every contact gets three emails (days 0, 3 and 7); campaigns send Monday to Friday, so use weekdays. Nothing is saved, imported or bought. Never derive contacts from a meetings target with an assumed reply or conversion rate.Example
Section titled “Example”The user says
I want to reach 1,500 dentists over the next month.
{ "name": "estimate_campaign_plan", "arguments": { "contacts": 1500, "horizonDays": 30, "calendar": "weekdays" }}Arguments
Section titled “Arguments”contactsintegerrequired1–1000000Distinct people to contact.
horizonDaysintegerrequired8–366Calendar days from the first email to the last follow-up.
calendar"every_day" | "weekdays"requiredUse weekdays.
Input schema
{ "type": "object", "properties": { "contacts": { "type": "integer", "minimum": 1, "maximum": 1000000, "description": "Distinct people to contact." }, "horizonDays": { "type": "integer", "minimum": 8, "maximum": 366, "description": "Calendar days from the first email to the last follow-up." }, "calendar": { "type": "string", "enum": ["every_day", "weekdays"], "description": "Use weekdays." } }, "required": ["contacts", "horizonDays", "calendar"]}Result
Section titled “Result”Result kindcampaign_estimate
kind"campaign_estimate"status"estimated" | "invalid"contactsintegerhorizonDaysintegercalendarstringtotalEmailsinteger | nullnewContactsPerDayinteger | nullpeakEmailsPerDayinteger | nullemailsIn30Daysinteger | nullmailboxesinteger | nulldomainsinteger | nullplanobject | nullThe smallest plan that carries this scenario. Null when none does.
codestringlabelstringmonthlyPriceCentsinteger
currentPlanobject | nullThe plan the workspace pays for. Null without one.
codestringlabelstring
coveredByCurrentPlanbooleanTrue when the plan they pay for already carries this scenario.
currencystringassumptionsstring | nullmessagestring | nullOutput schema
{ "type": "object", "properties": { "kind": { "type": "string", "const": "campaign_estimate" }, "status": { "type": "string", "enum": ["estimated", "invalid"] }, "contacts": { "type": "integer" }, "horizonDays": { "type": "integer" }, "calendar": { "type": "string" }, "totalEmails": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "newContactsPerDay": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "peakEmailsPerDay": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "emailsIn30Days": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "mailboxes": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "domains": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "plan": { "anyOf": [ { "type": "object", "properties": { "code": { "type": "string" }, "label": { "type": "string" }, "monthlyPriceCents": { "type": "integer" } }, "required": ["code", "label", "monthlyPriceCents"], "additionalProperties": false }, { "type": "null" } ], "description": "The smallest plan that carries this scenario. Null when none does." }, "currentPlan": { "anyOf": [ { "type": "object", "properties": { "code": { "type": "string" }, "label": { "type": "string" } }, "required": ["code", "label"], "additionalProperties": false }, { "type": "null" } ], "description": "The plan the workspace pays for. Null without one." }, "coveredByCurrentPlan": { "type": "boolean", "description": "True when the plan they pay for already carries this scenario." }, "currency": { "type": "string" }, "assumptions": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "message": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "kind", "status", "contacts", "horizonDays", "calendar", "totalEmails", "newContactsPerDay", "peakEmailsPerDay", "emailsIn30Days", "mailboxes", "domains", "plan", "currentPlan", "coveredByCurrentPlan", "currency", "assumptions", "message" ], "additionalProperties": false}Good to know
Section titled “Good to know”- Every contact gets three emails (days 0, 3 and 7), and campaigns send Monday to Friday.
- A simulation: nothing is saved, imported or bought.
- Contacts are never derived from a meetings goal with an assumed reply rate.
Related tools
Section titled “Related tools”size_sending_capacitySize the sending capacity
get_plans_and_billingRead plans and billing