Activities#
See how an AI assistant can help with activities in Brandwave, including example prompts and the details it may ask for.
Using your AI assistant
List activities#
Retrieve a paginated list of activities for a workspace, filterable by campaign, creator, channel, status, date range, and whether impression metrics are available or missing.
Tool name: list_activities. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.
Example prompt#
List all activities in my workspace.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| pageIndex | integer | Required | Zero-based page index for pagination. |
| pageSize | integer | Required | Number of items per page (1-100). |
| workspaceId | string (UUID) | Required | Workspace identifier. |
| searchTerm | string | — | Free-text search term to filter results (max 200 characters). |
| sortBy | 'name' | 'startAt' | 'impressions' | 'engagement' | 'spend' | 'cpe' | 'cpm' | 'createdAt' | — | Activity field to sort by. |
| sortDirection | 'asc' | 'desc' | — | Sort direction: ascending or descending. |
| metricsAvailability | 'available' | 'missing' | — | Filter by impression data availability. Available includes measured zero; missing means no impression value is recorded. |
| channelType | 'social_media' | 'paid_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles' | — | Filter by channel group. |
| channelTypes | Array<'social_media' | 'paid_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles'> | — | Filter by one or more channel groups. |
| channel | 'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'google_ads' | 'meta_ads' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article' | — | Filter by specific channel. |
| channels | Array<'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'google_ads' | 'meta_ads' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article'> | — | Filter by one or more specific channels. |
| creatorId | string (UUID) | — | Filter by creator identifier. |
| mediaProviderId | string (UUID) | — | Filter by media provider identifier. |
| campaignId | string (UUID) | — | Filter by campaign identifier. |
| unlinkedFromCampaign | boolean | — | Exclude campaign-linked activities. |
| unlinkedFromCreatorId | string (UUID) | — | Exclude links to this creator. |
What you'll get back#
Returns { items, totalCount, facets, _meta } with paginated results.
Count activities#
Get the total number of activities matching the given filters, including whether impression metrics are available or missing.
Tool name: count_activities. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.
Example prompt#
How many activities do I have?Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| workspaceId | string (UUID) | Required | Workspace identifier. |
| metricsAvailability | 'available' | 'missing' | — | Filter by impression data availability. Available includes measured zero; missing means no impression value is recorded. |
| channelType | 'social_media' | 'paid_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles' | — | Filter by channel group. |
| channelTypes | Array<'social_media' | 'paid_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles'> | — | Filter by one or more channel groups. |
| channel | 'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'google_ads' | 'meta_ads' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article' | — | Filter by specific channel. |
| channels | Array<'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'google_ads' | 'meta_ads' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article'> | — | Filter by one or more specific channels. |
| creatorId | string (UUID) | — | Filter by creator identifier. |
| mediaProviderId | string (UUID) | — | Filter by media provider identifier. |
| campaignId | string (UUID) | — | Filter by campaign identifier. |
What you'll get back#
Returns { count, _meta }.
Get activity stats#
Aggregate statistics for activities matching the given filters, including whether impression metrics are available or missing, optionally including spend and impression totals grouped by channel.
Tool name: get_activity_stats. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.
Example prompt#
Give me a summary of my activity performance.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| workspaceId | string (UUID) | Required | Workspace identifier. |
| metricsAvailability | 'available' | 'missing' | — | Filter by impression data availability. Available includes measured zero; missing means no impression value is recorded. |
| channelType | 'social_media' | 'paid_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles' | — | Filter by channel group. |
| channelTypes | Array<'social_media' | 'paid_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles'> | — | Filter by one or more channel groups. |
| channel | 'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'google_ads' | 'meta_ads' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article' | — | Filter by specific channel. |
| channels | Array<'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'google_ads' | 'meta_ads' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article'> | — | Filter by one or more specific channels. |
| creatorId | string (UUID) | — | Filter by creator identifier. |
| mediaProviderId | string (UUID) | — | Filter by media provider identifier. |
| campaignId | string (UUID) | — | Filter by campaign identifier. |
| includeChannels | boolean | — | Include full, unpaginated spend and impression aggregates grouped by channel. |
| searchTerm | string | — | Free-text search term to filter results (max 200 characters). |
What you'll get back#
Returns { data, _meta } with the result.
Create activity#
Create social or provider-delivered activity with channel-specific delivery details, metrics, an initial spend or expense line, and the person or company that delivered it. Social media activity is delivered by a creator; broadcast, out-of-home, print, event, podcast, and PR activity is delivered by a media provider.
Tool name: create_activity. Protocol hints: readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false.
Example prompt#
Create a new activity.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| workspaceId | string (UUID) | Required | Workspace identifier. |
| channelType | 'social_media' | 'paid_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles' | — | Top-level channel group for this activity. Defaults to social_media, where a creator posts the content. Every other group is delivered by a media provider. |
| channel | 'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'google_ads' | 'meta_ads' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article' | Required | Specific activity channel or subtype. |
| activity | 'instagram_story' | 'instagram_post' | 'instagram_reel' | 'youtube_video' | 'youtube_short' | 'tiktok_video' | 'twitter_post' | 'linkedin_post' | 'reddit_post' | 'google_ad' | 'google_asset_group' | 'google_ad_group' | 'google_campaign' | 'meta_ad' | null | — | |
| name | string | Required | Activity name or title (max 500 characters). |
| startAt | string (ISO 8601) | null | null | — | |
| endAt | string (ISO 8601) | null | null | — | |
| creatorId | string (UUID) | — | Creator who delivered the activity. Social media activities only. |
| mediaProviderId | string (UUID) | null | — | Media provider that delivered the placement. Required for provider-delivered activity; social media activities cannot be linked to a media provider. |
| impressions | integer | null | — | Delivered or estimated impression count. |
| deliverySource | 'platform_reported' | 'provider_reported' | 'user_entered' | 'benchmark_estimated' | 'modeled' | null | — | Provenance of the delivered activity metrics. |
| deliverySourceMetadata | object | null | — | Structured provenance metadata for delivered activity metrics. |
| initialExpense | object | — | Optional initial expense line item to create with the activity. |
| broadcastDetails | object | — | Broadcast placement and delivery details. |
| outOfHomeDetails | object | — | Out-of-home placement and delivery details. |
| printDetails | object | — | Print placement and delivery details. |
| eventDetails | object | — | Event participation and delivery details. |
| podcastDetails | object | — | Podcast placement and delivery details. |
| prArticleDetails | object | — | PR article placement and delivery details. |
What you'll get back#
Returns { data, _meta } with the result.
Update activity#
Update an activity's channel, content link, metrics, media provider, or channel-specific delivery details.
Tool name: update_activity. Protocol hints: readOnlyHint=false, destructiveHint=true, idempotentHint=true, openWorldHint=true.
Example prompt#
Update the activity.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Required | Activity identifier to update. |
| channelType | 'social_media' | 'paid_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles' | — | Top-level channel group for this activity. |
| channel | 'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'google_ads' | 'meta_ads' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article' | — | Updated channel. |
| activity | 'instagram_story' | 'instagram_post' | 'instagram_reel' | 'youtube_video' | 'youtube_short' | 'tiktok_video' | 'twitter_post' | 'linkedin_post' | 'reddit_post' | 'google_ad' | 'google_asset_group' | 'google_ad_group' | 'google_campaign' | 'meta_ad' | null | — | Updated content type. |
| name | string | — | Updated activity name (max 500 characters). |
| startAt | string (ISO 8601) | null | null | — | Updated start date. |
| endAt | string (ISO 8601) | null | null | — | Updated end date. |
| mediaProviderId | string (UUID) | null | — | Updated provider for a provider-delivered activity. |
| impressions | integer | null | — | Updated delivered or estimated impression count. |
| deliverySource | 'platform_reported' | 'provider_reported' | 'user_entered' | 'benchmark_estimated' | 'modeled' | null | — | Updated provenance of the delivered activity metrics. |
| broadcastDetails | object | — | Updated broadcast delivery details. |
| outOfHomeDetails | object | — | Updated out-of-home delivery details. |
| printDetails | object | — | Updated print delivery details. |
| eventDetails | object | — | Updated event delivery details. |
| podcastDetails | object | — | Updated podcast delivery details. |
| prArticleDetails | object | — | Updated PR article delivery details. |
| contentHref | string (URL) | null | — | URL to the original content (max 2,048 characters). |
| viewsCount | integer | null | — | Manual view count override (non-negative integer). |
| likeCount | integer | null | — | Manual like count override (non-negative integer). |
| replyCount | integer | null | — | Manual reply count override (non-negative integer). |
What you'll get back#
Returns { data, _meta } with the result.
Content link changes reset metrics
Delete activity#
Permanently delete an activity and its associated records.
Tool name: delete_activity. Protocol hints: readOnlyHint=false, destructiveHint=true, idempotentHint=true, openWorldHint=false.
Example prompt#
Delete this activity.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Required | Activity identifier to delete. |
What you'll get back#
Returns { data, _meta } with the result.
This changes data
Connect activity content link#
Connect a social media post URL to an activity for automatic metric tracking.
Tool name: connect_activity_content_link. Protocol hints: readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true.
Example prompt#
Link this content URL to the activity.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| activityId | string (UUID) | Required | Activity identifier to connect the content link to. |
| platform | 'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | Required | Social media platform for this content. |
| contentUrl | string | Required | URL to the social media content (max 2,048 characters). |
What you'll get back#
Returns { data, _meta } with the result.
Metric refresh
Disconnect activity content link#
Disconnect a content link from an activity, stopping automatic metric tracking.
Tool name: disconnect_activity_content_link. Protocol hints: readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=false.
Example prompt#
Remove the content link from this activity.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| activityId | string (UUID) | Required | Activity identifier to disconnect the content link from. |
What you'll get back#
Returns { data, _meta } with the result.
List activity creators#
List creators linked to an activity with pagination.
Tool name: list_activity_creators. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.
Example prompt#
List all activity creators in my workspace.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| pageIndex | integer | Required | Zero-based page index for pagination. |
| pageSize | integer | Required | Number of items per page (1-100). |
| workspaceId | string (UUID) | Required | Workspace identifier. |
| activityId | string (UUID) | Required | Activity identifier to list creators for. |
What you'll get back#
Returns { items, totalCount, facets, _meta } with paginated results.
Count activity creators#
Count the number of creators linked to an activity.
Tool name: count_activity_creators. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.
Example prompt#
How many activity creators do I have?Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| workspaceId | string (UUID) | Required | Workspace identifier. |
| activityId | string (UUID) | Required | Activity identifier to count creators for. |
What you'll get back#
Returns { count, _meta }.
Link activity creator#
Associate a creator with an activity.
Tool name: link_activity_creator. Protocol hints: readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false.
Example prompt#
Add this creator to the activity.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| activityId | string (UUID) | Required | Activity identifier to link. |
| creatorId | string (UUID) | Required | Creator identifier to link. |
What you'll get back#
Returns { data, _meta } with the result.
Unlink activity creator#
Remove a creator association from an activity.
Tool name: unlink_activity_creator. Protocol hints: readOnlyHint=false, destructiveHint=true, idempotentHint=true, openWorldHint=false.
Example prompt#
Remove this creator from the activity.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| activityId | string (UUID) | Required | Activity identifier to unlink from. |
| creatorId | string (UUID) | Required | Creator identifier to unlink. |
What you'll get back#
Returns { data, _meta } with the result.
Cascading deletion
Create activity spend#
Add a expense line item with net amount, currency, category, creator attribution, tax breakdown, and booking reference.
Tool name: create_activity_expense. Protocol hints: readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false.
Example prompt#
Create a new activity spend.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| activityId | string (UUID) | Required | Activity identifier to add the expense to. |
| amount | number | Required | Expense amount (must be greater than zero, max 100M). |
| categoryId | string (UUID) | Required | Reusable expense category identifier. |
| currency | string | Required | ISO 4217 currency code, e.g. "USD", "NZD" (exactly 3 characters). |
| description | string | null | — | Optional description of this expense line item (max 1,000 characters). |
| creatorId | string (UUID) | null | — | Creator this expense is attributed to. |
| grossAmount | number | null | — | Gross booked spend before discounts and tax adjustments. |
| discountAmount | number | null | — | Discount applied to the gross booked spend. |
| taxAmount | number | null | — | Tax amount recorded for the spend. |
| bookingReference | string | null | — | Provider booking or insertion-order reference. |
What you'll get back#
Returns { data, _meta } with the result.
Auto-linking
Update activity spend#
Update a expense line item's net, gross, discount, and tax amounts, category, creator attribution, description, or booking reference.
Tool name: update_activity_expense. Protocol hints: readOnlyHint=false, destructiveHint=true, idempotentHint=true, openWorldHint=false.
Example prompt#
Update the activity spend.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Required | Expense record identifier to update. |
| amount | number | — | Updated expense amount (must be greater than zero, max 100M). |
| categoryId | string (UUID) | — | Updated reusable expense category identifier. |
| description | string | null | — | Updated description (max 1,000 characters). |
| creatorId | string (UUID) | null | — | Updated creator attribution. |
| grossAmount | number | null | — | Gross booked spend before discounts and tax adjustments. |
| discountAmount | number | null | — | Discount applied to the gross booked spend. |
| taxAmount | number | null | — | Tax amount recorded for the spend. |
| bookingReference | string | null | — | Provider booking or insertion-order reference. |
What you'll get back#
Returns { data, _meta } with the result.
Delete activity spend#
Remove a expense line item from an activity.
Tool name: delete_activity_expense. Protocol hints: readOnlyHint=false, destructiveHint=true, idempotentHint=true, openWorldHint=false.
Example prompt#
Delete this activity spend.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Required | Expense record identifier to delete. |
What you'll get back#
Returns { data, _meta } with the result.
Get metric confidence#
Assess the statistical confidence of an activity's metrics.
Tool name: get_metric_confidence. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.
Example prompt#
How reliable are the metrics for this activity?Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| workspaceId | string (UUID) | Required | Workspace identifier. |
| startDate | unknown | — | Start date for confidence calculation window. |
| endDate | unknown | — | End date for confidence calculation window. |
What you'll get back#
Returns { data, _meta } with the result.
List sparklines#
Fetch sparkline chart data for one or more activities.
Tool name: list_sparklines. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.
Example prompt#
Show me performance trends for my activities.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| activityIds | Array<string (UUID)> | Required | Array of activity identifiers to fetch sparkline data for. |
What you'll get back#
Returns { items, totalCount, facets, _meta } with paginated results.
Get activity#
Retrieve a single activity by ID with full details.
Tool name: get_activity. Protocol hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false.
Example prompt#
Show me the details for this activity.Details to provide#
| Name | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Required | Activity identifier. |
What you'll get back#
Returns { data, _meta } with the result.