Skip to main content
Glama

Pause, exclude or mark a contact

set_contact_outreach_state
DestructiveIdempotent

Change how ZenMode treats one contact. pause: stop outreach to this contact in this campaign (undo with resume). exclude: put the person on your do-not-contact list, which stops them in every campaign and keeps them out of future ones (undo with unexclude). not_interested: mark them not interested, which ends outreach in this campaign (you can change the status back in the ZenMode dashboard). Nothing happens on LinkedIn at the moment you call this. ZenMode's campaign engine works through each campaign later, inside your daily and weekly limits, business hours and pacing. If the account is restricted, paused for the week, cooling down or switched off, the call is refused with the reason and when it lifts, and nothing changes. If the account has only used today's allowance, the change is accepted and the response says it will be worked through once the limit resets. Calls that only stop outreach (remove, pause, exclude, not interested) are never refused. An idempotency_key makes a retried call a no-op.

Input Schema

NameRequiredDescriptionDefault
actionYesWhat to do.
contact_idYesThe contact id, from search_contacts.
idempotency_keyNoOptional. A unique string you make up for this exact change (8 to 128 letters, digits, - _ . :). If the call is repeated with the same key and the same arguments within 24 hours, nothing happens twice and the first result is returned again. Use a fresh key for every new change.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

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: it discloses that nothing happens on LinkedIn at call time, that the campaign engine acts later within limits/hours/pacing, the exact refusal conditions (restricted, paused-for-week, cooling down, off) with reasons and lift times, and that stop-only actions are never refused. It also confirms idempotency_key makes retries a no-op, matching the idempotentHint annotation.

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?

The purpose is front-loaded in the first sentence, followed by action semantics and then edge-case behavior. It is somewhat long for a three-parameter tool, but nearly every sentence carries behavioral information an agent needs, so little is wasted.

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?

With no output schema, the description carries the return-value burden and mostly does so, describing refusals, reasons, and that the response indicates deferred processing. It stops just short of fully specifying the success/response shape, leaving a minor gap for a state-changing tool.

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 baseline is 3, but the description adds real value by explaining the behavioral effect and reversibility of each action enum value (pause/exclude/not_interested) and the idempotency-key no-op semantics. The schema's own "What to do." action description is thin, so this compensation matters.

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?

The opening sentence states a specific verb and resource ("Change how ZenMode treats one contact") and then enumerates the actions with precise scope. It clearly differentiates contact-level state changes from campaign-level siblings like pause_campaign/resume_campaign by noting pause affects only this campaign while exclude affects every campaign.

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?

Each action value is given its condition and undo path (pause→resume, exclude→unexclude, not_interested→dashboard), which tells the agent when each applies. However, it never explicitly compares this tool to sibling alternatives such as pause_campaign or remove_leads_from_campaign, so the routing is only implied.

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.