Skip to main content
Glama

Postkey: Instagram DM Automation and Comment-to-DM

Add a person to the X STOP list

postkey_x_add_stop
Idempotent

Postkey: Puts a person on this profile's STOP list so nothing automated is sent to them on X again (adding someone already there changes nothing). Postkey keeps only a hash of their X user id. Use it when someone asks to stop in a way the opt-out check missed; postkey_x_list_stop shows the list and postkey_x_remove_stop takes someone off. Sends nothing to X and no X send tool exists: act with the customer's own X access (full scope: postkey_x_status).

Input Schema

NameRequiredDescriptionDefault
contact_idYesThe person's numeric X user id (not the @handle). Postkey keeps only a hash.

Output Schema

NameRequiredDescriptionDefault
okYesfalse: refused (isError; code, message, guide_topic, url); no change.
messageNoWhat happened.
stoppedNotrue: the person is on the STOP list.
usage_noteNoNear the month's X allowance: pass on as it is.
contact_refNoThe start of the stored hash.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / ok / description
      Previous value: -"false: refused (isError true; code, message, guide_topic, url), nothing changed."New value: +"false: refused (isError; code, message, guide_topic, url); no change."
  2. Changed2 schema fields changed
    • changedInput schema / properties / contact_id / description
      Previous value: -"The X user id of the person."New value: +"The person's numeric X user id (not the @handle). Postkey keeps only a hash."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "contact_ref": {
      +      "description": "The start of the stored hash.",
      +      "type": "string"
      +    },
      +    "message": {
      +      "description": "What happened.",
      +      "type": "string"
      +    },
      +    "ok": {
      +      "description": "false: refused (isError true; code, message, guide_topic, url), nothing changed.",
      +      "type": "boolean"
      +    },
      +    "stopped": {
      +      "description": "true: the person is on the STOP list.",
      +      "type": "boolean"
      +    },
      +    "usage_note": {
      +      "description": "Near the month's X allowance: pass on as it is.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "ok"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Goes meaningfully beyond the annotations: the annotations only say it is non-destructive and idempotent, while the description explains the privacy behavior ('keeps only a hash of their X user id'), restates idempotency in operational terms, and — most importantly — says it sends nothing to X and that no X send tool exists, so the agent must act through the customer's own access. The only gap is that it does not state what happens on an invalid or unknown user id beyond the schema pattern.

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-loads the effect, then the idempotency caveat, then routing, then the cross-cutting fact that nothing is sent to X — a logical order with no filler. It is dense to the point of being cramped, packing four responsibilities into one paragraph separated only by semicolons.

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?

An output schema exists, so return values need no explanation, and the description covers the remaining agent-facing unknowns: no network send occurs, the record is hashed, and the agent must follow up using the customer's own X access. Nothing needed to invoke this one-parameter tool is missing.

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?

The single parameter is fully documented in the schema at 100% coverage, including the crucial 'not the @handle' constraint. The description reinforces the hash-privacy point but adds no syntax or format detail beyond what the schema already provides, so the baseline 3 applies.

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 and resource ('Puts a person on this profile's STOP list') plus the exact consequence ('nothing automated is sent to them on X again'), which no sibling tool shares. An agent can distinguish it from postkey_x_remove_stop, postkey_x_list_stop and postkey_x_check_before_send without opening a 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 an explicit trigger ('Use it when someone asks to stop in a way the opt-out check missed') and names both the sibling that shows the same list and the sibling that reverses it. This is when-to-use, when-it-is-redundant, and alternatives in one package.

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