Ripple Ads by Ripple Strategies logoRipple Ads

Connect

Bring your own Claude.Ripple brings the guardrails.

One hosted MCP endpoint puts your Meta and Google Ads accounts in front of the assistant you already use. It reads what Ripple has synced and asks Ripple for changes — and Ripple applies a change only if every one of your spend ceilings passes, then reads it back and keeps the undo.

Works withClaudeClaude CodeClaude DesktopCursorChatGPTCodexn8nZapierAnything that speaks MCP over HTTP.

Two minutes

Three steps, then a conversation.

No server to host, no OAuth app to register, no developer token to apply for. Ripple already did that part.

1

Connect your ad accounts

Sign in with Meta and Google. Pick the ad accounts Ripple may see. Set the spend ceilings you want every change checked against.

2

Create a token

Read-only, or read-and-change. Scope it to some accounts or some tools if you like. Copy it once — Ripple keeps only a hash.

3

Paste one URL into your assistant

Claude Code, Claude Desktop, Cursor, ChatGPT, n8n — anything that speaks MCP over HTTP. Then ask a question.

MCP server URL

https://ads.ripplestrategies.ca/api/mcp

Streamable HTTP, bearer-authenticated. The same address serves Meta and Google.

Connect

Your assistant asks.Your guardrails answer.

Other MCP servers hand your assistant the keys and hope it is careful. Ripple's tools cannot reach Meta or Google at all — every write becomes a proposed change that only executes if your daily and monthly ceilings, per-change limits and kill switches all pass. When one refuses, the tool says which, so the answer is a sentence instead of a surprise on the invoice.

  • Read-only tokens, or tokens scoped to some tools and some ad accounts
  • Every call logged with the token that made it
  • Every executed change read back from the platform and reversible
Claude Desktop · Ripple Ads connectedIllustrative conversation
  1. Which of my Meta campaigns spent the most for the fewest leads this week?

  2. list_campaigns · 7 days

    “Spring promo — broad” spent $612 for 4 leads ($153 each). Your other two campaigns are at $38 and $41 a lead. Want me to cut its budget?

  3. Drop it to $40 a day and put the difference on the $38 one.

  4. set_campaign_daily_budget · $120 → $40

    Refused by a guardrail: “percentage budget-decrease limit exceeded” — your maximum step down is 50%. I can take it to $60 today.

  5. Do that.

  6. set_campaign_daily_budget · $120 → $60 · executed · rollback: chg_7f2k

    Done and read back from Meta. The other campaign is at $80 — the increase cleared every ceiling. Say “undo” and I roll either one back.

Tools

What your assistant can do.

Reads answer from the data Ripple has already synced, so a question costs nothing against platform quotas. Writes are proposed changes that the same executor Ripple's own agents use must clear.

Read

  • get_workspace

    Start here. The workspace name, plan, connected ad accounts (with currency and whether Ripple may change them), data freshness, and the spend ceilings every change is checked against.

  • list_campaigns

    Campaigns across the connected accounts with budget, status, whether Ripple manages them, and spend/results over the window. Use the returned id with get_campaign and the write tools.

  • get_campaign

    One campaign in depth: its ad sets / ad groups and ads, each with status, bids or targets, and performance over the window.

  • get_performance_summary

    Totals across the connected accounts over the window — spend, impressions, clicks, conversions, leads, revenue — per platform and per ad account, with derived cost-per-result figures.

  • get_breakdown

    One campaign split by a dimension — device, placement, age_gender, region, hour, conversion_category, or search_term (Google search terms; the input to add_negative_keyword). Sorted by spend.

  • get_changes

    Every change Ripple made or refused recently — from this assistant, from the dashboard, or from an agent — with who asked, why, the guardrail that blocked it if one did, and whether it can still be rolled back.

  • get_pending_approvals

    Changes Ripple has proposed and is waiting on, including approval packages.

  • get_leads_summary

    How many leads arrived and what state they are in. Counts and statuses only — never a name, phone number or email.

  • get_seo_audit

    The most recent on-page SEO audit of the customer’s website (Dashboard → SEO): score, pages crawled, every finding with how many pages it affects and the fix, and the worst pages. Pass auditId for an earlier one. Audits are started from the dashboard, not from here.

  • get_rankings

    Every keyword the workspace tracks (Dashboard → SEO → Rankings) with its latest Google position, the change since the previous reading, its best ever, and the three domains above it. Positions come from the daily check; sample: true means no data provider is configured yet.

  • recall

    Start every conversation here, right after get_workspace. Returns what you saved for this person in this workspace — most recent first, the last session summary flagged — plus when the last session was, so get_changes(days) can show what happened since. Optional query matches title, content and tags.

  • remember

    Save something for next time — a decision, a thing to watch, or (kind "session") a summary of what was done and discussed in this conversation. Call it before the conversation ends. Private to you in this workspace; never store a lead’s name, phone or email. Pass memoryId to update a note instead of adding one.

  • forget

    Delete one saved memory by memoryId, or every memory for this person in this workspace with all: true. Only what you saved; nothing about the ad accounts changes.

