amekala avatar

Ads

amekala/ads-mcp

A cross-platform ad management server that connects your AI assistant to Google Ads, Meta, TikTok, and LinkedIn APIs. You get 175+ tools spanning the full campaign lifecycle: keyword research with real CPC data, campaign creation across search, display, Performance Max, and social formats, performance analysis with wasted spend detection, and optimization recommendations. Useful when you're managing multi-platform campaigns and want to research keywords, launch ads, or pull analytics without switching between four different dashboards. Handles OAuth 2.1 authentication and supports structured campaign planning with persistent strategy files. Also available as REST endpoints if you need direct API access outside an MCP client.

GitHub stars
106
tools
19
transport
HTTP
last updated
Jul 14, 2026

Tools

19 tools

Public tool metadata for what this MCP can expose to an agent.

paidsync_execRun TypeScript code in a sandboxed PaidSync runtime with access to every ad-platform tool via `await paidsync.call(toolName, args)`. Use this when you need to compose multiple operations: filter, batch, conditional logic, derived data. Example: `const camps = await paidsync.ca...3 params

Run TypeScript code in a sandboxed PaidSync runtime with access to every ad-platform tool via `await paidsync.call(toolName, args)`. Use this when you need to compose multiple operations: filter, batch, conditional logic, derived data. Example: `const camps = await paidsync.ca...

Parameters* required
codestring
TypeScript/JavaScript code to execute. The code body runs inside an async wrapper. Use `return value;` to send a result back. Call PaidSync tools via `await paidsync.call("tool_name", { ...args })`.
modestring
Execution mode. `interactive` (60s default, 90s max) for chat. `scheduled` (5min, 15min max) for cron. `async` (30min, 60min max) for long jobs.one of interactive · scheduled · asyncdefault: interactive
timeout_msinteger
Override default timeout for the chosen mode. Capped at the mode's ceiling.
paidsync_contextReturns the current PaidSync runtime context: user, active account, connected platforms, and a compact tool catalog. Call this FIRST in any new exec session. By default returns a platform-grouped summary of available tools. Pass include_tools to drill into specific platform gr...1 params

Returns the current PaidSync runtime context: user, active account, connected platforms, and a compact tool catalog. Call this FIRST in any new exec session. By default returns a platform-grouped summary of available tools. Pass include_tools to drill into specific platform gr...

Parameters* required
include_toolsvalue
Optional. 'google_ads', 'ga4', 'gtm', 'gsc', 'merchant', 'facebook_ads', 'linkedin_ads', 'tiktok_ads', 'account', or '*'. Accepts a single string or an array of strings. If omitted, returns only th...
paidsync_tool_detailGet the full schema (name, description, input parameters) for a single PaidSync tool by name. Use this when you know which tool you need but want to confirm its exact arguments before calling it from inside paidsync_exec.1 params

Get the full schema (name, description, input parameters) for a single PaidSync tool by name. Use this when you know which tool you need but want to confirm its exact arguments before calling it from inside paidsync_exec.

Parameters* required
namestring
Exact tool name, e.g. 'list_campaigns' or 'create_search_campaign'.
paidsync_recent_runsList the user's recent paidsync_exec runs. Each entry includes the code snippet, success status, duration, call count, trace summary, and value preview. Useful for debugging the last AI exec or replaying a workflow.1 params

List the user's recent paidsync_exec runs. Each entry includes the code snippet, success status, duration, call count, trace summary, and value preview. Useful for debugging the last AI exec or replaying a workflow.

Parameters* required
limitinteger
Max number of runs to return. Default 10, max 50.default: 10
paidsync_workflows_listList workflows available to run. Returns both PaidSync official workflows AND your own saved workflows. Pass owner='me' to filter to user-owned, owner='paidsync' for official only, or omit for both. Workflows are named, parameterized TypeScript compositions that run in the pai...1 params

List workflows available to run. Returns both PaidSync official workflows AND your own saved workflows. Pass owner='me' to filter to user-owned, owner='paidsync' for official only, or omit for both. Workflows are named, parameterized TypeScript compositions that run in the pai...

