Sign in
How Variafy works

A little help.
A clearer next step.

Variafy connects your AI assistant to ad results, CRM payments and account alerts. Start with Meta Ads; also read and analyze Google Ads, Microsoft Advertising, LinkedIn Ads, GA4 and Search Console. Capabilities differ by platform.

New here? Join the free beta. Already invited? Sign in and open Start in the console for your setup checklist.

Supported platforms

Meta Ads
Read and analyze results, account alerts, monitors, CRM revenue and previewed ad changes. During Meta app review, access is by a manual tester invitation.
Google Ads
Read, analyze and monitor results. Variafy does not change Google Ads. Monitor settings change only Variafy.
Microsoft Advertising
Read and analyze campaign results. Read-only: Variafy does not change Microsoft Advertising.
LinkedIn Ads
Read and analyze campaign results. Read-only: Variafy does not change LinkedIn Ads.
GA4
Read site traffic, conversions and campaign attribution from connected Google Analytics properties.
Search Console
Read search performance, queries and pages from connected sites.

During Meta app review, we add each beta user to our Meta app as a tester — you accept the invite in your Facebook account. Google Ads, Microsoft Advertising, LinkedIn Ads, GA4 and Search Console work right after your invitation.

Daily advice for Meta ads, with the evidence behind each suggestion. You can turn it off.

CRM revenue. Variafy reads payments and lead stages from Pipedrive, HubSpot, Salesforce, Zoho CRM, Kommo, Bitrix24, HighLevel, Close, Freshsales or ActiveCampaign, a Google Sheet or an uploaded file. A connected CRM is read by itself every three hours — read only: deals, stages and ad tags. Zoho CRM connects by signing in through the Variafy app; the others with a key, token or webhook from the CRM, pasted on the CRM page. Pipedrive, HubSpot, Salesforce, Zoho CRM and Close report deleted deals, so a deal deleted there leaves the reports. Bitrix24, Kommo, HighLevel, Freshsales and ActiveCampaign do not: a deal deleted there keeps what it brought until you correct it by a file. Pipedrive has been checked on a live account. The other nine were added on 31 October 2026 and are still being checked on live accounts, so if one misbehaves, reply to any Variafy email.

Connect your assistant

You need a Variafy account. Every assistant uses the same server address:

https://www.variafy.com/mcp

Claude (claude.ai and Claude Desktop)

  1. Open Customize → Connectors, choose + Add and then Add custom connector.
  2. Enter a name and the address above and click Continue. Keep the recommended sign-in, Use Claude's published identity, and click Add.
  3. Connect it and sign in with Variafy when Claude asks. There is no token to paste.

On Team and Enterprise plans an owner adds the connector in Organization settings → Connectors (Add → Custom → Web), and members connect it under Customize → Connectors. The Claude Free plan allows one custom connector. Current steps: Claude Help Center.

ChatGPT

  1. On chatgpt.com, open Plugins in the sidebar and choose Add → Add custom MCP server.
  2. Name it Variafy, paste the address above under Connection, keep OAuth, confirm the risk warning and choose Create as a plugin.
  3. Sign in with Variafy when ChatGPT asks. In a new chat, type @ and pick Variafy.

On personal plans such as Plus you add it yourself on the web. In a Business workspace only admins and owners can add a custom MCP server; in Enterprise and Edu an admin grants the Create plugins with MCPs permission. ChatGPT can also ask you to confirm an action before it runs, in addition to Variafy's own confirmation. Current steps: OpenAI guide to connecting an MCP server.

Claude Code

Issue a token in the console under Assistant connection, put it in place of sk_live_YOUR_TOKEN and run:

claude mcp add --scope user --transport http variafy https://www.variafy.com/mcp --header "Authorization: Bearer sk_live_YOUR_TOKEN"

Cursor and other MCP clients

Use the same address and send the token in the header Authorization: Bearer sk_live_…. In Cursor, add this to ~/.cursor/mcp.json with your token:

{
  "mcpServers": {
    "variafy": {
      "url": "https://www.variafy.com/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_YOUR_TOKEN"
      }
    }
  }
}

