Skip to main content
Glama

Edit account

campaignstack_edit_account
Destructive

Edit one connected LinkedIn account. Use operation=set_owner_workspace to change the workspace that pays for maintenance/watchers. Use operation=set_watcher to turn the account's connection watcher, message watcher, own-posts watcher or invitation hygiene on or off (state is in campaignstack_get_accounts include.maintenance): name the account and kind and get a yes first, because enabling a watcher starts drafting outbound messages for review. The first enable creates the watcher and its review-first workflow, later calls pause or resume it; one watcher per kind per account across all workspaces (DUPLICATE_*_EXTERNAL means another workspace runs it; it has to be turned off there first) and it needs a live session (AGENT_ACCOUNT_UNAVAILABLE). Use operation=delete only after naming the account and getting explicit confirmation: delete removes the account from every workspace and clears its CampaignStack session/proxy/budgets/credentials, unlike campaignstack_edit_workspace_accounts unlink which only removes workspace access. With platform google, operation=set_scheduling_hours sets the hours meetings are offered in, which also bound when campaign email sends; it needs a person key and only changes a Google account that person connected.

Input Schema

NameRequiredDescriptionDefault
platformYesgoogle only takes set_scheduling_hours; every other operation is LinkedIn.
accountIdNoConnected account (LinkedIn account ID). Omit it to default to the workspace's only LinkedIn account that is ready; with several, the error lists them (id and name) so you can ask the person which one. Always required to delete. With platform google, the Google account ID, same default rule.
operationYes
workspaceIdNoWorkspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.

Output Schema

