# Campaigns tools

> MCP tools for campaigns: what each does, the key level it needs, the operation it runs and its input schema. Part of the MISSIN public API: call it with an…

An operation tool runs one API operation and takes its variables, so the operation's page says what each accepts. Two differences: the server fills in `workspaceId` and `updatedBy`, and `campaignId`, `partnerId`, `formId`, `discountCodeId`, `socialNetworkId`, `waitlistId`, `incentiveId`, `channelId` also take the record's name. A task tool chains several operations and is described here in full. Every tool's input schema, keyed by tool name: [campaigns.schema.json](https://developer.missin.co.uk/mcp/tools/campaigns.schema.json).

> **Warning:**
> Destructive: `merge_campaigns`. An agent must say what it will change and wait for the merchant's yes before calling one.

## Task tools

### `save_campaign`

**Access:** Write · **Kind:** task · **Toolset:** `core` · **Hints:** idempotent

Create a campaign, or update the one with this name or id. Creating needs start_date — ask the merchant. Makes one write, so it is all-or-nothing. Returns \{ campaign, created, updated? \}.

Try: “Make a spring campaign starting 1 March.”

### Input schema

Input schema for `save_campaign` (JSON, under the key "save_campaign"): https://developer.missin.co.uk/mcp/tools/campaigns.schema.json

## Operation tools

| Tool | Operation | Access | Toolset | Hints | What it does |
|---|---|---|---|---|---|
| `get_campaign` | [CampaignPane](https://developer.missin.co.uk/reference/campaigns/campaign-pane.md) | Read | `core` | read-only, idempotent | Get one campaign by id (rowId) with its type, dates, budget, UTM values, partners, signals and incentives. |
| `get_campaign_signals` | [CampaignSignals](https://developer.missin.co.uk/reference/campaigns/campaign-signals.md) | Read | `campaigns` | read-only, idempotent | List a campaign's hashtag, mention and keyword signals that file captured posts into it. |
| `list_campaigns` | [CampaignsList](https://developer.missin.co.uk/reference/campaigns/campaigns-list.md) | Read | `core` | read-only, idempotent | List campaigns with a name filter and cursor paging: dates, status, default flag and partner, post and discount counts. |
| `get_campaign_type_options` | [CampaignTypeOptions](https://developer.missin.co.uk/reference/campaigns/campaign-type-options.md) | Read | `campaigns` | read-only, idempotent | List campaign types; creating a campaign needs a campaign_type_id from here. |
| `create_campaign` | [CreateCampaign](https://developer.missin.co.uk/reference/campaigns/create-campaign.md) | Write | `campaigns` |  | Create a campaign; body needs name, campaign_type_id and start_date. Invalid input returns userErrors. |
| `link_campaign_discount` | [LinkCampaignDiscount](https://developer.missin.co.uk/reference/campaigns/link-campaign-discount.md) | Write | `campaigns` |  | Link a discount code to a campaign. |
| `merge_campaigns` | [MergeCampaigns](https://developer.missin.co.uk/reference/campaigns/merge-campaigns.md) | Write | `campaigns` | destructive | Merge one campaign into another; the loser's posts, partners and spend move and it is deleted. Irreversible. |
| `preview_campaign_merge` | [PreviewCampaignMerge](https://developer.missin.co.uk/reference/campaigns/preview-campaign-merge.md) | Write | `campaigns` |  | Preview merging two campaigns: counts of what would move. Writes nothing. |
| `save_campaign_signals` | [SaveCampaignSignals](https://developer.missin.co.uk/reference/campaigns/save-campaign-signals.md) | Write | `campaigns` |  | Replace a campaign's hashtag, mention and keyword signals. |
| `update_campaign_details` | [UpdateCampaignDetails](https://developer.missin.co.uk/reference/campaigns/update-campaign-details.md) | Write | `campaigns` |  | Update a campaign's name, type, dates, budget or UTM values. |
| `update_campaign_icon` | [UpdateCampaignIcon](https://developer.missin.co.uk/reference/campaigns/update-campaign-icon.md) | Write | `campaigns` |  | Update a campaign's icon and icon colour. |
| `update_campaign_status` | [UpdateCampaignStatus](https://developer.missin.co.uk/reference/campaigns/update-campaign-status.md) | Write | `campaigns` |  | Update a campaign's status. |
| `get_workspace_signals` | [WorkspaceSignals](https://developer.missin.co.uk/reference/campaigns/workspace-signals.md) | Read | `campaigns` | read-only, idempotent | List every campaign signal in the workspace. |

Source: https://developer.missin.co.uk/mcp/tools/campaigns
