AdsDoneEasy

Create, optimize, and publish Google Ads Search campaigns.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data

What it can do

  • Ade.Account.Health: Check auth, plan, and Google Ads connection status.
  • Ade.Account.Get: Return the AdsDoneEasy user profile (no Stripe IDs).
  • Ade.Account.Billing: Plan caps, remaining sync/optimize runs, and Stripe billing portal URL.

What data it sees

Do you need an account

No: the server works without sign-in

Create, optimize, and publish Google Ads Search campaigns. Analyze websites, research keywords, and generate ads; review quality, sync metrics, and publish paused.

How to connect

How to connect AdsDoneEasy to Claude

The server address to paste into Claude settings:

https://adsdoneeasy.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect AdsDoneEasy to ChatGPT

The server address to paste into ChatGPT settings:

https://adsdoneeasy.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect AdsDoneEasy to Cursor

The server address to paste into Cursor settings:

https://adsdoneeasy.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (42)

Raw names from tools/list. Only developers need these.

ade.account.healthCheck auth, plan, and Google Ads connection status.
ade.account.getReturn the AdsDoneEasy user profile (no Stripe IDs).
ade.account.billingPlan caps, remaining sync/optimize runs, and Stripe billing portal URL.
campaign.projects.listList Search campaign projects owned by the authenticated user.
campaign.projects.getGet one project with version pointers.
campaign.artifacts.getLoad a campaign artifact by exact type. Prefer version from projects.get pointers; omit version for the latest of that type.
campaign.runs.getPoll a CampaignRun by id (required after async wizard tools).
campaign.metrics.listList CampaignPerformance rows for a project.
google.ads.list_accountsList the Google Ads advertiser accounts connected to AdsDoneEasy (maximum five).
google.ads.list_customersList addable Google Ads customers across existing and pending OAuth connections.
google.ads.connect_urlReturn the AdsDoneEasy UI URL to connect Google Ads (OAuth runs in the browser).
google.ads.select_customerAdd an accessible Google Ads customer to AdsDoneEasy. The operation is idempotent.
google.ads.disconnectPreview or remove one Google Ads account. This never deletes local projects or Google campaigns.
campaign.projects.createCreate a Search campaign. Expert starts analysis; Autopilot continues server-side. Requires a live subscription. Async; poll campaign.runs.get.
wizard.update.briefUpdate brief fields (website, geo, budget, Expert maxCpc).
wizard.start.analysisStart website crawl/analysis. Async; poll campaign.runs.get.
wizard.save.profileSave business profile artifact edits.
wizard.confirm.profileConfirm the business profile stage gate.
wizard.start.keywordsStart keyword research. Async; poll campaign.runs.get.
wizard.save.keywordsSave keyword selection edits.
wizard.generate.anglesGenerate commercial angles. Async; poll campaign.runs.get.
wizard.approve.anglesApprove selected commercial angles.
wizard.generate.campaignGenerate RSA Search campaign. Async; poll campaign.runs.get.
wizard.campaign.validateValidate the generated campaign structure.
wizard.save.changesSave campaign draft edits.
wizard.quality.reviewRun quality review. Async; poll campaign.runs.get.
campaign.optimize.runCreate an executable optimization proposal from Google Ads metrics. Async; poll campaign.runs.get.
keywords.maintenance.setSet keyword eligibility recovery: automatic or review.
wizard.campaign.approveApprove campaign for export/publish.
wizard.campaign.exportCreate campaign export artifact.
campaign.runs.cancelCancel an in-flight campaign run. Payload must include runId.
autopilot.mode.setSwitch Autopilot or Expert. Payload: { workflowMode } (alias: mode).
autopilot.question.answerAnswer a waiting Autopilot question (questionVersion + optionId).
autopilot.run.retryRetry Autopilot after a failure (bumps automationRevision).
autopilot.run.continueContinue Autopilot. Payload must include automationRevision from projects.get. Async; poll campaign.runs.get.
campaign.optimize.applyApply selected recommendations from an immutable optimization proposal to Google Ads. Requires explicit confirm: true; campaign status and bidding strategy remain unchanged.
optimize.module.setEnable or disable one automatic campaign-care module. All modules are enabled by default; expectedRevision prevents overwriting newer settings.
campaign.optimize.dismissDismiss selected recommendations from the current immutable optimization proposal.
keywords.maintenance.applyApply selected replacements from the current keyword maintenance plan in review mode. Requires explicit confirm: true. Google validates demand before changing keywords.
campaign.metrics.refreshManually refresh Google Ads metrics. Optionally scope the refresh to one project; the first refresh backfills up to 180 days.
campaign.metrics.syncEnable or disable daily metrics sync (Growth/Enterprise).
campaign.google.publishValidate and publish the approved campaign to Google Ads as PAUSED. Requires confirm=true and an explicit EU political-advertising declaration. Never enables live spend.