Campaigns#

See how an AI assistant can help with campaigns in Brandwave, including example prompts and the details it may ask for.

Using your AI assistant

Connect to the Brandwave MCP server, then ask your AI assistant in natural language. It will choose the right Brandwave task and ask for any details it needs.

List campaigns#

Retrieve a paginated list of campaigns for a workspace, ordered by name, dates, budget, or totals.

Tool name: list_campaigns. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.

Example prompt#

text
List all campaigns in my workspace.

Details to provide#

NameTypeRequiredDescription
pageIndexintegerRequiredZero-based page index for pagination.
pageSizeintegerRequiredNumber of items per page (1-100).
workspaceIdstring (UUID)RequiredWorkspace identifier.
searchTermstring—Free-text search term to filter results (max 200 characters).
sortBy'name' | 'createdAt' | 'startAt' | 'endAt' | 'budget' | 'activitiesCount' | 'engagement' | 'impressions' | 'spend' | 'cpe' | 'cpm'—Campaign field to sort by.
sortDirection'asc' | 'desc'—Sort direction: ascending or descending.
dateFromstring—Earliest date to include, as YYYY-MM-DD in the workspace timezone.
dateTostring—Latest date to include, as YYYY-MM-DD in the workspace timezone. Use the same date as dateFrom for a single day.
status'active' | 'scheduled' | 'completed' | 'draft'—Filter by campaign status.
kind'campaign' | 'always_on'—Filter to dated campaigns or always-on work.
creatorIdstring (UUID)—Filter by creator identifier.

What you'll get back#

Returns { items, totalCount, facets, _meta } with paginated results.

Get campaign stats#

Aggregate statistics for campaigns matching the given filters.

Tool name: get_campaign_stats. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Give me a summary of my campaign performance.

Details to provide#

NameTypeRequiredDescription
dateFromstring—Earliest date to include, as YYYY-MM-DD in the workspace timezone.
dateTostring—Latest date to include, as YYYY-MM-DD in the workspace timezone. Use the same date as dateFrom for a single day.
workspaceIdstring (UUID)RequiredWorkspace identifier.
status'active' | 'scheduled' | 'completed' | 'draft'—Filter by campaign status.
kind'campaign' | 'always_on'—Filter to dated campaigns or always-on work.
creatorIdstring (UUID)—Filter by creator identifier.
searchTermstring—Free-text search term to filter results (max 200 characters).

What you'll get back#

Returns { data, _meta } with the result.

Get campaign#

Retrieve a single campaign by ID with full details.

Tool name: get_campaign. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Show me the details for this campaign.

Details to provide#

NameTypeRequiredDescription
idstring (UUID)RequiredCampaign identifier.

What you'll get back#

Returns { data, _meta } with the result.

Create campaign#

Create a campaign planning record with a name, summary, objective, audience, key message, desired outcomes, planned channels, owner, tags, dates, and budget. Status is derived from its dates and the response includes a mutation receipt.

Tool name: create_campaign. Protocol hints: readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false.

Example prompt#

text
Create a new campaign.

Details to provide#

NameTypeRequiredDescription
summarystring | null—Short internal campaign summary.
objectivestring | null—Business or marketing objective the campaign is intended to advance.
audiencestring | null—Intended audience for the campaign.
keyMessagestring | null—Primary message the campaign should communicate.
desiredOutcomesstring | null—Desired outcomes or KPIs, without implying causal attribution.
channelsArray<string>—Planned channel labels for the campaign.
ownerUserIdstring (UUID) | null—Workspace user responsible for the campaign.
tagsArray<string>—Searchable campaign labels.
workspaceIdstring (UUID)RequiredWorkspace identifier.
namestringRequiredCampaign name.
kind'campaign' | 'always_on'—campaign (the default) for a dated push; always_on for ongoing work with no end date or budget. Always-on work starts today unless startAt is given.
startAtstring (ISO 8601) | null—Campaign start date.
endAtstring (ISO 8601) | null—Campaign end date. Leave out for always-on work.
budgetnumber | null—Total campaign budget (non-negative, max 1B). Leave out for always-on work.

