Recipe

A weekly paid media review in Claude that pauses what crosses your threshold

Every Monday, Claude reads the last seven days against the seven before through the Adrails MCP server, reviews the findings and prepares a pause for what crossed your line. You confirm each pause on its review page. The same threshold then becomes an Adrails automation checked every hour, with a ceiling per run.

By Thomas, founder of Adrails · Reviewed Oct 4, 2026

The review, tool by tool

Five questions, five tools

Each question maps to one read. The pause is the only proposal, and it waits until you confirm it.

Five questions, five tools
QuestionToolWhat to give it
What did each campaign spend and return last week?reporting_overviewfrom and to for the week, then for the week before. On Google Ads, performance_period with since, until, compareSince and compareUntil
Why did a Meta account move?performance_diagnoseThe account id, a before and an after period of equal length that do not overlap, and the language
What did the rules find?findings_reviewA family: creative, targeting, tracking, fatigue or health, and a minimum severity
Pause what crossed the linecampaigns_set_statusaccountId, entityId, entityType, status PAUSED and a reason of up to 300 characters
What did the pause do?actions_recentThe account. Each action carries its 24-hour, 3-day and 7-day observations

From the MCP tools reference. On Meta, reporting_overview reads exact calendar periods at account and campaign level; ad set and ad periods go through performance_period.

01

What you get, and how long it takes

At the end, you have a Monday routine of twenty minutes in Claude. It gives one table of last week against the week before, campaign by campaign, and the findings Adrails' rules raised. It ends with a pause prepared for each campaign that crossed your threshold. Each pause is one review page in the browser: confirm it and it is applied once, then measured after 24 hours, 3 days and 7 days.

Then you have the same threshold running without you: an Adrails automation that checks every hour, pauses up to a ceiling per run, and either asks first or acts at once. Setting it up takes ten minutes from Claude or from Automations in Adrails.

02

Before you start

Connect Adrails to Claude as the setup article explains, and choose the permissions on the consent screen. The review needs Read workspace data only, which any member can grant. The pause needs Prepare advertising changes, and the automation needs Manage automations; both need an owner or admin and an active plan.

Decide the threshold in words before the review, with its window. A CPA over 50 for seven days, or a campaign that spent 100 today without a result, are thresholds. Spend is up is not one.

  • Read workspace data: the review. Any member.
  • Prepare advertising changes: the pause. Owner or admin, active plan.
  • Manage automations: creating, previewing and switching on the hourly check. Owner or admin.
  • On Preview, a workspace keeps one automation, without pause or agent steps.

03

1. Read the two windows with exact dates

reporting_overview reads spend, attributed revenue and named conversion events for every connected ad account, Meta and Google Ads alike. On Meta, give both from and to: it returns measured daily-row totals for the calendar period, at most 93 days, and says where coverage is missing with complete set to false. Ask for last week, then for the week before, as two separate calls. Never compare rolling-window totals as if they were periods.

On a Google Ads account, an exact period goes through performance_period: one account, a level, since and until, and compareSince with compareUntil for the second window. It returns spend, results, revenue, ROAS, CPA, impressions, clicks, CTR, CPC and CPM per entity, with the change. Meta results may be visits, leads or clicks rather than purchases: read the event name before calling anything a CPA.

  • Prompt: Read reporting_overview from 2026-09-28 to 2026-10-04 on every account, then from 2026-09-21 to 2026-09-27. Table spend, results, CPA and ROAS per campaign with the change, and name the conversion event each figure counts.
  • Prompt, Google Ads: Read performance_period for account <id> at campaign level, since 2026-09-28 until 2026-10-04, compared with 2026-09-21 to 2026-09-27.
  • Returned: one row per campaign and period, gaps named, the event behind each result.

04

2. Ask what changed and what the rules found

performance_diagnose compares two equal-length, non-overlapping periods of one Meta account from its saved snapshot. Give the account id, the before and after periods and the language, and ask for responseMode answer. It returns coverage, the changes, what is a fact, what is unknown and what to verify next. A missing row is never counted as zero. It reads Meta snapshots only; Google Ads is read with performance_period.

findings_review returns what the rule engine found on the selected campaigns, against your workspace's own standard. Filter by family, creative, targeting, tracking, fatigue or health, and by minimum severity. Each finding carries its evidence, its snapshot date, the campaign objective, the event, the budget owner and a classification: confirmed issue, policy deviation, hypothesis, platform context, not applicable or unknown. Severity is not causality.

  • Prompt: Run performance_diagnose on account <id>, before 2026-09-21 to 2026-09-27, after 2026-09-28 to 2026-10-04, language en, responseMode answer.
  • Prompt: Read findings_review with minimum severity high. Which findings concern the campaigns that crossed my threshold?
  • Returned: a report of facts, unknowns and next checks; then the findings with evidence and classification.

05

3. Pause what crossed the threshold, once you confirm

campaigns_set_status pauses or resumes one campaign, ad group or ad, on Meta or Google Ads. Give the account id, the entity id exactly as a read returned it, the entity type, status PAUSED and a reason of up to 300 characters. It returns a proposal: the preview, an action id, an expiry 30 minutes later and a review link. Nothing is sent to the platform.

