X Ads
Read ../shared/operating-contract.md and ../shared/measurement-framework.md before acting. Use the live NotFair X Ads MCP as the source of truth; its dedicated endpoint is https://notfair.co/api/mcp/x_ads.
Establish the live scope
- Discover the X Ads connector and its current tool surface. Resolve the tool-agnostic placeholder
~~x-ads to that connector; do not infer access from a Google, Meta, or universal NotFair tool.
- Confirm the selected account with a harmless account/setup read. If the connector is missing or unauthorized, direct the user to connect or re-authorize X Ads and stop before claiming live access.
- Record the account currency, timezone, objective, conversion definition, attribution basis, and requested date window. Treat tracking gaps as limitations, not zero performance.
Diagnose with one broad read
Use the connector's runScript analytics surface for audits and correlated reads. Pull campaigns, line items, funding/configuration, and performance in one pass when possible; use specialized point reads only for one narrow object or for capabilities outside the script sandbox.
Interpret the platform correctly:
- Hierarchy is account → funding instrument → campaign → line item → promoted post/account.
- Money fields ending in
*_local_micro are local-currency major units multiplied by 1,000,000. Divide by 1,000,000 before displaying or comparing them.
- A line item's
primary_web_event_tag describes its optimization configuration. It does not prove that attributed conversions are zero; read conversion metrics from performance data.
- Synchronous stats are suited to short, unsegmented windows. Use the connector's long-window performance read when the requested window or breakdown exceeds the script surface's current limits.
- Compare complete equivalent periods and name spend, impressions, engagement/link CTR, conversions, CPA or ROAS only when the returned fields support them.
Lead with the business decision: strongest contributor, largest material risk, likely cause supported by data, and the smallest useful next action. Separate measured facts from inference.
Execute approved changes safely
Use dedicated mutation tools, never the read-only script surface. Show the exact account, entity, current value, proposed value, spend exposure, risk, and rollback before acting. Prefer a dry-run preview for budget, bid, targeting, optimization-event, and create operations when the connector offers it.
- Prefer pause/enable over irreversible deletion.
- Create campaigns and line items paused, then verify configuration before activation.
- Reuse the same client request ID only when retrying the same create after an uncertain response; use a new ID for a genuinely new entity.
- Treat optimization-event changes as learning resets and say so before approval.
- Resolve targeting names to platform IDs before applying criteria; preserve unrelated targeting unless the user approved a full replacement.
- After an approved mutation, use the returned before/after evidence or a fresh read to confirm the resulting state. Report partial failures plainly.
Finish with the confirmed action, observation window, success metric, and rollback trigger. A proposal remains ready_for_review; call it published only after the live connector confirms it.
1---2name: paid-ads-x3description: Audit, diagnose, and safely operate connected X Ads (Twitter Ads) accounts through the NotFair MCP. Use for X Ads performance, campaign or line-item analysis, spend, conversions, targeting, promoted posts, audiences, budgets, bids, creative, campaign setup, or approved X Ads changes.4---5
6# X Ads
7
8Read `../shared/operating-contract.md` and `../shared/measurement-framework.md` before acting. Use the live NotFair X Ads MCP as the source of truth; its dedicated endpoint is `https://notfair.co/api/mcp/x_ads`.
9
10## Establish the live scope
11
121. Discover the X Ads connector and its current tool surface. Resolve the tool-agnostic placeholder `~~x-ads` to that connector; do not infer access from a Google, Meta, or universal NotFair tool.
132. Confirm the selected account with a harmless account/setup read. If the connector is missing or unauthorized, direct the user to connect or re-authorize X Ads and stop before claiming live access.
143. Record the account currency, timezone, objective, conversion definition, attribution basis, and requested date window. Treat tracking gaps as limitations, not zero performance.
15
16## Diagnose with one broad read
17
18Use the connector's `runScript` analytics surface for audits and correlated reads. Pull campaigns, line items, funding/configuration, and performance in one pass when possible; use specialized point reads only for one narrow object or for capabilities outside the script sandbox.
19
20Interpret the platform correctly:
21
22- Hierarchy is account → funding instrument → campaign → line item → promoted post/account.
23- Money fields ending in `*_local_micro` are local-currency major units multiplied by 1,000,000. Divide by 1,000,000 before displaying or comparing them.
24- A line item's `primary_web_event_tag` describes its optimization configuration. It does not prove that attributed conversions are zero; read conversion metrics from performance data.
25- Synchronous stats are suited to short, unsegmented windows. Use the connector's long-window performance read when the requested window or breakdown exceeds the script surface's current limits.
26- Compare complete equivalent periods and name spend, impressions, engagement/link CTR, conversions, CPA or ROAS only when the returned fields support them.
27
28Lead with the business decision: strongest contributor, largest material risk, likely cause supported by data, and the smallest useful next action. Separate measured facts from inference.
29
30## Execute approved changes safely
31
32Use dedicated mutation tools, never the read-only script surface. Show the exact account, entity, current value, proposed value, spend exposure, risk, and rollback before acting. Prefer a dry-run preview for budget, bid, targeting, optimization-event, and create operations when the connector offers it.
33
34- Prefer pause/enable over irreversible deletion.
35- Create campaigns and line items paused, then verify configuration before activation.
36- Reuse the same client request ID only when retrying the same create after an uncertain response; use a new ID for a genuinely new entity.
37- Treat optimization-event changes as learning resets and say so before approval.
38- Resolve targeting names to platform IDs before applying criteria; preserve unrelated targeting unless the user approved a full replacement.
39- After an approved mutation, use the returned before/after evidence or a fresh read to confirm the resulting state. Report partial failures plainly.
40
41Finish with the confirmed action, observation window, success metric, and rollback trigger. A proposal remains `ready_for_review`; call it `published` only after the live connector confirms it.