What you'll get back#

Returns { data, mutation, _meta } with the result and a customer-facing mutation receipt.

Update campaign#

Update a campaign's planning brief, desired outcomes, owner, tags, budget, or dates. Status is derived from its dates and the response identifies the changed fields.

Tool name: update_campaign. Protocol hints: readOnlyHint=false, destructiveHint=true, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Update the campaign.

Details to provide#

NameTypeRequiredDescription
summarystring | null—Short internal campaign summary.
objectivestring | null—Business or marketing objective the campaign is intended to advance.
audiencestring | null—Intended audience for the campaign.
keyMessagestring | null—Primary message the campaign should communicate.
desiredOutcomesstring | null—Desired outcomes or KPIs, without implying causal attribution.
channelsArray<string>—Planned channel labels for the campaign.
ownerUserIdstring (UUID) | null—Workspace user responsible for the campaign.
tagsArray<string>—Searchable campaign labels.
idstring (UUID)RequiredCampaign identifier to update.
namestring—Updated campaign name (1-255 characters).
kind'campaign' | 'always_on'—Switch between a dated campaign and always-on work. Switching to always_on clears the end date and budget.
startAtstring (ISO 8601) | null—Updated start date.
endAtstring (ISO 8601) | null—Updated end date.
budgetnumber | null—Updated budget (non-negative, max 1B).

What you'll get back#

Returns { data, mutation, _meta } with the result and a customer-facing mutation receipt.

Delete campaign#

Remove a campaign from normal use and unlink its associated activities. The response includes a customer-facing deletion receipt.

Tool name: delete_campaign. Protocol hints: readOnlyHint=false, destructiveHint=true, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Delete this campaign.

Details to provide#

NameTypeRequiredDescription
idstring (UUID)RequiredCampaign identifier to delete.

What you'll get back#

Returns { data, mutation, _meta } with the result and a customer-facing mutation receipt.

This changes data

Deleting a campaign permanently removes the campaign and unlinks all associated activities. This action cannot be undone.

Preview campaign mutation#

Retrieve a no-write preview of the exact customer-facing target, desired outcomes, budget, changed fields, derived status, and warning for a campaign create, update, delete, or duplicate action.

Tool name: preview_campaign_mutation. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Preview campaign mutation for my workspace.

Details to provide#

NameTypeRequiredDescription
workspaceIdstring (UUID)RequiredWorkspace identifier.
operation'create' | 'update' | 'delete' | 'duplicate'RequiredCampaign action to preview without changing data.
idstring (UUID)—Existing campaign identifier for update, delete, or duplicate.
namestring—Campaign name for create, update, or duplicate.
startAtstring (ISO 8601) | null—Proposed campaign start date.
endAtstring (ISO 8601) | null—Proposed campaign end date.
budgetnumber | null—
summarystring | null—Short internal campaign summary.
objectivestring | null—Business or marketing objective the campaign is intended to advance.
audiencestring | null—Intended audience for the campaign.
keyMessagestring | null—Primary message the campaign should communicate.
desiredOutcomesstring | null—Desired outcomes or KPIs, without implying causal attribution.
channelsArray<string>—Planned channel labels for the campaign.
ownerUserIdstring (UUID) | null—Workspace user responsible for the campaign.
tagsArray<string>—Searchable campaign labels.

What you'll get back#

Returns { data, _meta } with the result.

Duplicate campaign#

Create a new draft by duplicating a campaign planning brief, optionally replacing its name and dates. Activities are not copied because an activity belongs to one campaign at a time.

Tool name: duplicate_campaign. Protocol hints: readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false.

Example prompt#

text
Duplicate campaign for my workspace.

Details to provide#

NameTypeRequiredDescription
idstring (UUID)RequiredCampaign identifier to duplicate.
namestring—Name for the duplicated campaign.
startAtstring (ISO 8601) | null—Optional replacement start date.
endAtstring (ISO 8601) | null—Optional replacement end date.

What you'll get back#

Returns { data, mutation, _meta } with the result and a customer-facing mutation receipt.

