check_campaign_launch_readiness
Check whether a draft campaign is ready to launch, per channel.
Read campaigns
Returns data. Calling it changes nothing, so it is safe in an unattended loop.
What it does
Check whether a draft campaign is ready to launch, per channel. Reads the campaign's real configuration from the platform and reports, for each ENABLED channel, whether it has the ads, audience, offer, budget AND a live channel connection it needs to go live - plus a specific list of blockers for anything missing.
KEYWORDS: campaign, launch, readiness, ready, preflight, can launch, blockers, missing, go live, validate, checklist
WHEN TO USE:
- Before launching a campaign, to confirm it is actually ready
- After assembling or editing a draft, as the go/no-go check
- When the user asks "is my campaign ready to launch?" or "what's missing?"
RETURNS:
A per-channel readiness report:
- is_launchable: whether EVERY enabled channel is ready
- verified: whether the platform's pre-launch check actually answered. When false,
is_launchable is an assumption, NOT a verdict - say the check could not be run
instead of telling the user the campaign is ready.
- channels: [{channel, launchable, blockers[], ads, audiences, offers, budget}]
- summary: a one-line human verdict
This is a READ-ONLY check - it does NOT launch anything. Use launch_campaign to actually launch.
CHANNEL CONNECTION: a channel with no live integration is reported as a blocker here, and the
platform will refuse the launch itself. This is the ONLY point in a build where a missing
connection matters - audiences, targeting, offers, creative and the draft campaign are all
built without one on purpose. So do NOT ask the user to connect anything earlier; raise it
here, name the channels, and offer to connect them.
PARAMETERS:
- campaign_id: The wizard campaign ID (integer, required)
CAMPAIGN ID SOURCES:
- search_campaigns_by_names tool (returns campaign IDs)
- create_campaign tool response (returns campaign_id)Arguments
| Argument | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The wizard campaign ID to check launch readiness for |
Request
curl
curl -s -X POST https://mcp-server.metadata.io/mcp \
-H "Authorization: $METADATA_PAT" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2025-11-25" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"check_campaign_launch_readiness","arguments":{"campaign_id":0}}}'
Response
Recorded with these arguments. Enum values are the first the tool's own schema
declares; ids were fetched live from a list_ call immediately before.
arguments used
{
"campaign_id": "[number redacted]"
}
Real, from the production server, in 1510 ms. Values that identify a customer or disclose money are replaced with typed placeholders; keys, types and nesting are exactly as returned.
recorded response
{
"success": true,
"campaign_id": "[number redacted]",
"campaign_name": "[campaign_name redacted]",
"is_launchable": true,
"verified": true,
"blockers": [],
"summary": "[summary redacted]",
"channels": [
{
"channel": "Facebook",
"launchable": true,
"blockers": [],
"ads": 3,
"audiences": 3,
"offers": 2,
"budget": 50,
"keywords": 0
},
{
"channel": "LinkedIn",
"launchable": true,
"blockers": [],
"ads": 3,
"audiences": 3,
"offers": 2,
"budget": 50,
"keywords": 0
}
]
}
Related
Other campaigns tools: