監視Guides
Monitors, briefs and reports
Adako is an MCP server and REST API that connects Claude, ChatGPT, Cursor and other assistants to Google Ads, Meta Ads, ChatGPT Ads and LinkedIn Ads. It can also watch those accounts for you, once a day, and say something when a number moves.
What is stored
Adako keeps a rolling 90 days of daily metrics and a snapshot of the account’s structure in its own database. Monitors, briefs and reports read that copy, so they make no platform call, consume no tasks, and cannot exhaust an account’s API quota. Live questions still go to the platform.
How deep that copy goes follows the platform: Meta down to each ad, Google and ChatGPT Ads to the ad group, LinkedIn to the campaign.
- Paid plans: a metric sync every day, plus a backfill until the account has 90 days.
- Free: one 90-day snapshot when an account is connected, and no daily refresh.
- Conversions are re-read for the last three days, because attribution arrives late.
The two daily jobs
| Job | When | What it does |
|---|---|---|
| sync | 06:00 UTC | Refreshes the last days per active account and backfills history. |
| monitors | 07:00 UTC | Evaluates every enabled monitor against yesterday in the account timezone, emails the alerts, and sends the briefs that are due. |
Daily, not live
A monitor
A rule is a metric, an operator, a threshold, and how long it must hold.
- Metrics: spend, clicks, impressions, conversions, conversion value, CTR, CPC, CPA, CPM, ROAS, conversion rate, cost per lead, budget utilisation.
- Operators: less than, greater than, changes by, drops by, rises by. A relative threshold compares against the baseline average instead of an absolute number.
baseline_dayssets how much history the baseline averages, up to 90.consecutive_daysrequires the rule to hold several days in a row, which is how you keep one bad Saturday out of the inbox.- Scope it to one platform, one account, and optionally a list of campaigns.
- Or watch everything:
all_accountscovers every active account on a platform, and leavingplatformout as well covers every platform you have connected. Each account is judged on its own numbers, in its own currency and its own timezone, and keeps its own streak. One email a day names the accounts that fired. A monitor that watches several accounts carries no action and no campaign ids, because both name one account.
monitoring(action="execute", tool_name="test_monitor",
arguments={"platform": "google_ads", "metric": "cpa",
"operator": "greater_than", "threshold": 80,
"consecutive_days": 2})
monitoring_write(action="execute", tool_name="create_monitor",
arguments={"name": "CPA ceiling", "platform": "google_ads",
"metric": "cpa", "operator": "greater_than",
"threshold": 80, "consecutive_days": 2})test_monitor replays the rule over the last 7 days and reports which days would have alerted, with the value and the baseline for each. It is free, so tune the threshold before saving anything. get_monitor_history answers the same question afterwards, with real rows. Saving is a change, so create_monitor runs through monitoring_write.
When a monitor fires
It emails the operator. If it carries an action, it also creates a proposal: pause that campaign, or lower that budget by a percentage. Nothing runs on its own.
list_pending_actionsshows which monitor, which day, what it wants to change and when it expires.manage_actionapplies or declines one. The same proposal appears at Approvals.- A monitor with an action must name exactly one campaign, so the proposal names one object.
- Actions run on Google Ads, Meta Ads, LinkedIn Ads and ChatGPT Ads. A TikTok monitor emails and proposes nothing, because TikTok has no budget tool here yet.
Briefs and reports
schedule_brief: daily or weekly, an hour and an IANA timezone, the platforms and accounts to cover, and where to send it. A daily brief compares yesterday with the day before; a weekly one compares the last 7 days with the previous 7.- Report types:
performance_brief(totals, per account, top campaigns),detailed_analysis(adds the biggest movers),executive_summary(totals and three lines). generate_report_nowcomposes one immediately and stores it with a permanent page. Read them at Reports.list_scheduled_taskslists the briefs and the monitors together, andmanage_scheduled_taskpauses, resumes or deletes either one. Pausing keeps the settings.
The job runs once a day, so the hour schedules the day rather than the minute: a brief goes out on the first daily pass at or after your hour.
Stopping the emails
Every alert and every brief carries an unsubscribe link, and the one-click header mail clients use for their own unsubscribe button. Following either switches off that one monitor or that one schedule — nothing else changes, and you can switch it back on in the web app. Sign-in codes, a report you asked to be emailed and billing notices carry no unsubscribe: they are sent because you asked for them, one at a time.
In the web app
Monitors lists every rule with its state, last run and last fire, and lets you create, edit and switch one off. Reports holds the briefs and reports that have been produced, newest first.
Plans
create_monitor, update_monitor, schedule_brief and generate_report_now need the Pro plan or above, because they depend on the daily sync. Listing, testing, history and the action tools work on every plan. See Pricing.