Open the link, read the change, and confirm it on the review page, or decline it. Once you confirm, Adrails reads the platform again, refuses if someone changed the entity in the meantime, and applies the exact change once. Results are measured after 24 hours, 3 days and 7 days, and actions_recent shows them. To reverse, prepare the same tool with status ACTIVE, or actions_undo while the platform still matches the change.

  • Prompt: Prepare campaigns_set_status PAUSED for campaign <id> on account <id>, reason: CPA 68 against a threshold of 50 over 2026-09-28 to 2026-10-04, 0 purchases in the last 3 days.
  • Returned: a pending status, the preview, the action id and the review link. One proposal per entity.

06

4. Make the threshold hourly in Adrails

The weekly review stays weekly; the pause does not have to. An Adrails automation with an Ad threshold trigger is checked every hour and fires at most once a day for each item that crosses the line. The Stop-loss template is the closest starting point: when a campaign spends 100 today without a result, ask to pause it, up to 5 per run, and say so on Discord.

From Claude, workflows_list returns the workspace's automations with their definition, state and next run, and the templates by id. workflows_manage with operation create, templateId stop-loss, your time zone and adPlatform meta or google_ads creates it switched off. Then save it with a new definition to change the metric, the operator, the value or the window. The metrics are spend, results, ROAS, revenue, CPA, CTR, CPM, impressions and clicks; the windows are today, the last 7 days and the last 30 days. workflows_preview with operation workflow runs it on real data without posting or pausing, and reports what it would pause. set_enabled true switches it on.

The same steps take a few clicks in Automations in Adrails: New automation, Stop-loss, change the threshold, Preview run, Turn on. Set the Pause step to ask first and each pause waits in Priorities on Home for 24 hours until someone confirms it. Choose Pause automatically and each pause is applied at once, after Adrails checks on the platform that nothing changed since it was read.

  • Prompt: Read workflows_list and show me the templates. Then create one from stop-loss with workflows_manage, time zone Europe/Paris, platform meta.
  • Prompt: Change its threshold to CPA at least 50 over the last 7 days at campaign level, keep the pause set to ask first with 5 per run, and save it. Then preview it.
  • Returned: the automation's id and name, then the preview's summary: the rows that crossed the line and what the pause step would do. Nothing posted, nothing paused.

07

Pitfalls

The review is only as good as its windows and its event. A rolling seven days compared with a rolling seven days a week ago overlaps nothing, but a 28-day window compared with last week does. And a Meta result is whatever the ad set optimizes for: a lead campaign's CPA is a cost per lead.

  • Exact periods on Meta cover accounts and campaigns in reporting_overview; ad sets and ads over exact dates go through performance_period.
  • Missing coverage comes back as gaps and complete set to false. A gap is not a zero, and a pause justified by a gap is a mistake.
  • Rate limits: 60 calls and 10 proposals a minute per connection, one call at a time. A review of ten accounts fits; ask for one account at a time if it does not.
  • A proposal expires 30 minutes after it is prepared; an automation's pause waits 24 hours in Priorities.
  • A workspace runs at most 5 threshold automations at once and 25 automations in all. Pausing needs Meta's ads_management permission on the connection.
  • An automation's agent step can read, never pause. Only the Pause step changes delivery, and only on rows from an ad step or a threshold.

The hourly version

Threshold, filter, pause, send

The Stop-loss template in Adrails, step by step. Each step is one node of the automation, and every value is yours to change.

  1. 01

    Threshold

    A campaign, ad set or ad metric reaches or falls to a value over today, the last 7 days or the last 30 days. Checked every hour, it fires at most once a day per item.

  2. 02

    Filter

    Keep the rows where another metric is at least or at most a value: results at most 0, in the template.

  3. 03

    Pause

    Pause what is left, up to 1 to 50 items per run. Each pause waits in Priorities for 24 hours until someone confirms it, or is applied at once after a live check of the platform.

  4. 04

    Send

    Post the paused rows to Slack or Discord, or email them. Nothing is sent when no row is left.

From the Automations documentation. The template is created switched off, and a workspace runs at most 5 threshold automations at once.

FAQ

Common questions

Can Claude pause a campaign on its own during the review?

No. campaigns_set_status prepares a pause and returns a review link; only an owner or admin confirms it in Adrails. Claude's own permission prompt is not that confirmation.

Why two calls to reporting_overview instead of one?

Each call reads one exact calendar period. Two non-overlapping periods are the only honest comparison; a rolling window read twice overlaps itself.

How often does the automation check the threshold?

Every hour, and it fires at most once a day for each campaign, ad set or ad that crosses the line. The pause step then acts on up to the ceiling you set, 1 to 50 per run.

What is the difference between ask first and automatic pauses?

Set to ask first, each pause waits in Priorities on Home for 24 hours until someone confirms it. Automatic applies it at once, after Adrails checks on the platform that nothing changed since the read.

Does the automation use agent credits?

Not for the threshold, the filter, the pause or the message. Only an Adrails Agent step uses credits, each time it runs.