Agency MCP

Run client work for a marketing agency from Claude: Google Ads, Analytics, Search Console, Business Profile, Meta ads, WordPress and your CRM, with every…

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only

What it can do

  • Whoami: Show which agency account this connector is authenticated as. Use it to confirm the connection before anything else.
  • Get Started: Use when the user asks how to set up Agency MCP, what it can do, what is new, or what to do first. Returns what this agency has connected, which clients exist and what is linked to each,
  • Connect Platform: Get a link the person can open to connect one platform to their Agency MCP account without visiting the dashboard: another Google login, Meta ads or Business Profile (one click, then

What data it sees

Do you need an account

No: the server works without sign-in

Run client work for a marketing agency from Claude: Google Ads, Analytics, Search Console, Business Profile, Meta ads, WordPress and your CRM, with every change previewed first.

How to connect

How to connect Agency MCP to Claude

The server address to paste into Claude settings:

https://agency-mcp--harrison-hjcc.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 Agency MCP to ChatGPT

The server address to paste into ChatGPT settings:

https://agency-mcp--harrison-hjcc.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 Agency MCP to Cursor

The server address to paste into Cursor settings:

https://agency-mcp--harrison-hjcc.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 (60)

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

whoamiShow which agency account this connector is authenticated as. Use it to confirm the connection before anything else.
get_startedUse when the user asks how to set up Agency MCP, what it can do, what is new, or what to do first. Returns what this agency has connected, which clients exist and what is linked to each, the next set-up step, example prompts, and the features added in the last 30 days.
connect_platformGet a link the person can open to connect one platform to their Agency MCP account without visiting the dashboard: another Google login, Meta ads or Business Profile (one click, then their own sign-in with that platform), or the CRM or a WordPress site (a short form where they enter the token or application password themselves). Use when a tool reports that a platform is not connected, or when asked to connect one. The link lasts 30 minutes and works once. It connects nothing by itself, and no password or token is ever entered in the conversation.
client_access_linkCreate a link the agency sends to one of ITS CLIENTS so that client can connect their own accounts (their Google login for Analytics, Search Console and Ads; Meta ads; Business Profile; their CRM; their WordPress site) to this agency's Agency MCP account, instead of granting the agency manager access. The client opens it, sees who is asking and what it allows, and signs in themselves. Lasts 14 days. Connecting links nothing to a client automatically: the accounts then appear in the list tools, marked with the client's login, to be linked to the right client.
audit_clientAudit one client and return a scorecard: conversion tracking, keyword spend with no conversions, search terms, impression share and ad extensions (Google Ads, last 30 days); leads recorded, campaigns spending without leads, ad fatigue and click-through (Meta ads, last 30 days); rankings within reach and low click-through titles (Search Console, last 28 days); and whether the website's leads are being measured (Analytics). Each area is ok, warning or critical, with the top actions and the tool that makes each fix. Use for a new client, or when asked what to fix first. Reads only.
apply_audit_fixesApply the Google Ads fixes from audit_client in one step: pause every keyword the audit flags as spending with no conversions, and add the search terms the user chose as negative keywords (phrase match). Only items the audit flags right now are accepted. Previews unless confirm is true; each keyword can be re-enabled with ads_set_keyword_status. Does not change budgets, extensions or Meta campaigns.
review_changesReview the changes this agency confirmed through Agency MCP in the last N days, and what happened afterwards. For each Google Ads or Meta ads change it compares the 7 days before with up to 7 days after (cost, clicks, conversions) and marks it win, loss, flat or too new to judge; changes on other platforms are listed without a verdict. Use for a weekly review or when asked whether recent changes worked. Reads only.
suggest_clientsGroup every account this agency's connected logins can reach (Analytics, Search Console, Google Ads, Meta, Business Profile, CRM, WordPress) into likely CLIENTS by business name, leaving out anything already linked. Call this when the agency has no clients yet, asks to add or set up a client, or after get_started says status is no_clients. Sure matches are grouped; `maybe` lists accounts that only look related — ask before including those.
create_clientCreate one client (one business) and link its accounts, so every later question can be asked by the business's name. Use the IDs exactly as suggest_clients or the list tools returned them — never invent one. Every account is looked up by name and checked against the client's name: an account that looks like a different business is flagged in the preview and blocks creation until the person confirms it. Previews unless confirm is true. Does not change billing: if the agency has no open seat the client is created locked and waits for a seat.
list_connected_accountsList every GA4 property and Search Console site this agency can access. Call this first — property IDs and site URLs must come from here, never from memory.
ga4_reportRun a GA4 report. Dimensions and metrics use GA4 API names (e.g. dimension 'sessionDefaultChannelGroup', metric 'sessions'). Dates accept YYYY-MM-DD or relative forms like '28daysAgo' and 'today'.
gsc_queryQuery Search Console performance data (clicks, impressions, CTR, position). Dimensions can include 'query', 'page', 'country', 'device', 'date'.
gbp_list_locationsList the Google Business Profile locations this sign-in manages, with the gbp_location_id every other gbp_* tool needs. Call this first; never guess a location id.
gbp_reviewsRecent reviews for one Business Profile location: rating, text, reviewer, and whether the owner has replied. Use it to find reviews waiting on a reply.
gbp_reply_reviewPost the owner's public reply to a review. Runs as a preview unless confirm is true; the reply text is published under the business name, so show it to the person first.
gbp_performanceBusiness Profile performance for one location over a date range: impressions (Maps and Search, mobile and desktop), calls, website clicks, direction requests, conversations and bookings, with daily values. Use for client reporting beside Ads and Analytics.
gbp_postsRecent posts (updates) on a Business Profile location, with their state and links.
gbp_create_postPublish a post (update) on a Business Profile location — text, optional call-to-action button and photo. Preview unless confirm is true; posts are public the moment they are created.
ads_list_accountsList the Google Ads accounts this agency can reach, with names and currencies. Call this before any ads_report — customer IDs must come from here, never from memory.
ads_reportRun a GAQL query against one Google Ads account. Use for spend, clicks, conversions, cost per conversion, search terms and keyword performance. Always name the date range in your answer.
ads_set_campaign_statusPause, enable or remove a Google Ads campaign. Runs as a validated preview unless confirm is true. Enabling resumes spending; REMOVED cannot be undone in Google Ads.
ads_set_campaign_budgetChange a Google Ads campaign's daily budget. Give the amount in real currency (50 means $50.00/day) — the connector converts to micros. Returns the before value, the change, and the monthly impact. Previews unless confirm is true.
ads_add_negative_keywordsAdd negative keywords to a Google Ads campaign to stop wasted spend. Usually the highest-value change available after reading a search terms report. Previews unless confirm is true.
ads_set_keyword_statusPause, enable or remove one keyword. Get ad_group_id and criterion_id from an ads_report query on the keyword_view resource. Previews unless confirm is true.
ads_set_ad_statusPause, enable or remove one ad. Get ad_group_id and ad_id from an ads_report query on the ad_group_ad resource. Previews unless confirm is true.
ads_campaign_stateCurrent status, channel type and daily budget for one campaign, including whether its budget is SHARED with other campaigns. Check this before proposing a budget change.
ga4_list_key_eventsKey events (conversions) defined on a GA4 property: event name, counting method, and whether it is custom. Use before creating one, and when a report shows zero conversions.
ga4_list_google_ads_linksGoogle Ads accounts linked to a GA4 property. A missing link is why Ads shows no Analytics conversions or audiences.
ga4_create_propertyCreate a GA4 property FOR one of this agency's clients — with its web data stream (which yields the G- measurement ID for the site tag) — and link it to that client. Day-one set-up for a new client. Previews unless confirm is true. Follow with ga4_create_key_event, wp_install_tracking (ga4_id = measurement_id) and ga4_link_google_ads.
ga4_create_key_eventMark an event as a key event (conversion) on a client's GA4 property — generate_lead and phone_click are the usual two for a lead-generation site. Previews unless confirm is true. Never deletes.
ga4_link_google_adsLink a client's Google Ads account to their GA4 property so key events and audiences flow into Ads. Both must be linked to the same client here. Previews unless confirm is true. Never unlinks.
gsc_add_siteAdd a site to Search Console FOR one of this agency's clients, and link it to that client. Takes the client's name and the new site (https://example.com/ for a URL-prefix property, sc-domain:example.com for a Domain property). The site is added UNVERIFIED; follow with site_verification_token and site_verify. Previews unless confirm is true.
gsc_list_sitemapsSitemaps submitted for a Search Console site: when Google last read each, errors, warnings and how many URLs it found.
gsc_submit_sitemapSubmit a sitemap to Search Console for a site linked to one of this agency's clients. The sitemap must live on that site. Previews unless confirm is true.
site_verification_tokenGet the ownership-verification token for a client's site: a meta tag for a URL-prefix site, or a DNS TXT record for a Domain property, with where it has to go. Changes nothing by itself.
site_verifyAsk Google to verify ownership of a client's site once the token from site_verification_token is live on it. Makes the signed-in Google account a verified owner in Search Console. Previews unless confirm is true.
ads_campaign_biddingCurrent bidding strategy for one campaign (type, target CPA / ROAS / CPC ceiling) plus its last-30-day conversions, clicks and cost. Check this before proposing a strategy change.
ads_set_bidding_strategyChange a campaign's bidding strategy: Maximize conversions (optional target CPA), Maximize conversion value (optional target ROAS), Maximize clicks (optional max CPC), or Manual CPC. Money in real currency. Warns when a target is set with too few conversions to learn from. Previews unless confirm is true.
ads_list_conversion_actionsEvery conversion action in the account: type, category, status, whether it is primary (what Smart Bidding optimises toward), counting and default value. Says plainly when no enabled primary action exists — in which case every campaign shows 0 conversions no matter how many leads arrive.
ads_create_conversion_actionCreate a conversion action: WEBPAGE (form submit / thank-you page — returns the tag snippets to install), WEBSITE_CALL (calls from the site's swapped number) or AD_CALL (calls from the ad's call asset). Primary by default. Previews unless confirm is true.
ads_update_conversion_actionChange a conversion action's status (ENABLED / HIDDEN / REMOVED — REMOVED is permanent), whether it is primary, its name, or its default value. Previews unless confirm is true.
ads_list_extensionsSitelinks, callouts, structured snippets and call assets linked at campaign level (optionally one campaign) and at account level, with a `gaps` list of what a search campaign is missing.
ads_add_extensionsAdd extensions (assets) to one campaign or to the whole account: SITELINK (text ≤25, descriptions ≤35, final URL each), CALLOUT (≤25 chars each), STRUCTURED_SNIPPET (a header such as 'Services' plus 3+ values), or CALL (the client's lead phone number). Assets are validated by Google in the preview and linked on confirm.
ads_remove_extensionUnlink one extension asset from a campaign (or from the account when campaign_id is omitted). Use it to retire an old phone number or sitelink; the asset stays in the library. Previews unless confirm is true.
wp_list_sitesList the WordPress sites this agency has connected, with their last connectivity check. Call this before any other wp_ tool — sites are referred to by label.
wp_check_siteVerify a connected WordPress site is reachable and the credentials still work. Use when a wp_ tool fails, before assuming the content is the problem.
wp_list_postsList posts or pages on a connected WordPress site. Returns ids, titles and status — fetch full content with wp_get_post.
wp_get_postFetch one post or page including its full editable content.
wp_write_postCreate or update a post or page on a client's live website. Omit `id` to create. A new post is created as a DRAFT unless status is given; an update leaves the existing status alone unless status is given. Pass status 'publish' only when the user has explicitly asked for it to go live.
wp_site_capabilitiesReport what can actually be changed on a site: theme type, SEO plugin, the connected user's capabilities, and whether the Agency MCP Bridge plugin is installed. Call this before planning any build work — do not assume.
wp_tracking_statusWhich tracking and verification IDs the Agency MCP Bridge is printing on a site (Analytics, Tag Manager, Google Ads, Search Console verification, one Ads conversion), and the exact tags it emits. Read this before installing anything.
wp_install_trackingInstall or remove tracking and verification on a client's WordPress site, by ID. Accepts a GA4 measurement ID (G-…), a Tag Manager container (GTM-…), a Google Ads tag (AW-…), a Search Console verification token (the meta tag from site_verification_token, or its content value), one Google Ads conversion (label + the page path it fires on, e.g. /thank-you/), and CALL TRACKING: phone_clicks=on fires a GA4 phone_click event on every tel: tap (plus an Ads conversion via phone_click_label), and call_conversion_label + phone_number installs Google's website-call number swap. The plugin builds every tag itself — this tool takes IDs ONLY and cannot install arbitrary HTML or script, by design. Send an empty string to remove an ID. Checks the live home page for tags already present so nothing is double-installed. Needs an Administrator connection and Bridge 1.2.1+. Previews (showing the exact tags) unless confirm is true.
wp_set_seoSet the SEO title, meta description, canonical, robots directive and JSON-LD schema for one post or page. This is the highest-leverage on-page change available — core WordPress does not expose these over the API.
wp_add_imagePull an image from a URL into the site's media library, optionally attaching it to a post and setting it as the featured image. Always set alt text.
wp_replace_in_postReplace an exact string inside one post's content. Prefer this over rewriting a whole page — it changes only what you name. The call is REFUSED if the number of matches is not what you expected, so pass `expect` honestly.
list_clientsList this agency's clients and which data sources are linked to each. Start here for any question about a named business rather than a platform.
client_overviewOne client, every channel, one call — organic search, website analytics, Google Ads, Meta ads and HighLevel (leads and jobs won) over the same period, with `compare: true` adding the previous period alongside. This is the right first call for 'how is <client> doing'. Sources that are not linked or not yet enabled are reported as such rather than silently omitted.
create_client_reportBuild a shareable, agency-branded report for a client and return its link. You supply the sections — write the commentary yourself from data you have already pulled, in plain language the client will understand. Set branding first at /dashboard, or the report goes out unbranded.
meta_list_accountsList the Meta ad accounts this agency can manage, with currency and whether the account can currently spend. Call before anything else Meta — ad account IDs look like 'act_123' and must come from here.
meta_insightsFacebook and Instagram ad performance — spend, impressions, clicks, CTR, CPC, reach and conversions. Use level 'campaign' unless asked for finer grain.