Other assistants

Assistants that sign in on their own register with Variafy the first time you connect, then show the usual Variafy sign-in and consent screen. The rest take the token from the console in a header. We test Claude, ChatGPT, Claude Code, Cursor, Grok and Mistral Vibe ourselves; the other steps follow each assistant's own documentation.

  • Grok (grok.com) — Connectors → New connector → Custom: name Variafy, server URL — the address above. Works on the free plan. Step by step. Signs in with Variafy.
  • Mistral Vibe (formerly Le Chat) — Context → Connectors → Add connector → Add a custom connector: the address above; authentication is detected as OAuth. Works on the free plan; Vibe asks before each change in addition to Variafy's own preview. Step by step. Signs in with Variafy.
  • Gemini (gemini.google.com) — Settings → Connected apps → Custom apps. Google offers it only to some accounts and regions. Signs in with Variafy.
  • Microsoft Copilot Studio — Tools → New tool → Model Context Protocol, with OAuth dynamic discovery. Signs in with Variafy.
  • Perplexity — Settings → Connectors → Custom connector → Remote (Pro, Max and Enterprise). Signs in with Variafy.
  • VS Code with GitHub Copilot — Command MCP: Add Server → HTTP → the address above. Signs in with Variafy.
  • Codex — codex mcp add variafy --url https://www.variafy.com/mcp, then codex mcp login variafy. Signs in with Variafy.
  • GitHub Copilot CLI, Zed — Add a remote (HTTP) MCP server with the address above. Signs in with Variafy.
  • Manus — Settings → Connectors → Custom MCP, header Authorization: Bearer sk_live_…. Token from the console.
  • n8n, Zapier — MCP client node or step, Streamable HTTP, Bearer authentication. Token from the console.

If an assistant refuses to sign in or its menus differ, write to support@variafy.com with its name: we add assistants as they ask.

A skill that knows Variafy

The skill teaches your assistant how to work with Variafy before the first question: start with start_here, keep to the business profile, show every change as a preview, and follow seven workflows — morning check, wasted spend, why cost per result rose, launching a campaign, refreshing creatives, a client report and a tracking check. Download variafy-ads.zip.

  • Claude — open Customize → Skills (Settings → Capabilities in older versions), choose Upload a skill and pick the archive. Skills need code execution turned on in the same settings.
  • Claude Code — install the Variafy plugin: it brings the connector and the skill together. /plugin marketplace add DenysVolynskyi/variafy-plugins, then /plugin install variafy@variafy, then sign in under /mcp. Or unpack the archive into ~/.claude/skills/, so that ~/.claude/skills/variafy-ads/SKILL.md exists.
  • Codex — codex plugin marketplace add DenysVolynskyi/variafy-plugins, then /plugins → Variafy → Install plugin. Or unpack the archive into ~/.codex/skills/ and restart Codex.
Check that it works. Ask the assistant: "Call start_here and show my ad accounts." It answers with the connected ad accounts and your plan.

Menu names in Claude and ChatGPT change from time to time; the links above lead to their current instructions.

Connect an ad account

  1. Open the console

    Sign in with the code we email you and choose Connect an ad account.

  2. Grant access in Facebook

    A Facebook page opens where you choose which ad accounts to share. Variafy sees only those. Tick the Facebook Pages your ads run from and their Instagram accounts too: without a Page the assistant can read and pause, but cannot create ads.

  3. Pick the ad accounts

    Back in the console, select the ad accounts to connect. How many fit depends on your plan.

To make changes, your role in the ad account has to allow them: Advertise or Manage. With Analyze the assistant can only read.

With several ad accounts connected, the assistant names the ad account it works in. A change prepared in one ad account is never applied in another.

Disconnect an ad account in the console. Removing Variafy in your Facebook settings revokes its access too.

Reads and changes

Reads are free and change nothing: campaigns, metrics, audiences, creatives and diagnostics.

Every change takes two calls. The first one returns a preview: what will change, in which ad account and how it affects spend. At that point nothing has changed.

Cannot increase spend

