Skip to content

Tool

create_outreach_campaign

Create outreach campaign

SurfacesChat agentMCPCLI

Create a new cold outreach campaign DRAFT. Provide a name and a brief (the ICP / goal prompt that drives sourcing + drafting). Bind the COLD sending domain (`sendingDomainId` + `fromEmail`/`replyTo` on it) — a domain that doesn't exist, or a deployment with no cold BYO-SMTP transport, is REFUSED here with a fix-link (run get_send_readiness('outreach') first to see what's missing). Optionally set `sourcingConfig` to source via a tenant agentic skill (kind:'agentic_skill' + skillId). Starts in draft; nothing sends — source prospects, draft bodies, and review before launch.

CLI: tinbox create-outreach-campaign

Parameters

NameTypeRequiredDescription
namestringyesInternal campaign name, e.g. 'YC W26 founders'.
briefstringnoThe ICP / goal prompt that drives sourcing + drafting.
sendingDomainIdstringnoThe COLD sending domain id (validated: must exist + have a cold transport; an unverified subdomain is allowed but warned).
fromNamestringnoSender name on the cold subdomain.
fromEmailstringnoSender email (must resolve to the cold subdomain).
replyTostringnoReply-to (must be a monitored mailbox so replies thread to the Inbox).
rampProfileconservativestandardassertivenoThe warmup policy (AUG-C3). 'conservative' for a brand-new domain (warm slowly, low cap), 'standard' the balanced default (~2-week ramp), 'assertive' for a warm domain with reputation. Owns the daily-cap + ramp numbers — prefer this over raw dailyCap.
dailyCapintegernoAdvanced: raw daily send cap (cold-volume guard). Prefer rampProfile; a raw value overrides the profile's cap.
sourcingConfigobjectnoStored sourcing strategy; source_prospects later runs it without re-specifying.
▸expand sourcingConfig
  • kind contacts_querybyo_enrichmentfirehoseagentic_skillrequired

    Where prospects come from. Use 'agentic_skill' to source via a tenant skill.

  • query string

    For 'contacts_query' — the saved Contacts search.

  • source string

    A human-readable source label recorded on the sourced beat (e.g. 'show-hn').

  • skillId string

    For 'agentic_skill' — the agentic skill id to run for sourcing.

  • skillInput object

    For 'agentic_skill' — the JSON input passed to the skill's run (e.g. { query, limit }).

Example

json
{
  "name": "<name>"
}