PaidSync
PaidSync is an MCP server with over 309 verified tools across 8 platforms (Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, Google Tag Manager, Google…
What it can do
- Paidsync Exec: 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 operation
- Paidsync Context: 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 pla
- Paidsync Tool Detail: 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 b
What data it sees
Do you need an account
No: the server works without sign-in
PaidSync is an MCP server with over 309 verified tools across 8 platforms (Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, Google Tag Manager, Google Analytics 4, Google Search Console, Google Merchant Center). Full read+write on every ad platform plus tracking infrastructure setup and Shopping feed control. Operator-confirmation gate on every write action.
Verified Google Premier Partner, Meta Business Partner, LinkedIn Marketing Partner, and TikTok Marketing Partner concurrently. The only MCP for advertising holding all four verifications. Founded by Ahmed Ashraf with over $500M in managed advertising spend.
Lean MCP runtime exposes 20 tools at session start with over 309 callable via the paidsync_exec sandbox, reducing context overhead by 95% compared to traditional MCP servers.
Free tier: 15 calls/month, no credit card. Paid plans start at $49/month with full write access on every platform.
How to connect
How to connect PaidSync to Claude
The server address to paste into Claude settings:
https://ads-mcp--paidsync.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 PaidSync to ChatGPT
The server address to paste into ChatGPT settings:
https://ads-mcp--paidsync.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 PaidSync to Cursor
The server address to paste into Cursor settings:
https://ads-mcp--paidsync.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 (19)
Raw names from tools/list. Only developers need these.
| paidsync_exec | 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.call("list_campaigns", {}); const active = camps.filter(c => c.status === "ENABLED"); return active.length;`. Sandbox has no network, no fs, no process access. Output capped at 1MB. Default timeout 60s for interactive mode. |
| paidsync_context | 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 groups (e.g. 'google_ads', 'ga4'), or '*' for the full catalog. |
| paidsync_tool_detail | 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. |
| paidsync_recent_runs | 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. |
| paidsync_workflows_list | 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 paidsync_exec sandbox. |
| paidsync_workflows_run | 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). |
| paidsync_workflows_save | 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. |
| paidsync_workflows_delete | Delete one of your saved workflows by id. Only the workflow owner can delete it. |
| paidsync_workflows_describe | 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 user-saved workflow by id or 'me:<name>'. |
| paidsync_qa_suite | 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 mutates. Returns a structured report and a one-line summary. |
| set_active_account | 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. |
| connect_google_ads | Initiate OAuth flow to connect your Google Ads account. Opens a browser window for authentication. |
| connect_facebook_ads | Connect your Facebook Ads account. Returns an OAuth URL — open it in your browser to authorize access. Required before using any other Facebook tools. |
| connect_linkedin_ads | Connect your LinkedIn Ads account. Returns an OAuth URL — open it in your browser to authorize access. Required before using any other LinkedIn tools. |
| connect_ga4 | Connect your Google Analytics 4 account. Returns an OAuth URL. This uses the same Google OAuth client but requests analytics-specific scopes. |
| connect_gtm | 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. |
| connect_google_search_console | 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. |
| connect_merchant_center | 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). |
| connect_tiktok_ads | 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. |