NameRequiredDescriptionDefault
okNo
itemNo
resultsNo
warningNo
nextStepNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / accountId / description
      Previous value: -"Connected account (LinkedIn account ID). Omit it to default to the workspace's only LinkedIn account that is ready; with several, the error lists them (id and name) so you can ask the person which one. Always required to delete."New value: +"Connected account (LinkedIn account ID). Omit it to default to the workspace's only LinkedIn account that is ready; with several, the error lists them (id and name) so you can ask the person which one. Always required to delete. With platform google, the Google account ID, same default rule."
    • changedInput schema / properties / operation / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "op": {
      -        "const": "set_owner_workspace",
      -        "type": "string"
      -      },
      -      "ownerWorkspaceId": {
      -        "description": "Workspace that pays for account maintenance watchers and inbox sends.",
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "ownerWorkspaceId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "enabled": {
      -        "type": "boolean"
      -      },
      -      "kind": {
      -        "description": "connection_watcher welcomes new connections, message answers inbound DMs, own_posts_watcher follows up with people engaging with the account's posts, invitation_hygiene withdraws the account's oldest pending invitations.",
      -        "enum": [
      -          "connection_watcher",
      -          "message",
      -          "own_posts_watcher",
      -          "invitation_hygiene"
      -        ],
      -        "type": "string"
      -      },
      -      "op": {
      -        "const": "set_watcher",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "kind",
      -      "enabled"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "confirmed": {
      -        "const": true,
      -        "description": "Required acknowledgement that the named account should be deleted from CampaignStack.",
      -        "type": "boolean"
      -      },
      -      "op": {
      -        "const": "delete",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "confirmed"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "endHour": {
      +        "description": "Hour the window closes, after startHour.",
      +        "maximum": 23,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "op": {
      +        "const": "set_scheduling_hours",
      +        "type": "string"
      +      },
      +      "startHour": {
      +        "description": "First hour meetings may start, 0-23 in the Google account's time zone.",
      +        "maximum": 23,
      +        "minimum": 0,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "startHour",
      +      "endHour"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "op": {
      +        "const": "set_owner_workspace",
      +        "type": "string"
      +      },
      +      "ownerWorkspaceId": {
      +        "description": "Workspace that pays for account maintenance watchers and inbox sends.",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "ownerWorkspaceId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "enabled": {
      +        "type": "boolean"
      +      },
      +      "kind": {
      +        "description": "connection_watcher welcomes new connections, message answers inbound DMs, own_posts_watcher follows up with people engaging with the account's posts, invitation_hygiene withdraws the account's oldest pending invitations.",
      +        "enum": [
      +          "connection_watcher",
      +          "message",
      +          "own_posts_watcher",
      +          "invitation_hygiene"
      +        ],
      +        "type": "string"
      +      },
      +      "op": {
      +        "const": "set_watcher",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "kind",
      +      "enabled"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "confirmed": {
      +        "const": true,
      +        "description": "Required acknowledgement that the named account should be deleted from CampaignStack.",
      +        "type": "boolean"
      +      },
      +      "op": {
      +        "const": "delete",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "confirmed"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / platform / const
      Removed value: -"linkedin"
    • addedInput schema / properties / platform / description
      Added value: +"google only takes set_scheduling_hours; every other operation is LinkedIn."
    • addedInput schema / properties / platform / enum
      Added value: +[
      +  "linkedin",
      +  "google"
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / accountId / description
      Previous value: -"Connected LinkedIn account id from campaignstack_get_accounts."New value: +"Connected account (LinkedIn account ID). Omit it to default to the workspace's only LinkedIn account that is ready; with several, the error lists them (id and name) so you can ask the person which one. Always required to delete."
    • changedInput schema / required
      Previous value: -[
      -  "platform",
      -  "accountId",
      -  "operation"
      -]New value: +[
      +  "platform",
      +  "operation"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / operation / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "op": {
      -        "const": "set_owner_workspace",
      -        "type": "string"
      -      },
      -      "ownerWorkspaceId": {
      -        "description": "Workspace that pays for account maintenance watchers and inbox sends.",
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "ownerWorkspaceId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "enabled": {
      -        "type": "boolean"
      -      },
      -      "kind": {
      -        "description": "connection_watcher welcomes new connections, message answers inbound DMs, own_posts_watcher follows up with people engaging with the account's posts, invitation_hygiene withdraws the account's oldest pending invitations.",
      -        "enum": [
      -          "connection_watcher",
      -          "message",
      -          "own_posts_watcher",
      -          "invitation_hygiene"
      -        ],
      -        "type": "string"
      -      },
      -      "op": {
      -        "const": "set_watcher",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "kind",
      -      "enabled"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "confirm": {
      -        "description": "Required acknowledgement that the named account should be deleted from CampaignStack.",
      -        "type": "boolean"
      -      },
      -      "op": {
      -        "const": "delete",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "confirm"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "op": {
      +        "const": "set_owner_workspace",
      +        "type": "string"
      +      },
      +      "ownerWorkspaceId": {
      +        "description": "Workspace that pays for account maintenance watchers and inbox sends.",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "ownerWorkspaceId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "enabled": {
      +        "type": "boolean"
      +      },
      +      "kind": {
      +        "description": "connection_watcher welcomes new connections, message answers inbound DMs, own_posts_watcher follows up with people engaging with the account's posts, invitation_hygiene withdraws the account's oldest pending invitations.",
      +        "enum": [
      +          "connection_watcher",
      +          "message",
      +          "own_posts_watcher",
      +          "invitation_hygiene"
      +        ],
      +        "type": "string"
      +      },
      +      "op": {
      +        "const": "set_watcher",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "kind",
      +      "enabled"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "confirmed": {
      +        "const": true,
      +        "description": "Required acknowledgement that the named account should be deleted from CampaignStack.",
      +        "type": "boolean"
      +      },
      +      "op": {
      +        "const": "delete",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "confirmed"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Changed2 schema fields changed
    • changedInput schema / properties / operation / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "op": {
      -        "const": "set_owner_workspace",
      -        "type": "string"
      -      },
      -      "ownerWorkspaceId": {
      -        "description": "Workspace that pays for account maintenance watchers and inbox sends.",
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "ownerWorkspaceId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "confirm": {
      -        "description": "Required acknowledgement that the named account should be deleted from CampaignStack.",
      -        "type": "boolean"
      -      },
      -      "op": {
      -        "const": "delete",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "confirm"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "op": {
      +        "const": "set_owner_workspace",
      +        "type": "string"
      +      },
      +      "ownerWorkspaceId": {
      +        "description": "Workspace that pays for account maintenance watchers and inbox sends.",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "ownerWorkspaceId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "enabled": {
      +        "type": "boolean"
      +      },
      +      "kind": {
      +        "description": "connection_watcher welcomes new connections, message answers inbound DMs, own_posts_watcher follows up with people engaging with the account's posts, invitation_hygiene withdraws the account's oldest pending invitations.",
      +        "enum": [
      +          "connection_watcher",
      +          "message",
      +          "own_posts_watcher",
      +          "invitation_hygiene"
      +        ],
      +        "type": "string"
      +      },
      +      "op": {
      +        "const": "set_watcher",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "kind",
      +      "enabled"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "confirm": {
      +        "description": "Required acknowledgement that the named account should be deleted from CampaignStack.",
      +        "type": "boolean"
      +      },
      +      "op": {
      +        "const": "delete",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "confirm"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / workspaceId / description
      Previous value: -"Workspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach."New value: +"Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too."
  5. Added

TDQS

A4.5/5.0
Behavior5/5

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

Annotations flag destructive/openWorld, and the description adds real depth beyond them: delete wipes session/proxy/budgets/credentials across every workspace, enabling a watcher starts drafting outbound messages, one watcher per kind is enforced globally (DUPLICATE_*_EXTERNAL), and a live session is required (AGENT_ACCOUNT_UNAVAILABLE). This is exactly the kind of context annotations cannot carry.

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-loaded and organized around operation=, with each sentence carrying distinct operational content. It runs long as a single dense paragraph and would scan better as bullets, but little is truly wasted.

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

Completeness5/5

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

Given four operations, a nested operation union, destructive semantics, and an output schema, the description covers all decision-relevant behavior: prerequisites, cross-workspace constraints, confirmation rules, and the difference from the sibling unlink tool. Nothing an agent needs to call it safely is missing.

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 75% and already documents the operation union well. The description still adds meaning the schema doesn't: confirmation preconditions for delete/set_watcher, the person-key requirement for google scheduling hours, and the error semantics of DUPLICATE_*_EXTERNAL and AGENT_ACCOUNT_UNAVAILABLE.

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

Purpose4/5

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

Opens with a specific verb+resource ('Edit one connected LinkedIn account') and names every operation it supports (set_owner_workspace, set_watcher, delete, set_scheduling_hours), clearly separating it from the sibling campaignstack_edit_workspace_accounts. Minor ding for the opening framing as LinkedIn-only when the schema also accepts platform=google, though the last sentence corrects this.

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

Usage Guidelines5/5

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

Explicit routing per operation, plus explicit exclusions and alternatives: delete vs. campaignstack_edit_workspace_accounts unlink, and the requirement to get a yes/explicit confirmation before destructive or outbound-drafting changes. Nothing is left to inference.

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.

Resources