MCPOutils MCP/Clients

Clients

Créer, lire, mettre à jour et gérer les clients (entreprises) de votre agence.

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.

Paramètres
searchstringfacultatif
Free-text search over the client's name, industry, or contact email (case-insensitive, partial matches allowed).
status("complete" | "draft")[]facultatif
Client status. Use "complete" for active (fully onboarded) clients and "draft" for ones still being set up. Pass both to include all.
representativeIdsstring[]facultatif
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")[]facultatif
The client's primary goal. Allowed values: "improve_rankings" (improve search rankings), "get_reviews" (get more/better reviews), "fix_listings" (fix business listings).
healthMinnumberfacultatif
Lowest health score to include, 0–100 (the client's overall health rating).
healthMaxnumberfacultatif
Highest health score to include, 0–100.
locationsMinnumberfacultatif
Fewest locations a client must have. Clients with an unknown location count are skipped when a locations filter is set.
locationsMaxnumberfacultatif
Most locations a client can have.
createdAfterstringfacultatif
Only clients created on or after this date (e.g. "2026-01-01").
createdBeforestringfacultatif
Only clients created on or before this date.
cursorstringfacultatif
Leave empty for the first page; to get the next page, pass the `nextCursor` from the previous response.
limitnumberfacultatif
How many clients to return per page (1–200, default 50).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_clients",
    "arguments": {}
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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.

Paramètres
clientIdstringobligatoire
The id of the client to fetch (get it from list_clients).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_client_by_id",
    "arguments": {
      "clientId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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.

Paramètres
businessNamestringobligatoire
The client's business name. Must be unique within your agency.
primaryContactEmailstringobligatoire
The client's primary contact email. Becomes their customer-portal login and cannot be changed later.
primaryRepresentativeIdstringobligatoire
The id of the team member who will own this client (their user id, from list_team_members).
websitestringfacultatif
The client's website URL.
industrystringfacultatif
The client's business category or industry (e.g. a Google Business category name).
goal"improve_rankings" | "get_reviews" | "fix_listings"facultatif
The client's primary goal: "improve_rankings", "get_reviews", or "fix_listings".
gbpLinkstringfacultatif
The client's Google Business Profile URL (from search_google_business).
placeIdstringfacultatif
The client's Google Place id (from search_google_business).
latitudenumberfacultatif
The client location's latitude (from search_google_business).
longitudenumberfacultatif
The client location's longitude (from search_google_business).
googleRatingnumberfacultatif
The client's current Google star rating, if known (from search_google_business).
googleReviewCountnumberfacultatif
The client's current Google review count, if known (from search_google_business).
trackingKeywordstringfacultatif
A keyword to track the client's local search rank for. Requires placeId, latitude, and longitude to also be set.
clientPlanIdstringfacultatif
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.
notesstringfacultatif
An internal note about the client — visible only to your team, never to the client.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_client",
    "arguments": {
      "businessName": "string",
      "primaryContactEmail": "string",
      "primaryRepresentativeId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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.

Paramètres
clientIdstringobligatoire
The id of the client to update (required).
businessNamestringfacultatif
The client's business name.
industrystringfacultatif
The client's business category or industry.
websitestringfacultatif
The client's website URL. A short link (e.g. a URL shortener) is auto-expanded to its real destination before it's stored.
primaryContactNamestringfacultatif
The primary contact's name.
phonestringfacultatif
The client's phone number.
locationCountnumberfacultatif
The client's reported location count (informational — not the actual count of created locations).
citystringfacultatif
The client's city.
phoneCountryCodestringfacultatif
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.
countrystringfacultatif
The client's country, as an ISO-3166-1 alpha-2 code (e.g. "US", "GB").
statestringfacultatif
The client's state, province or region.
trackingKeywordstringfacultatif
A keyword to track the client's local search rank for.
notesstringfacultatif
An internal note about the client — visible only to your team, never to the client.
gbpLinkstringfacultatif
The client's Google Business Profile URL. A scheme (https://) is added automatically if you omit it.
clientPlanIdstringfacultatif
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.
primaryRepresentativeIdstringfacultatif
The user id of the team member who owns this client (from list_team_members).
visibility"public" | "private"facultatif
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".
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_client",
    "arguments": {
      "clientId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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).

Paramètres
clientIdstringobligatoire
The id of the client to delete (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "delete_client",
    "arguments": {
      "clientId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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.

Paramètres
clientIdstringobligatoire
The id of the client whose pending deletion should be cancelled (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cancel_scheduled_client_deletion",
    "arguments": {
      "clientId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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.

Paramètres
clientIdstringobligatoire
The id of the archived client to restore (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "reactivate_client",
    "arguments": {
      "clientId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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.

Paramètres
clientIdstringobligatoire
The id of the client to invite (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "invite_client",
    "arguments": {
      "clientId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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.

Paramètres
querystringobligatoire
Business name to search for
limitnumberfacultatif
Max candidates to enrich (1–5, default 3)
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_google_business",
    "arguments": {
      "query": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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.

Paramètres
clientIdstringobligatoire
The client whose connected Google accounts to list (from list_clients).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_google_accounts",
    "arguments": {
      "clientId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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.

Paramètres
clientIdstringobligatoire
The client that owns the Google account (from list_clients).
connectionIdstringobligatoire
The Google account to fetch (from list_google_accounts).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "trigger_google_fetch",
    "arguments": {
      "clientId": "string",
      "connectionId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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.

Paramètres
clientIdstringobligatoire
The client that owns the Google account (from list_clients).
connectionIdstringobligatoire
The Google account to browse (from list_google_accounts).
folderstringfacultatif
A folder id from the folder list. Omit to get the folder list first.
searchstringfacultatif
Filter a folder's locations by name, address, or postal code.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_google_listings",
    "arguments": {
      "clientId": "string",
      "connectionId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Clients/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.

Paramètres
clientIdstringobligatoire
The client to create the locations under (from list_clients).
connectionIdstringobligatoire
The Google account the listings belong to (from list_google_accounts).
fetchedListingIdsstring[]obligatoire
The fetchedListingIds to import (from get_google_listings). Up to 10 per call.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_location_from_google",
    "arguments": {
      "clientId": "string",
      "connectionId": "string",
      "fetchedListingIds": [
        "string"
      ]
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.