Change — guardrail-checked

  • set_campaign_status

    Pause or resume a campaign. Resuming puts money back on the air, so it is checked against every spend ceiling before it is applied.

  • set_campaign_daily_budget

    Change a campaign’s daily budget, in cents of the account currency. Increases are checked against the per-change limit, the campaign, account and workspace ceilings, and the plan’s managed-spend ceiling; decreases against the maximum step down. Read the current budget with list_campaigns first.

  • set_ad_set_status

    Pause or resume one ad set (Meta) or ad group (Google) inside a campaign Ripple manages. Ids come from get_campaign.

  • set_ad_status

    Pause or resume one ad inside a campaign Ripple manages. Ids come from get_campaign.

  • set_bid_target

    Set the target cost per acquisition (cents) or target return on ad spend (ratio, e.g. 3.5) on one ad set / ad group that already bids to that target. Exactly one of the two. The executor re-reads the current target first and refuses if it has changed since get_campaign.

  • add_negative_keyword

    Exclude a search term from a Google campaign at campaign level. Read candidates with get_breakdown(dimension: "search_term"). Never excludes a keyword the customer listed as protected.

  • rollback_change

    Undo one executed change by its changeId (from a write tool’s result or get_changes). Restores the exact previous value through the same guardrail-checked path.

Not here yet, on purpose: creating campaigns and ads from chat, duplication and creative upload. Each is a new money path and ships once it has run against a funded account.

Safety model

Four things that are true of every token.

The token is your assistant acting as you — never more than you.

Mode is a ceiling

A read token cannot reach a write tool whatever else it is allowed. A write token needs your authenticator to create.

Your role bounds it

The token carries the permissions of the person who made it, re-read on every call. Lose the role, the token narrows with you.

Scope it down

Limit a token to some ad accounts and some tools. A junior buyer, a reporting bot and an agency client each get their own.

Every change crosses the executor

Daily, weekly and monthly ceilings, per-change limits, protected campaigns, the emergency stop — re-checked at the moment of the write, not when the token was made.

Memory, prompts, skills

It remembers you. It comes with a playbook.

A new chat used to start from nothing. Now the endpoint keeps a private notebook per person per workspace, serves seven ready-made workflows, and ships as a Claude Code plugin.

Memory that is yours

recall at the start, remember at the end. What you decided, what to watch, what to check first next time — private to you in that workspace, listed on the Connect page, deletable in one click. Never a lead’s contact details.

Seven preset prompts

Catch me up, weekly review, budget pacing, search-term clean-up, what changed, leads pulse, save this session. Slash commands in Claude Desktop, Claude Code and Cursor; copy-paste anywhere else.

A plugin and the skills beside it

github.com/Dallenlol/ripple-ads-skills installs the skill, the prompts and the connector in two commands. Pair it with claude-ads for audits and planning across twelve platforms.

Claude Code

claude plugin marketplace add Dallenlol/ripple-ads-skills claude plugin install ripple-ads@ripple-ads

Try asking

Prompts that work on day one.

  • Which of my campaigns spent the most for the fewest leads this week?
  • Compare Meta and Google cost per lead over the last 30 days.
  • Which search terms on my Google campaign are wasting money? Exclude the three worst.
  • Pause every ad set with a cost per result over $60 this week and tell me what you paused.
  • Undo the budget change you made this morning.
  • What did Ripple change in the last two weeks, and what did each change do?

Questions

Does this work with Claude Pro, or do I need the API?
Claude Pro, Max, Team and Enterprise can add Ripple as a custom connector and sign in — no token to paste. Claude Code, Cursor and n8n take a token. No API key needed on either side; your Claude subscription is separate from Ripple.
Can the assistant spend money without me?
Only what you asked for, only inside your ceilings, and never without a write token you created with your authenticator. Nothing runs on a schedule on the Connect plan — no agents, no weekly plan. Every change is logged with the token that asked and can be rolled back.
What happens when a change is refused?
The tool result names the guardrail — “percentage budget-increase limit exceeded”, “ad-account daily spend ceiling reached” — and the assistant relays it. Limits are changed in the dashboard, never from a chat.
Does it remember what we talked about last time?
Yes. The endpoint keeps a notebook per person per workspace. The assistant reads it first (recall) and writes a session summary last (remember), so the next conversation starts from where this one stopped. You see every note under Dashboard → Connect and can delete any of them; nothing in it is ever shared with another member.
Does it check my website too?
Dashboard → SEO crawls up to 50 pages of the site your ads land on — titles, descriptions, headings, canonicals, mobile viewport, alt text, broken links, robots.txt and sitemap, response time — and lists the fix beside each finding. Your assistant reads the result with get_seo_audit and your tracked positions with get_rankings. Free workspaces get one audit a week; paid plans get one a day plus keyword research and daily rank tracking.
How fresh is the data?
Read tools answer from the last sync, and get_workspace says when that was. Ripple syncs on a schedule and on demand from the dashboard.
Is there a free plan?
Connect is $49 a month with a 14-day trial. Growth and Agency include the endpoint.
Which platforms?
Meta (Facebook and Instagram) and Google Ads. Both from one URL. Others are listed honestly as planned on the integrations page.

Connect an account.Choose who runs it.

Point your own assistant at Ripple and work in chat, or start the agents in dry run and promote them when a week of decisions has earned it. The guardrails are the same either way.

Meta and Google Ads OAuth · You choose the accounts · Disconnect at any time

Connect — your own Claude on your Meta & Google Ads · Ripple Ads