# Adako > Adako is a hosted MCP server for Google Ads and Meta Ads. It connects Claude, ChatGPT, Cursor, Claude Code > and any other MCP client to ad accounts. Reads run instantly. Every change becomes a proposal the operator > approves; nothing goes live without that approval. Created campaigns, ad sets and ads start paused. MCP endpoint: https://adako.ai/mcp Web app: https://adako.ai ## Index - Documentation: https://adako.ai/docs - Quickstart: https://adako.ai/docs/quickstart - Connect Claude: https://adako.ai/docs/clients/claude - Connect Claude Code: https://adako.ai/docs/clients/claude-code - Connect ChatGPT: https://adako.ai/docs/clients/chatgpt - Connect Cursor: https://adako.ai/docs/clients/cursor - Google Ads: https://adako.ai/docs/google-ads - Meta Ads: https://adako.ai/docs/meta-ads - Safety model: https://adako.ai/docs/safety - Tools reference: https://adako.ai/docs/tools - Pricing: https://adako.ai/pricing ## Quickstart 1. Create an account and sign in. 2. Connect Google Ads or Meta Ads on the Connections page, then make one account active per platform. 3. Add the MCP URL to your assistant: https://adako.ai/mcp 4. Run the first prompt: "Call start_here and tell me what is connected." 5. Ask a read question. Reads run immediately and change nothing. 6. Ask for a change. Adako answers with a proposal: summary, field-level diff, expected impact, warnings. Approve it in chat (direct policy) or on the Approvals page (inbox policy). ## Connect your AI ### Claude 1. Open Settings → Connectors. 2. Choose Add custom connector. 3. Paste the Adako MCP URL: https://adako.ai/mcp 4. Save, then click Connect. Claude opens Adako in a browser tab; sign in and approve access. 5. Start a new chat. The Adako tools appear in the connector list. MCP URL: https://adako.ai/mcp Adako never sends your Google or Meta tokens to the client. The connector holds an Adako token only. ### Claude Code 1. Run the add command in any project (or with --scope user to make it global). 2. Run /mcp inside Claude Code and finish the browser sign-in. 3. Ask for something read-only first. OAuth sign-in: claude mcp add --transport http adako https://adako.ai/mcp API key instead of OAuth: claude mcp add --transport http adako https://adako.ai/mcp --header "Authorization: Bearer ak_live_…" Use an API key for headless environments (CI, servers). Create one at /keys. ### ChatGPT 1. Open Settings → Connectors and turn on developer mode. 2. Choose Create / Add connector. 3. Paste the Adako MCP URL: https://adako.ai/mcp 4. Authenticate with OAuth when prompted. 5. In a chat, enable the Adako connector for that conversation. MCP URL: https://adako.ai/mcp ChatGPT shows read-only tools by default. Write tools return a proposal you approve in chat or at /approvals. ### Cursor 1. Create .cursor/mcp.json in the project root (or ~/.cursor/mcp.json for every project). 2. Paste the configuration below. 3. Open Cursor Settings → MCP and sign in when prompted. .cursor/mcp.json: { "mcpServers": { "adako": { "url": "https://adako.ai/mcp" } } } ## Safety model 1. Everything is created PAUSED. There is no flag to skip it. 2. Every write becomes a proposal: dry run, preview with a field-level diff, approval, one execution, read-back. 3. A proposal carries an idempotency key and is claimed atomically, so a retry cannot execute it twice. 4. Pending proposals expire after 48 hours and then never run. 5. No delete tools. Removing negative keywords is the one removal and needs an explicit confirmation flag. 6. Money at the tool boundary is a decimal in the account currency, never micros or cents. IDs are strings. 7. Free text never reaches a write: locations and interests are resolved to platform IDs first, and ambiguity stops the call. 8. Platform tokens are encrypted server-side and never sent to the client. Arguments are redacted before logging. ## Platforms Google Ads: Search campaigns, keywords, budgets, performance, search terms, wasted spend, keyword research, targeting and conversion actions. Writes: create a Search campaign (paused), budgets, campaign and ad group status, keywords and negatives. Meta Ads: campaigns, ad sets, ads, insights with breakdowns, wasted spend, pages, pixels and audiences. Writes: create a single-image campaign (paused), ad set budgets, pause and resume, campaign updates. ChatGPT Ads: planned. LinkedIn, TikTok and Amazon: later. ## Pricing One tool call is one task. Free: 15 tasks a month, 1 active account per platform, 2 API keys. Pro: $49/month, 400 tasks a month, 1 active account per platform, 5 API keys, priority support. System tools (connection status, usage, proposals, resolvers) cost 0. A question costs 1, a wasted-spend review 2, a campaign launch 8 to 12. ## Tools Legend: risk (read-only | write | destructive-write), cost in tasks. ### Adako - approve_proposal [destructive-write, free] — Approve and execute a pending proposal - explain_error [read-only, free] — Explain a platform error - get_connections_status [read-only, free] — Connection health per platform - get_usage_status [read-only, free] — Plan and task usage - list_connected_accounts [read-only, free] — List ad accounts (active and inactive) - list_pending_proposals [read-only, free] — List proposals waiting for approval - reject_proposal [write, free] — Reject a pending proposal - start_here [read-only, free] — Start here — personalised next step - switch_primary_account [write, free] — Set the primary ad account for a platform ### Google Ads - google_add_keywords [write, 1 task] — Add keywords to a Google Ads ad group - google_add_negative_keywords [write, 1 task] — Add campaign-level negative keywords - google_analyze_search_terms [read-only, 1 task] — Analyse Google Ads search terms and suggest negatives - google_analyze_wasted_spend [read-only, 1 task] — Find Google Ads spend with nothing to show for it - google_create_search_campaign [write, 1 task] — Create a Google Ads Search campaign (paused) - google_get_ad_group_performance [read-only, 1 task] — Google Ads ad group performance - google_get_campaign_performance [read-only, 1 task] — Google Ads campaign performance with period-over-period change - google_get_campaign_structure [read-only, 1 task] — Google Ads campaign contents (ad groups, keywords, ads) - google_get_campaign_targeting [read-only, 1 task] — Google Ads campaign targeting - google_get_keyword_performance [read-only, 1 task] — Google Ads keyword performance (top spenders) - google_list_campaigns [read-only, 1 task] — List Google Ads campaigns - google_list_conversion_actions [read-only, 1 task] — Google Ads conversion actions - google_pause_ad_group [destructive-write, 1 task] — Pause a Google Ads ad group - google_pause_campaign [destructive-write, 1 task] — Pause a Google Ads campaign - google_remove_negative_keywords [destructive-write, 1 task] — Remove campaign negative keywords (permanent) - google_research_keywords [read-only, 1 task] — Google Ads keyword ideas with volume and bid ranges - google_resolve_locations [read-only, free] — Turn place names into Google location ids - google_resume_ad_group [write, 1 task] — Resume a paused Google Ads ad group - google_resume_campaign [write, 1 task] — Resume a paused Google Ads campaign - google_update_campaign [destructive-write, 1 task] — Update Google Ads campaign settings - google_update_campaign_budget [destructive-write, 1 task] — Change a Google Ads campaign daily budget - google_update_keyword [destructive-write, 1 task] — Change a keyword bid or state - google_validate_ad_copy [read-only, free] — Check responsive search ad copy against the RSA limits ### Meta Ads - meta_analyze_wasted_spend [read-only, 1 task] — Find Meta spend that bought nothing - meta_create_image_campaign [write, 3 tasks] — Create a paused Meta image campaign - meta_get_ad_performance [read-only, 1 task] — Meta ad performance - meta_get_adset_performance [read-only, 1 task] — Meta ad set performance - meta_get_campaign_performance [read-only, 1 task] — Meta campaign performance - meta_list_ad_sets [read-only, 1 task] — List Meta ad sets - meta_list_ads [read-only, 1 task] — List Meta ads - meta_list_campaigns [read-only, 1 task] — List Meta campaigns - meta_list_custom_audiences [read-only, 1 task] — List Meta custom and lookalike audiences - meta_list_pages [read-only, 1 task] — List promotable Facebook Pages - meta_list_pixels [read-only, 1 task] — List Meta pixels - meta_pause_entity [destructive-write, 1 task] — Pause a Meta campaign, ad set or ad - meta_resume_entity [write, 1 task] — Resume a Meta campaign, ad set or ad - meta_search_targeting [read-only, free] — Look up Meta targeting ids - meta_update_adset_budget [destructive-write, 1 task] — Change a Meta ad set budget - meta_update_campaign [write, 1 task] — Edit a Meta campaign - meta_validate_creative_url [read-only, free] — Check an image URL and ad copy before building an ad ### ChatGPT Ads - chatgpt_geo_lookup [read-only, free] — Find ChatGPT Ads location ids - chatgpt_get_account [read-only, free] — Show the connected ChatGPT Ads account - chatgpt_get_performance [read-only, 1 task] — Read ChatGPT Ads performance - chatgpt_launch_ad [write, 8 tasks] — Launch a ChatGPT Ads chat card ad - chatgpt_list_ad_groups [read-only, 1 task] — List ChatGPT Ads ad groups - chatgpt_list_ads [read-only, 1 task] — List ChatGPT Ads ads - chatgpt_list_campaigns [read-only, 1 task] — List ChatGPT Ads campaigns - chatgpt_pause_campaign [destructive-write, 1 task] — Pause a ChatGPT Ads campaign - chatgpt_resume_campaign [write, 1 task] — Resume a ChatGPT Ads campaign - chatgpt_update_campaign [write, 1 task] — Edit a ChatGPT Ads campaign ## Notes for assistants - Call start_here first when you do not know what is connected. It is free. - Read before you write. Never invent an account ID, a metric or a benchmark. - Never retry a create after a timeout; ask for the proposal status instead. - Budgets are decimals in the account currency. Dates are exact (YYYY-MM-DD). - If a tool returns candidates instead of a result, ask the user to choose; do not guess.