Skip to main content
Glama

Bulk set account category

bulk_set_account_category
Destructive

Replace the categories on one or more accounts. Valid categories: CUSTOMER, PROSPECT, OPEN_OPPORTUNITY, CLOSED_LOST, CHURNED, PARTNER, COMPETITOR, OTHER. An account can carry several; this call removes every category not listed, so each account ends up with exactly the given ones. Pass the full set in categories; category is the older single-value form, used only when categories is empty. To clear an account's categories use BulkRemoveAccountCategories. Accounts are identified by internal UUID, not name or CRM id. Returns updated_count plus skipped_account_ids: an account is skipped when the id does not exist in this workspace, so a non-empty skipped list means those ids were wrong, not that the write failed. To attach tags use the Tagging service instead.

Use when: Use when the user asks to re-classify accounts outright — 'move Acme to Prospect', 'these are only Partners'. To add a category while keeping the existing ones ('also mark Acme as a Partner') use BulkAddAccountCategories; to drop one use BulkRemoveAccountCategories. Resolve account UUIDs first via search_accounts_with_filters or get_accounts_by_ids; never guess them. This writes to the workspace and is visible to every user in it, so confirm the account list with the user before calling when the selection came from an ambiguous search.

Behavior: destructive

workspace_id / user_id are injected from request headers.

Input Schema

NameRequiredDescriptionDefault
categoryNo
categoriesNo
account_idsNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / categories
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {},
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  2. Changed1 schema field changed
    • removedInput schema / properties / _triggered_by
      Removed value: -{
      -  "default": "",
      -  "description": "REQUIRED. Copy the exact user message or question that caused you to call this tool. Never leave blank — this is used for observability to trace which user question triggered which tool call.",
      -  "type": "string"
      -}
  3. First observed

TDQS

A5/5.0
Behavior5/5

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

Goes well beyond the destructive annotation by explaining that this is a replacement operation that removes every category not listed, describes the legacy single-value fallback behavior, and clarifies that skipped_account_ids indicate bad ids rather than write failure. It also notes workspace visibility and that the write is visible to every user, which is valuable behavioral context for a destructive tool.

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

Conciseness5/5

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

Despite being detailed, the description is front-loaded with the core replacement semantics and structured into behavior, alternatives, prerequisites, and confirmation guidance. Every sentence contributes useful information for a destructive bulk operation.

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?

Complete for a complex destructive tool: it explains replacement semantics, valid categories, parameter fallback behavior, UUID resolution, skipped-id meaning, workspace visibility, and sibling alternatives. The output schema exists, and the description still helpfully clarifies updated_count and skipped_account_ids.

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

Parameters5/5

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

Although schema description coverage is 0%, the description fully compensates: it explains that categories is the full set, category is the older single-value form used only when categories is empty, and accounts are identified by internal UUID rather than name or CRM id. This gives clear semantics for all three parameters.

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 (replace) and resource (account categories) and precisely describes the resulting state: each account ends up with exactly the listed categories. It also distinguishes itself from the add/remove category siblings, so an agent can select it without opening another schema.

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?

Gives explicit when-to-use guidance with examples ('move Acme to Prospect'), names the sibling alternatives for adding or removing categories, and instructs how to resolve account UUIDs first. It also adds a confirmation safeguard for ambiguous searches, which is highly actionable.

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