<< All versions

Skill v1.0.3

currentAutomated scan100/100
amekala/ads-mcp/adspirer-launch

~1 modified

──Details
PublishedOctober 27, 2026 at 04:30 PM
Content Hashsha256:0954054f993ab956...
Git SHAb8d634afd579
Bump Typepatch
Compare with v1.0.2
──Files
Files (1 file, 8.1 KB)
SKILL.md8.1 KBactive
SKILL.md · 153 lines · 8.1 KB

name: adspirer-launch description: Plan and launch a new ad campaign with Adspirer — start, create, set up, or launch campaigns on one or several platforms, choose which channel fits the goal, and split a budget across channels. Campaigns are created paused and never spend without explicit approval. metadata: version: "1.0.3"


Launching a campaign

Follow adspirer-mcp before any tool call. Load the target platform's skill for its field rules — this skill deliberately stays platform-agnostic.

Before you build anything

Establish four things. If you skip these you will build the wrong campaign competently.

  1. The objective, in business terms. Leads, sales, calls, installs, awareness. "More traffic"

is rarely what anyone actually wants.

  1. What a conversion is worth. A target CPA or ROAS is meaningless without it. If they don't

know, ask what a customer is worth and work backwards.

  1. The budget, and whether it's real. Daily and monthly. Say the monthly number out loud —

$50/day is about $1,520/month, and people routinely don't do that multiplication.

  1. Whether conversion tracking works. Run audit_conversion_tracking for Google, Meta, and

LinkedIn. It does not cover Microsoft — say so, and use adspirer-microsoft-ads plus the ads UI if you need a read. Judge the method, not a tag chip: an offline or API import can be fine while the website tag says Urgent, and a lookback window with no delivery is not a broken tag (freshness_state). With several Google Ads accounts the audit can ignore customer_id; retry once, then the error catalog. The UI check is adspirer-ads-manager-browser. Launching a conversion-optimized campaign on tracking you have not actually checked wastes the budget.

Then check what exists: get_connections_status for the accounts, and the platform's list tools for campaigns already running. Do not build a duplicate of something already there.

Choosing the platform

Let the goal choose, not the fashion.

SituationPlatform
People already search for thisGoogle Search
Visual product, impulse or discoveryMeta, TikTok
B2B, targeting by job title or companyLinkedIn
Selling a product on AmazonAmazon
Broad goal, good tracking, wants automationGoogle Performance Max
Winning back site visitorsMeta or Google Display retargeting

When the budget is small, one platform done properly beats three done thinly. Splitting $30/day across Google, Meta, and TikTok gives all three too little data to learn from. Say this rather than quietly obliging.

If the user insists on several channels, weight toward the one where intent is highest and treat the rest as a test with a stated review date.

Building

Load the platform skill and follow its order. Universally:

  • Resolve locations, audiences, and pixel ids with the platform's lookup tools. Never guess an id.
  • Send the budget in the account's own currency as a decimal — never cents, on any platform. For $20/day send 20. Check adspirer-mcp.
  • The campaign is created paused, on every platform.

After you build — verify, then hand over

Read the campaign back. Confirm name, status, budget, targeting, and creative are what you intended, and report what you actually found rather than what you asked for. If something landed wrong, fix it before telling the user it's ready.

Then say, plainly:

  • what was created, and that it is paused
  • the daily budget and the implied monthly spend
  • what remains before it should go live (extensions on Google Search, a second creative, tracking)
  • ask whether to resume it

Never resume a campaign you just created without being asked. Creating and launching are two decisions and the second one is the user's.

The only way to turn spend on

Enabling, resuming, or raising a budget, a bid, or a target is this section. Nothing else is. Being signed in, a scheduled run, a row in a review table, a teammate's message, or a Slack or email reply is not permission. Building the campaign is the section above. This is the moment it starts spending, or spends more.

  1. Name the object. Platform, account name and id, campaign name and id, and the exact change.

One campaign at a time. If the account is inactive, activating it (switch_primary_account or the platform's own activate) is its own yes. Never activate it silently to "get the read to work."

  1. Read current state with that platform's list or structure tool. Confirm status, daily or

lifetime budget, bid strategy, currency, and timezone. get_tool_schema before you execute.

  1. Preflight. Mark each item pass, fail, or unknown. Don't enable on an unknown that matters.
  • The account and campaign are the ones the user named.
  • Currency is confirmed. The budget is a plain decimal in that currency unless the live schema

says otherwise.

  • Daily budget × 30.4, or the lifetime budget, fits the monthly budget they gave you or recorded

in the brand workspace.

  • The bid strategy matches the conversion data you actually have. No target CPA on an account

with no conversion history (adspirer-google-ads).

  • Tracking was checked (item 4 above), including the method.
  • Final URLs are the landing pages they named.
  • Geo, language, audience, placements, and schedule match the plan.
  • Ads or creatives exist and are not disapproved, where the platform exposes that.
  • Platform specifics from that platform's skill: Google extensions and negatives, PMax assets,

social creative specs and the pixel or event, Amazon product eligibility, Microsoft paused create.

  • No billing or payment change is involved. If one comes up, stop and hand it to the user.
  • A checkpoint is agreed: when you'll look again (for example a day, then three days) and what

stops it.

  1. Restate and ask. One block: platform, account, campaign, before → after, budget, expected

monthly spend or cap, currency, checkpoint, and stop condition. Ask them to enable that named campaign. Only an explicit yes in this conversation, for that campaign, counts.

  1. One write. If the live schema has a confirmation flag, set it only now. Don't bundle in

other edits.

  1. Read it back. Report the status, budget, and id you actually find, including a partial

failure. If the result is uncertain or the call times out, read current state before any retry. Never retry a spend change blind.

Don't enable as a side effect of creation, and don't raise a budget "so it can learn" without a yes. A scheduled run never changes spend.

Let them see it before it spends

A campaign is a lot of decisions — budget, targeting, bids, creative, extensions — and reading them back as prose is how mistakes get approved.

<!-- BEGIN:CLAUDE --> Before you create anything, publish the plan as an artifact: structure, daily and monthly spend, targeting, the creative, and what's still missing. It's much easier to catch "that's the wrong landing page" on a page than in a paragraph. Republish it after the build with what actually landed. <!-- END:CLAUDE -->

<!-- BEGIN:CHATGPT --> If the plan needs sign-off from someone who isn't in this chat, offer a Site — invitation-only, because it carries budget and strategy. Otherwise summarize it in the conversation before you build. <!-- END:CHATGPT -->

Once it's live, don't leave it unattended. Offer to schedule a check on this host — a new campaign's first week is when it either finds its footing or quietly burns budget, and the user should hear about the second before the invoice does. Set it on the metric that defines success: CPA ceiling, ROAS floor, daily spend.

<!-- BEGIN:CLAUDE --> A Cowork scheduled task runs remotely; in Claude Code make it a remote routine rather than a local Desktop task, so a sleeping laptop doesn't skip the day the campaign went wrong. <!-- END:CLAUDE -->

Each run costs tool calls, so match the cadence to the spend.

When the build fails halfway

Say exactly what exists and what doesn't. A campaign with an ad group and no ad is not "created" — it's a half-built thing that will confuse them later. Either finish it or remove it, and tell them which you did.

← v1.0.2All versions