Pausing, lowering a budget, creating paused campaigns and ads, uploading creatives. The preview includes a confirmation token, and the assistant applies the change by calling again with it within 10 minutes.

Can increase spend

Turning ads on, raising a budget, raising a bid, widening an audience, extending a schedule. By default these work the same way — preview, then a second call with the token — and the assistant must say plainly that spend will grow. The owner can switch the account to the stricter mode: then the assistant gets no token, only a link, and a person opens it, signs in and clicks Apply.

  • A link stays valid for up to 72 hours, and for 4 hours when the change starts delivery right away. Opening a link changes nothing: only the Apply button does.
  • Pausing is always available and free, even when a payment is overdue.
  • A change that a person rejected, or a repeat of a change that was already made, is not applied from chat either: it goes back to a person.
  • An approval made on a link is recorded in the console's audit log together with who approved it.

When a change waits for a decision, the console lists it and we email the people who can approve changes, at most once every 15 minutes.

Watchdog, monitors and briefs

Watchdog

Every 15 minutes the watchdog reads each connected ad account and looks for:

  • an ad account that is disabled or unsettled, or has reached its spend cap;
  • spend that stopped while campaigns are on;
  • a day that cost about 2× the usual;
  • an active campaign with a budget that spent nothing while the ad account did;
  • a campaign that spent enough over 7 days to get at least 3 results at the ad account's cost per result, and got none;
  • website conversions that all but stopped being recorded across the whole ad account while it kept spending;
  • once an hour, ads that are on in running campaigns but were rejected by Meta or stopped by a delivery issue, with Meta's reason. An email goes out, one line per campaign, when an ad set that spent or was changed in the last 7 days — the ads, the ad set or the campaign — is left with nothing to deliver, and again when another ad set of that campaign joins it. A rejection counts at once; a delivery issue counts once the ad set had no impressions yesterday or today, so that email can come a day later. Everything else about such ads, such as a rejected ad in an ad set that still delivers, stays in the console.

What it finds arrives by email at most once an hour, with a sentence to paste into your assistant. The assistant reads the same findings with list_signals and can ask for a fresh check with run_watch_now.

Monitors

Your own rules, such as "CPA above $50 yesterday". Each campaign, ad set or ad is checked on its own, every morning after 06:00 in the ad account's time zone. A rule compares a metric with a number, with an average or with the previous period in percent, and can require several days in a row. Metrics: ROAS, CTR, CPC, CPA, CPM, cost per video view, spend, conversions, impressions, clicks, cost per lead, conversion rate, budget use, video views, engagement rate.

When a monitor triggers, you get an email. Ask the assistant to set one up (create_monitor) and to try it on recent data first (test_monitor).

Prepared actions

For a campaign that spends without results, the watchdog prepares a pause. A monitor can prepare a pause or a daily budget change by a percent. A prepared action changes nothing on its own: it waits 48 hours for a decision in the console and in list_pending_actions.

Pauses and lower budgets can be approved from chat with manage_action; a higher budget only by a signed-in person. If the problem goes away, the prepared action is withdrawn; if you reject it, it is not prepared again for 24 hours.

7 days after an approved action, Variafy compares the cost per result in the week before and the week after. It gives a verdict only when both weeks have at least 10 results, and it is a before-and-after comparison, not proof of cause.

Scheduled briefs

An email summary of your ad accounts, daily, weekly or every few days, at the time and in the time zone you choose (by default weekly on Mondays at 09:00, America/New_York). It goes to a member of your console and covers spend and results by ad account, campaigns worth a look and open findings. Ask the assistant: schedule_brief.

Monitors, briefs and approving prepared pauses do not count toward the monthly change limit.

Without an assistant: plain HTTP

Every operation the assistant can call is also a plain HTTP request, with the same key, the same rules and the same monthly limit. This is for n8n, Make, cron and your own scripts — anything with no chat in it. Google Ads is the exception: it is available only in conversations with an assistant (see Security and data).

curl -X POST https://www.variafy.com/v1/tools/get_insights \
  -H "authorization: Bearer sk_live_…" \
  -H "content-type: application/json" \
  -d '{"date_preset":"last_7d"}'