Link an activity to a campaign.

Tool name: link_campaign_activity. Protocol hints: readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Add this activity to the campaign.

Details to provide#

NameTypeRequiredDescription
campaignIdstring (UUID)RequiredCampaign identifier to link the activity to.
activityIdstring (UUID)RequiredActivity identifier to link.

What you'll get back#

Returns { data, _meta } with the result.

Unlink an activity from a campaign.

Tool name: unlink_campaign_activity. Protocol hints: readOnlyHint=false, destructiveHint=true, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Remove this activity from the campaign.

Details to provide#

NameTypeRequiredDescription
campaignIdstring (UUID)RequiredCampaign identifier.
activityIdstring (UUID)RequiredActivity identifier to unlink.

What you'll get back#

Returns { data, _meta } with the result.

Get campaign metrics#

Fetch metrics for a single campaign including ISO currency, budget, spend, impressions, social engagement, delivery coverage, denominator-aware CPM and Social CPE, freshness, provenance, and data-quality warnings.

Tool name: get_campaign_metrics. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.

Example prompt#

text
How is this campaign performing?

Details to provide#

NameTypeRequiredDescription
workspaceIdstring (UUID)RequiredWorkspace identifier.
campaignIdstring (UUID)RequiredCampaign identifier to get metrics for.

What you'll get back#

Returns { data, _meta } with the result.

Get campaign metrics history#

Fetch campaign metrics over time with a configurable lookback window.

Tool name: get_campaign_metrics_history. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Show me this campaign’s performance over time.

Details to provide#

NameTypeRequiredDescription
workspaceIdstring (UUID)RequiredWorkspace identifier.
campaignIdstring (UUID)RequiredCampaign identifier.
daysBackinteger—Number of days of history to return (1-365).

What you'll get back#

Returns { items, totalCount, facets, _meta } with paginated results.

Get campaign portfolio#

Retrieve decision-ready portfolio health as the preferred starting point for broad campaign-health questions, including active, scheduled, completed, draft, and attention counts; budget and spend totals; brief completeness; evidence quality; priorities; and recommended next actions.

Tool name: get_campaign_portfolio. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Show me the details for this campaign portfolio.

Details to provide#

NameTypeRequiredDescription
workspaceIdstring (UUID)RequiredWorkspace identifier.
daysBackintegerRequiredTrailing window used for campaign changes and portfolio findings (1-365).

What you'll get back#

Returns { data, _meta } with the result.

Compare campaigns#

Retrieve the preferred comparison workflow for selected campaigns over a trailing period, including current values, historical changes, denominator-aware efficiency metrics, ISO currency, evidence quality, and plain-language findings.

Tool name: compare_campaigns. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Compare campaigns for my workspace.

Details to provide#

NameTypeRequiredDescription
workspaceIdstring (UUID)RequiredWorkspace identifier.
campaignIdsArray<string (UUID)>RequiredCampaign identifiers to compare.
daysBackintegerRequiredTrailing comparison window (1-365 days).

What you'll get back#

Returns { data, _meta } with the result.

Get campaign readiness#

Assess whether a campaign is ready to launch by reviewing its summary, objective, audience, desired outcomes, planned channels, dates, owner, budget, and linked activities.

Tool name: get_campaign_readiness. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Show me the details for this campaign readiness.

Details to provide#

NameTypeRequiredDescription
workspaceIdstring (UUID)RequiredWorkspace identifier.
campaignIdstring (UUID)RequiredCampaign identifier to assess before launch.

What you'll get back#

Returns { data, _meta } with the result.

Get campaign closeout#

Generate a campaign closeout or review with recorded performance, ISO currency, evidence quality, limitations, and recommended follow-up actions without claiming causal attribution.

Tool name: get_campaign_closeout. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.

Example prompt#

text
Show me the details for this campaign closeout.

Details to provide#

NameTypeRequiredDescription
workspaceIdstring (UUID)RequiredWorkspace identifier.
campaignIdstring (UUID)RequiredCampaign identifier to summarize for closeout or review.

What you'll get back#

Returns { data, _meta } with the result.