Skip to main content
Glama

Move several contacts to a stage

moveContacts
DestructiveIdempotent

Moves up to 100 contacts to one stage. Qualified stages are rejected; moveContact qualifies contacts one at a time. A connected HubSpot receives the new stage on contacts Leadpoet created. Retrying with the same idempotencyKey and input returns the first result instead of repeating the action.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "body": "<body>",
      "idempotencyKey": "<idempotencyKey>"
    },
    "name": "moveContacts"
  }
}

Input Schema

NameRequiredDescriptionDefault
bodyYes
idempotencyKeyYesA unique key for this action. Reuse it only to retry the same call with the same input; use a new key for a new action.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructive, idempotent, and openWorld, so the safety profile is covered. The description adds genuinely new behavior: an external HubSpot write that only applies to contacts Leadpoet created, plus the retry contract that the first result is replayed rather than the move repeated. It omits atomicity — whether a rejected movement fails the whole batch — which matters for a destructive 100-item call.

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?

Four tight sentences, front-loaded with the operation and its cap, then exclusions, side effects, and retry semantics — no filler. Density is high but each clause carries distinct information.

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

Completeness3/5

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

For a destructive bulk mutation with nested optimistic-locking parameters and no output schema, the description covers limits, one exclusion, external side effects, and retry, which is substantial. It still leaves the two questions an agent most needs before calling: partial-failure semantics and what a stale expected_revision/expected_stage_id produces.

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

Parameters2/5

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

Schema description coverage is 50%, and the undocumented half is the risky half: expected_revision and expected_stage_id are optimistic-locking fields the description never mentions, so the agent gets no hint about conflict behavior or why the expected values must be supplied. The idempotency explanation restates what the idempotencyKey schema description already says, so it adds no meaning beyond the schema.

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?

"Moves up to 100 contacts to one stage" gives a specific verb, resource, cardinality cap, and a single destination, which is precisely the axis that separates it from moveContact. An agent can tell the bulk form from the single-contact sibling without opening either 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?

It names the alternative explicitly (moveContact) and gives the condition that forces it: qualified stages are rejected here and must be qualified one at a time. It does not state prerequisites such as required permissions or ownership of the contacts, and gives no guidance on choosing bulk vs. single when both are legal.

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