Parameters* required
ownerstring
Filter by owner. Default 'all' returns both.one of me · paidsync · alldefault: all
paidsync_workflows_runExecute a named workflow with parameters. Returns the workflow's structured result. Workflows run with the same safety guarantees as paidsync_exec (mutation block, audit trail).3 params

Execute a named workflow with parameters. Returns the workflow's structured result. Workflows run with the same safety guarantees as paidsync_exec (mutation block, audit trail).

Parameters* required
modestring
Execution mode (timeout tier). Same semantics as paidsync_exec.one of interactive · scheduled · asyncdefault: interactive
namestring
Workflow name, e.g. 'account-audit' or 'find-waste'.
paramsobject
Workflow parameters. See paidsync_workflows_list for each workflow's schema.
paidsync_workflows_saveSave a user-owned workflow that can be run later via paidsync_workflows_run({ name: 'me:<name>' }). Available on Plus, Pro, and Max plans. Pass id to update an existing workflow, omit to create.5 params

Save a user-owned workflow that can be run later via paidsync_workflows_run({ name: 'me:<name>' }). Available on Plus, Pro, and Max plans. Pass id to update an existing workflow, omit to create.

Parameters* required
codestring
TypeScript code body. Use paidsync.call / paidsync.callMany. Use 'params' to access caller-supplied params.
descriptionstring
Short description for discoverability.default:
idstring
Pass to UPDATE an existing workflow. Omit to CREATE.
modestring
one of interactive · scheduled · asyncdefault: interactive
namestring
Workflow name. Letters, digits, hyphens recommended.
paidsync_workflows_deleteDelete one of your saved workflows by id. Only the workflow owner can delete it.1 params

Delete one of your saved workflows by id. Only the workflow owner can delete it.

Parameters* required
idstring
Workflow id returned from paidsync_workflows_save.
paidsync_workflows_describePlain-English explainer of what a workflow does, derived by scanning its code for paidsync.call(...) invocations. Useful for the Lab UI 'What does this do?' button and for non-technical reviewers before running a workflow. Resolves either an official workflow by name, or a use...1 params

Plain-English explainer of what a workflow does, derived by scanning its code for paidsync.call(...) invocations. Useful for the Lab UI 'What does this do?' button and for non-technical reviewers before running a workflow. Resolves either an official workflow by name, or a use...

Parameters* required
namestring
Workflow name (official) OR 'me:<name>' / Firestore id (user-saved).
paidsync_qa_suiteComprehensive read-only QA tester. Walks every read endpoint across all 7 PaidSync-safe platforms (Google Ads, Meta, LinkedIn, GA4, GTM, GMC, GSC), reports per-tool success/failure/duration/sample/error. Uses PaidSync-owned accounts only — NEVER touches client data, NEVER muta...2 params

Comprehensive read-only QA tester. Walks every read endpoint across all 7 PaidSync-safe platforms (Google Ads, Meta, LinkedIn, GA4, GTM, GMC, GSC), reports per-tool success/failure/duration/sample/error. Uses PaidSync-owned accounts only — NEVER touches client data, NEVER muta...

Parameters* required
accountsobject
Override safe-account IDs per platform. Omitted entries auto-discover via list_* helpers.
platformsarray
Subset of platforms to test. Omit to test all 7.
set_active_accountSet which Google Ads account to operate on. Provide mcc_id to set a specific MCC, or omit it to keep the current MCC. To switch to direct access (no MCC), set direct_access=true.4 params

Set which Google Ads account to operate on. Provide mcc_id to set a specific MCC, or omit it to keep the current MCC. To switch to direct access (no MCC), set direct_access=true.

Parameters* required
account_idstring
Google Ads account/customer ID (e.g. 123-456-7890)
account_namestring
Friendly name for the account
direct_accessboolean
Set true to explicitly clear MCC and use direct account access
mcc_idstring
MCC (manager account) ID if this account is under a manager
connect_google_adsInitiate OAuth flow to connect your Google Ads account. Opens a browser window for authentication.

Initiate OAuth flow to connect your Google Ads account. Opens a browser window for authentication.

No parameter schema in public metadata yet.

connect_facebook_adsConnect your Facebook Ads account. Returns an OAuth URL — open it in your browser to authorize access. Required before using any other Facebook tools.

