AdsDoneEasy
Create, optimize, and publish Google Ads Search campaigns.
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
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- 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
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- 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:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - 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.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. |
| campaign.projects.list | List Search campaign projects owned by the authenticated user. |
| campaign.projects.get | Get one project with version pointers. |
| campaign.artifacts.get | Load a campaign artifact by exact type. Prefer version from projects.get pointers; omit version for the latest of that type. |
| campaign.runs.get | Poll a CampaignRun by id (required after async wizard tools). |
| campaign.metrics.list | List CampaignPerformance rows for a project. |
| google.ads.list_accounts | List the Google Ads advertiser accounts connected to AdsDoneEasy (maximum five). |
| google.ads.list_customers | List addable Google Ads customers across existing and pending OAuth connections. |
| google.ads.connect_url | Return the AdsDoneEasy UI URL to connect Google Ads (OAuth runs in the browser). |
| google.ads.select_customer | Add an accessible Google Ads customer to AdsDoneEasy. The operation is idempotent. |
| google.ads.disconnect | Preview or remove one Google Ads account. This never deletes local projects or Google campaigns. |
| campaign.projects.create | Create a Search campaign. Expert starts analysis; Autopilot continues server-side. Requires a live subscription. Async; poll campaign.runs.get. |
| wizard.update.brief | Update brief fields (website, geo, budget, Expert maxCpc). |
| wizard.start.analysis | Start website crawl/analysis. Async; poll campaign.runs.get. |
| wizard.save.profile | Save business profile artifact edits. |
| wizard.confirm.profile | Confirm the business profile stage gate. |
| wizard.start.keywords | Start keyword research. Async; poll campaign.runs.get. |
| wizard.save.keywords | Save keyword selection edits. |
| wizard.generate.angles | Generate commercial angles. Async; poll campaign.runs.get. |
| wizard.approve.angles | Approve selected commercial angles. |
| wizard.generate.campaign | Generate RSA Search campaign. Async; poll campaign.runs.get. |
| wizard.campaign.validate | Validate the generated campaign structure. |
| wizard.save.changes | Save campaign draft edits. |
| wizard.quality.review | Run quality review. Async; poll campaign.runs.get. |
| campaign.optimize.run | Create an executable optimization proposal from Google Ads metrics. Async; poll campaign.runs.get. |
| keywords.maintenance.set | Set keyword eligibility recovery: automatic or review. |
| wizard.campaign.approve | Approve campaign for export/publish. |
| wizard.campaign.export | Create campaign export artifact. |
| campaign.runs.cancel | Cancel an in-flight campaign run. Payload must include runId. |
| autopilot.mode.set | Switch Autopilot or Expert. Payload: { workflowMode } (alias: mode). |
| autopilot.question.answer | Answer a waiting Autopilot question (questionVersion + optionId). |
| autopilot.run.retry | Retry Autopilot after a failure (bumps automationRevision). |
| autopilot.run.continue | Continue Autopilot. Payload must include automationRevision from projects.get. Async; poll campaign.runs.get. |
| campaign.optimize.apply | Apply selected recommendations from an immutable optimization proposal to Google Ads. Requires explicit confirm: true; campaign status and bidding strategy remain unchanged. |
| optimize.module.set | Enable or disable one automatic campaign-care module. All modules are enabled by default; expectedRevision prevents overwriting newer settings. |
| campaign.optimize.dismiss | Dismiss selected recommendations from the current immutable optimization proposal. |
| keywords.maintenance.apply | Apply selected replacements from the current keyword maintenance plan in review mode. Requires explicit confirm: true. Google validates demand before changing keywords. |
| campaign.metrics.refresh | Manually refresh Google Ads metrics. Optionally scope the refresh to one project; the first refresh backfills up to 180 days. |
| campaign.metrics.sync | Enable or disable daily metrics sync (Growth/Enterprise). |
| campaign.google.publish | Validate and publish the approved campaign to Google Ads as PAUSED. Requires confirm=true and an explicit EU political-advertising declaration. Never enables live spend. |