GET /v1 says which ad accounts the key reaches and how many changes are left this month. GET /v1/tools lists every operation with its fields; GET /v1/tools/<name> returns one.

Changes take the same two calls. The first answers with a preview and a confirm_token; the second repeats the same body with that token added. Every change is previewed and requires confirmation. The account owner can require signed-in approval for any increase in spend: then the answer carries a link for a person to open and approve. The answer is the same JSON the assistant sees.

The key belongs on a server, not in a browser: there is no cross-origin access, on purpose.

Plans and limits

Free during beta. $0 during beta, with 3 connections per platform and 300 counted changes per UTC calendar month.

Your allowance is shared across the workspace and resets at the start of each calendar month in UTC. Previews do not use the allowance. A counted change uses one unit when it is applied successfully. Reads, pauses, monitors and scheduled briefs do not use it. Request and platform limits still apply. Connections are counted separately for each platform.

During Meta app review, we add each beta user to our Meta app as a tester — you accept the invite in your Facebook account. Google Ads, Microsoft Advertising, LinkedIn Ads, GA4 and Search Console work right after your invitation.

Reply to any Variafy email to tell us what helped and what is missing.

The assistant shows your usage with usage. Reads and pauses still work when your allowance is used up.

We will tell you about post-beta pricing before paid access begins.

Meta limits. Meta limits how many requests an app sends to each ad account. Variafy keeps count per ad account: when one gets close to its limit, reads and background checks wait, pauses keep going through, and the assistant is told how long to wait.

Request limits. To protect the service, requests are limited per minute: 300 per key, counting the assistant and plain HTTP together, 120 per network without a token and 120 page loads per network. Above that the answer is "Too many requests" with the number of seconds to wait.

Troubleshooting

The assistant gave me a link instead of making the change

This account is in the stricter mode: anything that can increase spend is approved by a person. Open the link, sign in with your own account, check the preview and click Apply. The owner can change this in the console.

The assistant says the change is already waiting for a decision

The same change was already proposed. Asking again does not create a second proposal: approve or reject the existing one in the console before its link expires.

The assistant says the ad account is at its Meta limit

Wait for the time it names. Reads may return the most recent answer marked with its age. Pausing still works.

Changes are refused because of permissions

Your role in the ad account allows reading only. Ask the ad account admin for Advertise or Manage, then reconnect the ad account in the console.

The monthly change limit is reached

Reads and pausing keep working. Your allowance resets at the start of the next calendar month in UTC; the assistant shows the reset date. Paid plan changes are not offered during the beta.

The answer says changes are switched off on the server

The Variafy team has temporarily stopped changes to ad accounts. Pausing still works, and proposals that are waiting stay valid until they expire.

The token is invalid, revoked or expired

Reconnect the connector in your assistant, or issue a new token in the console for Claude Code, Cursor and other clients.

The assistant does not see any ad accounts

Connect an ad account in the console. If one was connected before, check that its access in Facebook was not removed.

Security and data

  • Meta access tokens are stored encrypted (AES-256-GCM) and are used only to act in the ad accounts you connected.
  • Your ad data is not sent to analytics or advertising services. Emails such as briefs and alerts are delivered through an email delivery service.
  • Every call an assistant makes is written to the account's journal: who asked, which tool, the arguments and the answer. The Variafy account owner reads it in the console. Confirmation tokens and the signed links we hand out are not stored there. What a person typed in their own chat never reaches this service — only the call the assistant built from it.
  • Every Meta ad change is previewed and requires confirmation. The account owner can require signed-in approval for any increase in spend. Every executed change is recorded in the console's audit log, with the account it was made from.
  • Google Ads. Variafy reads Google Ads to build its own reports, checks and alerts, after you sign in with your own Google account. It does not change Google Ads, does not run arbitrary Google Ads API queries, and does not offer Google Ads data as an API: Google Ads operations are not part of the plain HTTP API. To build your own Google Ads integration, use the Google Ads API with your own Google Cloud project, as Google’s developer policies require.
  • How long each kind of data is kept is listed in the privacy policy. To remove your data, see data deletion.