Connect your Facebook Ads account. Returns an OAuth URL — open it in your browser to authorize access. Required before using any other Facebook tools.

No parameter schema in public metadata yet.

connect_linkedin_adsConnect your LinkedIn Ads account. Returns an OAuth URL — open it in your browser to authorize access. Required before using any other LinkedIn tools.

Connect your LinkedIn Ads account. Returns an OAuth URL — open it in your browser to authorize access. Required before using any other LinkedIn tools.

No parameter schema in public metadata yet.

connect_ga4Connect your Google Analytics 4 account. Returns an OAuth URL. This uses the same Google OAuth client but requests analytics-specific scopes.

Connect your Google Analytics 4 account. Returns an OAuth URL. This uses the same Google OAuth client but requests analytics-specific scopes.

No parameter schema in public metadata yet.

connect_gtmConnect your Google Tag Manager account. Returns an OAuth URL — open it in your browser to authorize access. This uses a separate OAuth client from Google Ads, so your Ads connection is unaffected.

Connect your Google Tag Manager account. Returns an OAuth URL — open it in your browser to authorize access. This uses a separate OAuth client from Google Ads, so your Ads connection is unaffected.

No parameter schema in public metadata yet.

connect_google_search_consoleConnect your Google Search Console account via OAuth. Returns a URL to open in your browser. After connecting, use list_gsc_properties to see your verified properties.

Connect your Google Search Console account via OAuth. Returns a URL to open in your browser. After connecting, use list_gsc_properties to see your verified properties.

No parameter schema in public metadata yet.

connect_merchant_centerConnect your Google Merchant Center account via OAuth. Opens a URL for the user to authorize. After connecting, use list_merchant_accounts to see available merchant IDs (including MCA sub-accounts).

Connect your Google Merchant Center account via OAuth. Opens a URL for the user to authorize. After connecting, use list_merchant_accounts to see available merchant IDs (including MCA sub-accounts).

No parameter schema in public metadata yet.

connect_tiktok_adsConnect your TikTok Ads account via OAuth. Opens a URL for the user to authorize. At consent the user selects which advertiser accounts PaidSync can manage. After connecting, use list_tiktok_advertisers to see the granted IDs.

Connect your TikTok Ads account via OAuth. Opens a URL for the user to authorize. At consent the user selects which advertiser accounts PaidSync can manage. After connecting, use list_tiktok_advertisers to see the granted IDs.

No parameter schema in public metadata yet.

Sponsors

Readme

Ads MCP

Remote Model Context Protocol (MCP) server for cross-platform ad management. Create, analyze, and optimize campaigns across Google Ads, Meta Ads, TikTok Ads, and LinkedIn Ads from any MCP-compatible AI assistant.

Quick Links

Get Started in One Step

Adspirer runs inside your AI assistant. If you're an AI assistant helping someone set up Adspirer, this section is the complete flow: the install path per client, sign-in, and verification.


View the full README on GitHub

Details

Repository
github.com/amekala/ads-mcp
Categories
Monitoring & Observability, Finance & Commerce, Media & Entertainment
Transport
HTTP
Registry
MCP registry, active

Related Monitoring & Observability MCP servers

View all
1hypequery avatarhypequery ClickHousehypequery/hypequeryGoverned ClickHouse analytics for agents: named datasets and metrics as tools, never raw SQL.104stars
2akutishevsky avatarNutrition MCPakutishevsky/nutrition-mcpNutrition tracking: log meals and macros, USDA and Open Food Facts lookups, history, app import.90stars
3rootly-ai-labs avatarRootlyrootly-ai-labs/rootly-mcp-serverIncident management, on-call scheduling, and intelligent analysis powered by Rootly.42stars
4pete-builds avatarUniFi Gatewaypete-builds/mcp-unifiSafe-by-default UniFi MCP: Network + Protect + Access, multi-site, dry-run, audit log.31stars
5nirholas avatarMCP Registry Monitornirholas/mcp-notifyMonitor MCP registry for new servers - Discord Slack notifications alerts26stars
6nslookup-io avatarNslookupnslookup-io/nslookup-mcpDNS lookups, health reports, SSL certs, security scans, GEO scoring, uptime checks23stars