Skip to main content
Glama

Link account

link_account
Destructive

Link a connected account to a client that ALREADY exists — the step after connecting a platform when the client is set up but the new account is not placed yet (the refusal says 'not linked to any of your clients'). Use the IDs exactly as the list tools returned them. Each account is looked up by name and checked against the client's name: one that looks like a different business blocks the link until the person confirms it. Previews unless confirm is true. On a paid plan a client can hold up to 3 Analytics properties, 3 Google Ads accounts and 3 Meta ad accounts of the SAME business: one given while the client already has a different main one is added beside it (replace true swaps the main instead). The free plan holds one of each; there, a different account replaces the current one only with replace true.

Input Schema

NameRequiredDescriptionDefault
clientYesThe client's name as list_clients returns it
confirmNoLeave false to preview: nothing changes and the preview shows exactly what would happen. Set true only after the user has agreed to this exact change.
replaceNoOnly after the preview said the client already has a different account of that kind AND the person wants it swapped for this one.
websiteNoSet or change the client's website address, e.g. https://acmefence.com
contact_nameNoWho at the client gets the weekly Autopilot report, e.g. "Dana Reyes" (the owner)
crm_locationNoCRM location id
meta_accountNoMeta ad account, act_…
contact_emailNoThat person's email address; the weekly report is sent there once the agency says send
report_languageNoThe language the client reads the weekly report in: en (default), es, pt, it, tr, id, fr or de. Blank or en = English.
wordpress_site_idNoWordPress site id from wp_list_sites
analytics_propertyNoGA4 property id, digits only
google_ads_accountNoGoogle Ads customer id
more_meta_accountsNoOther Meta ad accounts (act_…) of the SAME business, added beside the client's main one; up to 3 in all, paid plans only
search_console_siteNoSearch Console site exactly as listed, e.g. sc-domain:example.com
acknowledge_mismatchNoOnly after the preview flagged an account as looking like a different business AND the person has confirmed it does belong to this client.
more_google_ads_accountsNoOther Google Ads customer ids of the SAME business, added beside the client's main account; up to 3 in all, paid plans only
business_profile_locationNoBusiness Profile location id
more_analytics_propertiesNoOther GA4 property ids of the SAME business, one per extra site (e.g. a second website), added beside the client's main property; up to 3 in all, paid plans only

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / more_analytics_properties / description
      Previous value: -"Other GA4 property ids of the SAME business, one per extra site (e.g. a second website). added beside the client's main property; up to 5 in all"New value: +"Other GA4 property ids of the SAME business, one per extra site (e.g. a second website), added beside the client's main property; up to 3 in all, paid plans only"
    • addedInput schema / properties / more_google_ads_accounts
      Added value: +{
      +  "description": "Other Google Ads customer ids of the SAME business, added beside the client's main account; up to 3 in all, paid plans only",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "type": "array"
      +}
    • addedInput schema / properties / more_meta_accounts
      Added value: +{
      +  "description": "Other Meta ad accounts (act_…) of the SAME business, added beside the client's main one; up to 3 in all, paid plans only",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / more_analytics_properties
      Added value: +{
      +  "description": "Other GA4 property ids of the SAME business, one per extra site (e.g. a second website). added beside the client's main property; up to 5 in all",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "type": "array"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / report_language
      Added value: +{
      +  "description": "The language the client reads the weekly report in: en (default), es, pt, it, tr, id, fr or de. Blank or en = English.",
      +  "maxLength": 20,
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • addedInput schema / properties / contact_email
      Added value: +{
      +  "description": "That person's email address; the weekly report is sent there once the agency says send",
      +  "maxLength": 200,
      +  "type": "string"
      +}
    • addedInput schema / properties / contact_name
      Added value: +{
      +  "description": "Who at the client gets the weekly Autopilot report, e.g. \"Dana Reyes\" (the owner)",
      +  "maxLength": 80,
      +  "type": "string"
      +}
  5. Changed1 schema field changed
    • changedInput schema / properties / confirm / description
      Previous value: -"false previews; true links"New value: +"Leave false to preview: nothing changes and the preview shows exactly what would happen. Set true only after the user has agreed to this exact change."
  6. Changed1 schema field changed
    • addedInput schema / properties / website
      Added value: +{
      +  "description": "Set or change the client's website address, e.g. https://acmefence.com",
      +  "type": "string"
      +}
  7. Added

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by describing the preview-by-default safety flow, the name-mismatch blocking behavior that requires acknowledgement, and the plan-dependent caps (3 Analytics/Ads/Meta on paid, 1 on free). It also explains what replace actually does — swapping the main account rather than adding beside it — which is exactly the kind of consequence an agent needs to warn a user about.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core identity and the lifecycle position in the first clause, then layers conditions. Some sentences are long and clause-heavy (the paid-plan enumeration), but nearly every clause carries decision-relevant information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter mutation with no output schema, the description covers the risky parts: preview gating, mismatch acknowledgement, replacement semantics and plan limits. It does not describe what a preview returns or what happens to the unrelated client-field parameters, but an agent has enough to invoke it correctly and safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds real meaning on top by tying confirm and replace to the preview lifecycle and by explaining that the more_* array parameters add beside a main account under plan limits. The website, contact_* and crm_location parameters are only covered by the schema, not the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('link a connected account') plus the binding scope constraint ('to a client that ALREADY exists'), and positions it in a lifecycle relative to the connect step. An agent can distinguish it from connect_* and unlink_account without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly states when to use it: after connecting a platform, when the client exists but the account is unplaced, and it quotes the refusal message that signals this tool is needed. It also conditions confirm, replace and acknowledge_mismatch on prior preview output. It stops short of naming sibling tools (connect_google, create_client, list_connected_accounts) as explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.