size_sending_capacity
Size the sending capacity
Act · mcp:actIdempotentComputes and saves the sending fleet the campaign needs — mailboxes, domains, reserve — from the peak emails per day that estimate_campaign_plan returned, with the same contacts, horizon and calendar.
Compute and save the sending fleet a campaign needs — mailboxes, domains, reserve — from the peak emails per day estimate_campaign_plan returned, passing the same contacts, horizon and calendar. Needs a confirmed target. Never derive the volume from a meetings target with a guessed reply rate. Resizing cancels a previous yes to the sizing.Example
Section titled “Example”The user says
OK, size the sending for that.
{ "name": "size_sending_capacity", "arguments": { "targetEmailsPerDay": 150, "campaign": { "contacts": 1500, "horizonDays": 30, "calendar": "weekdays" } }}Arguments
Section titled “Arguments”campaignobjectoptionalPass the exact contacts/horizon/calendar from estimate_campaign_plan to preserve quota and pricing assumptions. targetEmailsPerDay must match its peak.
contactsintegerrequired1–1000000horizonDaysintegerrequired8–366calendar"every_day" | "weekdays"required
targetEmailsPerDayintegerrequired1–100000The daily sending volume supplied by the founder or the peak returned by estimate_campaign_plan. Never derive it from a meetings target using an assumed conversion, reply, open or booking rate.
emailsPerMailboxPerDayintegeroptional1–50mailboxesPerDomainintegeroptional1–10reservePercentintegeroptional0–100rampWeeksintegeroptional1–12Input schema
{ "type": "object", "properties": { "campaign": { "description": "Pass the exact contacts/horizon/calendar from estimate_campaign_plan to preserve quota and pricing assumptions. targetEmailsPerDay must match its peak.", "type": "object", "properties": { "contacts": { "type": "integer", "minimum": 1, "maximum": 1000000 }, "horizonDays": { "type": "integer", "minimum": 8, "maximum": 366 }, "calendar": { "type": "string", "enum": ["every_day", "weekdays"] } }, "required": ["contacts", "horizonDays", "calendar"] }, "targetEmailsPerDay": { "type": "integer", "minimum": 1, "maximum": 100000, "description": "The daily sending volume supplied by the founder or the peak returned by estimate_campaign_plan. Never derive it from a meetings target using an assumed conversion, reply, open or booking rate." }, "emailsPerMailboxPerDay": { "type": "integer", "minimum": 1, "maximum": 50 }, "mailboxesPerDomain": { "type": "integer", "minimum": 1, "maximum": 10 }, "reservePercent": { "type": "integer", "minimum": 0, "maximum": 100 }, "rampWeeks": { "type": "integer", "minimum": 1, "maximum": 12 } }, "required": ["targetEmailsPerDay"]}Result
Section titled “Result”Result kindsizing
kind"sizing"sizingobjectemailsPerDayintegeremailsPerMailboxPerDayintegermailboxesintegerdomainsintegerreservePercentintegerconfirmedboolean — True once the user said yes to THIS sizing.campaignobject | null — The campaign scenario this sizing was computed from.
recommendedPlanobject | nullThe plan VibeSell recommends for this sizing. Null when none is.
codestringlabelstringmonthlyPriceCentsinteger
currentPlanobject | nullThe plan the workspace pays for. Null without one.
codestringlabelstringmonthlyPriceCentsinteger
coveredByCurrentPlanbooleanTrue when the plan they pay for carries this sizing.
fleetInPlacebooleanTrue when the domains and mailboxes already set up carry this sizing.
currencystringsubscriptionActivebooleanstepobjectThe journey step, as the VibeSell app numbers it, after this change.
indexintegertotalintegerlabelstring
appUrlstringOutput schema
{ "type": "object", "properties": { "kind": { "type": "string", "const": "sizing" }, "sizing": { "type": "object", "properties": { "emailsPerDay": { "type": "integer" }, "emailsPerMailboxPerDay": { "type": "integer" }, "mailboxes": { "type": "integer" }, "domains": { "type": "integer" }, "reservePercent": { "type": "integer" }, "confirmed": { "type": "boolean", "description": "True once the user said yes to THIS sizing." }, "campaign": { "anyOf": [ { "type": "object", "properties": { "contacts": { "type": "integer" }, "horizonDays": { "type": "integer" }, "calendar": { "type": "string" } }, "required": ["contacts", "horizonDays", "calendar"], "additionalProperties": false }, { "type": "null" } ], "description": "The campaign scenario this sizing was computed from." } }, "required": [ "emailsPerDay", "emailsPerMailboxPerDay", "mailboxes", "domains", "reservePercent", "confirmed", "campaign" ], "additionalProperties": false }, "recommendedPlan": { "anyOf": [ { "type": "object", "properties": { "code": { "type": "string" }, "label": { "type": "string" }, "monthlyPriceCents": { "type": "integer" } }, "required": ["code", "label", "monthlyPriceCents"], "additionalProperties": false }, { "type": "null" } ], "description": "The plan VibeSell recommends for this sizing. Null when none is." }, "currentPlan": { "anyOf": [ { "type": "object", "properties": { "code": { "type": "string" }, "label": { "type": "string" }, "monthlyPriceCents": { "type": "integer" } }, "required": ["code", "label", "monthlyPriceCents"], "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 carries this sizing." }, "fleetInPlace": { "type": "boolean", "description": "True when the domains and mailboxes already set up carry this sizing." }, "currency": { "type": "string" }, "subscriptionActive": { "type": "boolean" }, "step": { "type": "object", "properties": { "index": { "type": "integer" }, "total": { "type": "integer" }, "label": { "type": "string" } }, "required": ["index", "total", "label"], "additionalProperties": false, "description": "The journey step, as the VibeSell app numbers it, after this change." }, "appUrl": { "type": "string" } }, "required": [ "kind", "sizing", "recommendedPlan", "currentPlan", "coveredByCurrentPlan", "fleetInPlace", "currency", "subscriptionActive", "step", "appUrl" ], "additionalProperties": false}Good to know
Section titled “Good to know”- Needs a confirmed target.
- targetEmailsPerDay is the peak estimate_campaign_plan returned (or a daily volume the user gave).
- Resizing cancels an earlier yes to the sizing.