Skip to main content
Glama

Undo a contact qualification

undoContactQualification
DestructiveIdempotent

Uses the receipt from moveContact to return the contact to its prior stage and archive the deal it created, unless other contacts share that deal. Fails if the deal was edited since. A connected HubSpot receives the restored 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": {
      "params": "<params>",
      "body": "<body>",
      "idempotencyKey": "<idempotencyKey>"
    },
    "name": "undoContactQualification"
  }
}

Input Schema

NameRequiredDescriptionDefault
bodyYes
paramsYes
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

A4.4/5.0
Behavior5/5

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

Annotations already declare destructive, idempotent and open-world, but the description goes well beyond them: it names the specific side effect (deal archived, contact stage restored), the shared-deal exception, the edited-deal failure mode, and downstream propagation to a connected HubSpot. It also explains idempotency semantics in operational terms -- a retry with the same key returns the first result rather than repeating the action.

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?

Four tight sentences, ordered by importance: what it does, exceptions, external effect, then retry semantics. No filler and no restatement of the title.

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 a destructive, nested-body, no-output-schema tool this covers action, side effects, partial-failure conditions and retry behavior well. The remaining gap is scope and return: nothing says what engagementId scopes or what the caller gets back on success versus the error cases it names.

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

Parameters3/5

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

Schema coverage is only 33%, and only idempotencyKey is documented there; the description reinforces that semantics usefully but adds nothing about engagementId, which is a required, unexplained parameter. The receipt_id parameter is implied by 'the receipt from moveContact' but its link to moveContact's output is left implicit rather than spelled out.

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 action (undo/revert) with its exact mechanism: consume the receipt from moveContact, restore the prior stage, and archive the deal that moveContact created. It names the sibling tool it inverts, so an agent can distinguish it from moveContact or moveContacts without reading 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?

Makes the trigger condition explicit -- this is the rollback path after a moveContact qualification, driven by that call's receipt. It also gives when-not/edge conditions (skips archiving if other contacts share the deal, fails if the deal was edited since), but never states outright what to do instead when those conditions fail.

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