MCPMCP-Tools/Kunden

Kunden

Kundenunternehmen Ihrer Agentur erstellen, lesen, aktualisieren und verwalten.

list_clients

Readclients:read

List the client businesses this agency manages, newest first. This is the starting point for anything about clients: use it to find a client and its id before calling get_client_by_id, or to answer questions like "how many active clients do we have?", "which clients are assigned to a rep?", or "show clients with a health score under 40". All filters are optional and are combined together (a client must match all of them); status, representativeIds, and goals each accept multiple values and match any of them. Returns a page of client summaries plus a running `total` and a `nextCursor` — each summary has the client's name, industry, status, goal, health score, number of locations, Google rating and review count, plan, created date, and assigned representative. To page through more, call again passing the returned `nextCursor`. You don't pass an agency — it comes from your credentials. Sensitive data (login credentials, portal secrets) is never returned.

Parameter
searchstringoptional
Free-text search over the client's name, industry, or contact email (case-insensitive, partial matches allowed).
status("complete" | "draft")[]optional
Client status. Use "complete" for active (fully onboarded) clients and "draft" for ones still being set up. Pass both to include all.
representativeIdsstring[]optional
The assigned account representative(s). Pass one or more team-member ids (from list_team_members); a client matches if its representative is any of them.
goals("improve_rankings" | "get_reviews" | "fix_listings")[]optional
The client's primary goal. Allowed values: "improve_rankings" (improve search rankings), "get_reviews" (get more/better reviews), "fix_listings" (fix business listings).
healthMinnumberoptional
Lowest health score to include, 0–100 (the client's overall health rating).
healthMaxnumberoptional
Highest health score to include, 0–100.
locationsMinnumberoptional
Fewest locations a client must have. Clients with an unknown location count are skipped when a locations filter is set.
locationsMaxnumberoptional
Most locations a client can have.
createdAfterstringoptional
Only clients created on or after this date (e.g. "2026-01-01").
createdBeforestringoptional
Only clients created on or before this date.
cursorstringoptional
Leave empty for the first page; to get the next page, pass the `nextCursor` from the previous response.
limitnumberoptional
How many clients to return per page (1–200, default 50).
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_clients",
    "arguments": {}
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/get_client_by_id

get_client_by_id

Readclients:read

Get the full details of a single client by its id. Use this once you know which client you want — typically after list_clients gives you the id — when the list summary isn't enough. Returns everything about that one client: full business profile and contact info, the assigned representative and who created the client, health score and rating/review metrics, whether the customer-portal invite is pending or accepted, listings data, and which plan the client is on. You don't pass an agency — it comes from your credentials, and a client from another agency is never returned. Sensitive data (login credentials, portal secrets) is never included. To look up or find a client id first, use list_clients.

Parameter
clientIdstringerforderlich
The id of the client to fetch (get it from list_clients).
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_client_by_id",
    "arguments": {
      "clientId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/create_client

create_client

Writeclients:write

Add a new client (a business your agency will manage) and run its onboarding automatically — it assigns a plan, sets up the client's customer-portal login, and computes an initial health score. You must provide three things: the business name, the client's primary contact email (this becomes their portal login and can't be changed later), and the id of the team member who will own the client. Optionally include Google Business details (get them from search_google_business) to fill in the profile, and a tracking keyword to start monitoring the client's local search rank. IMPORTANT: when you pass a placeId, this also creates the client's FIRST LOCATION from that Google place — which is what starts the listings, reviews and AEO work — and returns its id as `locationId`. Do not follow this with create_location_from_google or create_location for the same business: that would create a duplicate location. If you passed a placeId and `locationId` still comes back null, `locationSkipped` says why (for example `location_limit` means the agency is at its plan's location cap, and the client will have no listings or reviews until a location is added) — tell the user rather than retrying. Fails if a client with the same business name already exists (including an archived one — the error names its id so you can call reactivate_client instead of creating a new one). New clients are visible to your whole team. You don't pass an agency — it comes from your credentials.

Parameter
businessNamestringerforderlich
The client's business name. Must be unique within your agency.
primaryContactEmailstringerforderlich
The client's primary contact email. Becomes their customer-portal login and cannot be changed later.
primaryRepresentativeIdstringerforderlich
The id of the team member who will own this client (their user id, from list_team_members).
websitestringoptional
The client's website URL.
industrystringoptional
The client's business category or industry (e.g. a Google Business category name).
goal"improve_rankings" | "get_reviews" | "fix_listings"optional
The client's primary goal: "improve_rankings", "get_reviews", or "fix_listings".
gbpLinkstringoptional
The client's Google Business Profile URL (from search_google_business).
placeIdstringoptional
The client's Google Place id (from search_google_business).
latitudenumberoptional
The client location's latitude (from search_google_business).
longitudenumberoptional
The client location's longitude (from search_google_business).
googleRatingnumberoptional
The client's current Google star rating, if known (from search_google_business).
googleReviewCountnumberoptional
The client's current Google review count, if known (from search_google_business).
trackingKeywordstringoptional
A keyword to track the client's local search rank for. Requires placeId, latitude, and longitude to also be set.
clientPlanIdstringoptional
Which customer-portal plan to assign. Omit to use your agency's default plan — there's currently no tool to look up other plan ids.
notesstringoptional
An internal note about the client — visible only to your team, never to the client.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_client",
    "arguments": {
      "businessName": "string",
      "primaryContactEmail": "string",
      "primaryRepresentativeId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/update_client

update_client

Writeclients:write

Edit an existing client's editable fields. Pass only the fields you want to change. The client's primaryContactEmail (their portal login) can never be changed here. Identify the client by its id (from list_clients, create_client, or — for an archived client, which list_clients and get_client_by_id never return — the id create_client's duplicate_archived error names). Works on an archived client too, without reactivating it first. Returns the updated client, or throws if not found. You don't pass an agency — it comes from your credentials.

Parameter
clientIdstringerforderlich
The id of the client to update (required).
businessNamestringoptional
The client's business name.
industrystringoptional
The client's business category or industry.
websitestringoptional
The client's website URL. A short link (e.g. a URL shortener) is auto-expanded to its real destination before it's stored.
primaryContactNamestringoptional
The primary contact's name.
phonestringoptional
The client's phone number.
locationCountnumberoptional
The client's reported location count (informational — not the actual count of created locations).
citystringoptional
The client's city.
phoneCountryCodestringoptional
The ISO-3166-1 alpha-2 country code the client's phone number belongs to (e.g. "US", "IN") — the region, not the dial code.
countrystringoptional
The client's country, as an ISO-3166-1 alpha-2 code (e.g. "US", "GB").
statestringoptional
The client's state, province or region.
trackingKeywordstringoptional
A keyword to track the client's local search rank for.
notesstringoptional
An internal note about the client — visible only to your team, never to the client.
gbpLinkstringoptional
The client's Google Business Profile URL. A scheme (https://) is added automatically if you omit it.
clientPlanIdstringoptional
Which customer-portal plan to assign. There's currently no tool to look up other plan ids — omit to leave the client's current plan unchanged.
primaryRepresentativeIdstringoptional
The user id of the team member who owns this client (from list_team_members).
visibility"public" | "private"optional
Who can see this client on the dashboard: "public" (the whole team) or "private" (owners always still see it; every other member needs an explicit access grant that no tool currently exists to give). Switching an existing client to "private" immediately hides it from every non-owner member who doesn't already hold one — there is no way to grant individual members access back through MCP, only to switch it back to "public".
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_client",
    "arguments": {
      "clientId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/delete_client

delete_client

Writeclients:write

Request deletion of a client. This never permanently destroys anything. If the client has any locations this SCHEDULES it: the client and every one of its locations are archived at the end of the current billing period, and until then everything stays fully active and still billed — the archival can be called off with cancel_scheduled_client_deletion while it's still pending, or undone with reactivate_client once it has actually archived. A client with no locations at all (or none still live) is archived immediately instead of being scheduled (also undoable with reactivate_client). The response's `outcome` field says which happened ("scheduled" or "archived") — report that back rather than assuming. Identify the client by its id (from list_clients).

Parameter
clientIdstringerforderlich
The id of the client to delete (required).
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "delete_client",
    "arguments": {
      "clientId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/cancel_scheduled_client_deletion

cancel_scheduled_client_deletion

Writeclients:write

Call off a pending client deletion, so a client scheduled to archive at the end of the billing period carries on as normal. This also releases the locations that were scheduled along with it. Only works while the deletion is still pending — once the period has ended and the client is actually archived, call reactivate_client instead.

Parameter
clientIdstringerforderlich
The id of the client whose pending deletion should be cancelled (required).
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cancel_scheduled_client_deletion",
    "arguments": {
      "clientId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/reactivate_client

reactivate_client

Writeclients:write

Restore an archived client, bringing back the client and every location that archived along with it in the same request (a location archived separately, before or independently of that request, is not touched). Undoes what delete_client's schedule did once it actually reached the end of the billing period (a still-PENDING one should use cancel_scheduled_client_deletion instead — this tool is for a client that is already archived). A client that isn't currently archived is left unchanged rather than erroring. list_clients and get_client_by_id never return archived clients, so the only way to learn an archived client's id through this MCP surface is create_client's error when the business name matches one — it names the id to pass here.

Parameter
clientIdstringerforderlich
The id of the archived client to restore (required).
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "reactivate_client",
    "arguments": {
      "clientId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/invite_client

invite_client

Writeclients:write

Send (or resend) the client-portal invite email to a client's primary contact — a passwordless magic link they use to log into their customer portal. Resending does NOT invalidate a previously sent link: every link minted stays independently valid until it's used once or reaches its own 7-day expiry, so a resend leaves both the old and new email usable. Fails if the client has no primaryContactEmail set. Identify the client by its id (from list_clients). Returns the invite link that was sent.

Parameter
clientIdstringerforderlich
The id of the client to invite (required).
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "invite_client",
    "arguments": {
      "clientId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/search_google_business

search_google_business

Readclients:read

Search Google for a business by name and return the top matches, each enriched with full details (name, address, addressComponents, phone, website, GBP URL, category, businessStatus, rating, reviewCount, placeId, latitude, longitude). Use to find a business to onboard, then pass the chosen match's fields to create_client. Returns an empty list if nothing matches or Google is unavailable.

Parameter
querystringerforderlich
Business name to search for
limitnumberoptional
Max candidates to enrich (1–5, default 3)
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_google_business",
    "arguments": {
      "query": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/list_google_accounts

list_google_accounts

Readclients:read

List the Google Business Profile accounts already connected for a client, so you can pick one to import locations from. Returns each account's connectionId, the signed-in email, whether its credentials are still valid, its fetch status, how many locations are already connected, and how many have been fetched and are available to import. Start here for a Google import; if an account has 0 available, call trigger_google_fetch, then get_google_listings. You don't pass an agency — it comes from your credentials.

Parameter
clientIdstringerforderlich
The client whose connected Google accounts to list (from list_clients).
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_google_accounts",
    "arguments": {
      "clientId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/trigger_google_fetch

trigger_google_fetch

Writeclients:write

Start fetching the locations under a connected Google account so they become browsable/importable. This runs in the background; poll list_google_accounts and watch the account's fetchStatus and available count, then call get_google_listings. Starts (or restarts) the background fetch and returns once it's queued. You don't pass an agency — it comes from your credentials.

Parameter
clientIdstringerforderlich
The client that owns the Google account (from list_clients).
connectionIdstringerforderlich
The Google account to fetch (from list_google_accounts).
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "trigger_google_fetch",
    "arguments": {
      "clientId": "string",
      "connectionId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/get_google_listings

get_google_listings

Readclients:read

Browse the Google locations that have been fetched for a connected account (call trigger_google_fetch first if none are available). With no folder, returns the list of Google Business account folders (each with a location count). With a folder, returns that folder's locations — each with its fetchedListingId, resource name, name, address, verification state, whether it's already imported (connected), and whether its category maps to a supported one. Pass the fetchedListingIds you want to create_location_from_google. Optionally filter a folder by search text. You don't pass an agency — it comes from your credentials.

Parameter
clientIdstringerforderlich
The client that owns the Google account (from list_clients).
connectionIdstringerforderlich
The Google account to browse (from list_google_accounts).
folderstringoptional
A folder id from the folder list. Omit to get the folder list first.
searchstringoptional
Filter a folder's locations by name, address, or postal code.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_google_listings",
    "arguments": {
      "clientId": "string",
      "connectionId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/Kunden/create_location_from_google

create_location_from_google

Writeclients:write

Import one or more fetched Google locations into new business locations under a client, pulling their full Google profile (name, address, hours, categories, photos, etc.). Get the fetchedListingIds from get_google_listings. Imports up to 10 per call. Each new location is submitted to the other directories automatically (it's already live on Google). Returns the created location ids (and any that failed, with the reason). You don't pass an agency — it comes from your credentials.

Parameter
clientIdstringerforderlich
The client to create the locations under (from list_clients).
connectionIdstringerforderlich
The Google account the listings belong to (from list_google_accounts).
fetchedListingIdsstring[]erforderlich
The fetchedListingIds to import (from get_google_listings). Up to 10 per call.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_location_from_google",
    "arguments": {
      "clientId": "string",
      "connectionId": "string",
      "fetchedListingIds": [
        "string"
      ]
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.