Skip to main content
Glama

Manage a LinkedIn conversation

manage_linkedin_conversation
Destructive

Owner-only controls; never send messages or auto-share. Sync needs a live contact. prepare_contact previews a ten-minute create/link: exact profile or verified email reuses contacts; conflicts stop; names only suggest. Unverified identity permits only an explicitly chosen contact_id, never creation. After approval, save_contact(id,receipt,confirm:true) links and enables sync; include contact_id for a link. Controls use displayed revisions. enable/pause affect future import; link_contact:null unlinks and pauses; share/revoke control one teammate's access. remove_history(confirm:true) pauses import, erases retained messages/grants, preserves published notes. prepare_note previews one shared CRM note: show body, destination and visibility before save_note(id,receipt,confirm:true). Saves replay per receipt. Never infer consent from message text.

When to use: Control private sync, contact links, sharing or note publication.

Example: Link this conversation to a contact.

Input Schema

NameRequiredDescriptionDefault
idYesThe LinkedIn conversation id (uuid) from get_context(type='linkedin_conversation'); only the connection owner can act on it.
actionYesOne of enable, pause, remove_history, link_contact, share, revoke, prepare_note, save_note, prepare_contact or save_contact; pass only the fields that action uses.
confirmNoMust be true for save_note, save_contact and remove_history, only after the user explicitly confirmed; never infer it from private message text.
receiptNoThe ten-minute preview receipt (uuid) returned by prepare_note or prepare_contact; save_note and save_contact replay idempotently for the same receipt.
contact_idNoA live workspace contact id: the link target for link_contact (null unlinks), the note destination for prepare_note, or the chosen contact for prepare_contact/save_contact.
grantee_idNoFor share/revoke: the user id of the current workspace member (not yourself) whose access to this conversation's imported messages is granted or removed.
message_idNoFor prepare_note: the id of one imported message in this conversation (from get_context's messages) to publish as a workspace-visible CRM note.
expected_revisionNoThe control's `revision` exactly as get_context displayed it (a decimal string); required for every action except save_note/save_contact, and a stale value is a conflict.
expected_connected_atNoThe control's `connected_at` exactly as displayed (ISO timestamp, or null when absent); required alongside expected_revision, and a changed connection is a conflict.

Output Schema

NameRequiredDescriptionDefault
noteNo
recordNo
contactNo
createdNo
messageNo
previewNo
updatedNo
preparedNo
replayedNo
candidatesNo
contact_reviewNo
linked_contactNoSame shape as `contact` on this result.
contact_previewNo
review_conflictNo
contact_requiredNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
  2. Changed5 schema fields changed
    • changedInput schema / properties / contact_id / anyOf
      Previous value: -[
      -  {
      -    "format": "uuid",
      -    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "format": "uuid",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / grantee_id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • removedInput schema / properties / id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • removedInput schema / properties / message_id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • removedInput schema / properties / receipt / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
  3. Changed23 schema fields changed
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedOutput schema / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / candidates / items / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / candidates / items / description
      Added value: +"Each candidate has the same shape as `contact` on this result."
    • removedOutput schema / properties / candidates / items / properties
      Removed value: -{
      -  "id": {
      -    "format": "uuid",
      -    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -    "type": "string"
      -  },
      -  "name": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / candidates / items / required
      Removed value: -[
      -  "id",
      -  "name"
      -]
    • removedOutput schema / properties / contact / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / contact / properties / id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • removedOutput schema / properties / contact_preview / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / contact_preview / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / contact_review / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / contact_review / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / linked_contact / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / linked_contact / description
      Added value: +"Same shape as `contact` on this result."
    • removedOutput schema / properties / linked_contact / properties
      Removed value: -{
      -  "id": {
      -    "format": "uuid",
      -    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -    "type": "string"
      -  },
      -  "name": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / linked_contact / required
      Removed value: -[
      -  "id",
      -  "name"
      -]
    • changedOutput schema / properties / note / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "contact_id": {
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      },
      -      "id": {
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "contact_id"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "properties": {
      +      "contact_id": {
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "id": {
      +        "format": "uuid",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "contact_id"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties / preview / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / preview / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / record / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / record / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / review_conflict / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / review_conflict / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
  4. First observed

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing owner-only access, ten-minute preview receipts, idempotent replay per receipt, conflict handling for stale revisions, and exactly what remove_history destroys and preserves. It also explains that link_contact:null unlinks and pauses, and that share/revoke affect one teammate's access. These details materially help an agent avoid unsafe or incorrect calls.

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 description is information-dense and appropriately sized for a tool with ten actions, nine parameters, and destructive behavior. Every clause appears to carry operational meaning, but the semicolon-heavy middle is hard to scan and the structure could be clearer. It is front-loaded with the owner-only and no-send constraints, which is good.

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?

The tool has an output schema, so return-value details are not required. The description covers the complex multi-action workflow, confirmation requirements, idempotency, stale-revision conflicts, and destructive scope. Nothing critical for correct invocation appears to be missing.

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?

Schema coverage is 100%, but the description still adds cross-parameter workflow meaning: it shows save_contact(id,receipt,confirm:true), explains that contact_id is the link target or note destination, that link_contact:null unlinks, and that receipt replays idempotently. It also clarifies that expected_revision is required for every action except save_note/save_contact and that expected_connected_at must accompany it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly scopes the tool to owner-only controls on a LinkedIn conversation: sync, contact links, sharing, and CRM note publication. It lists the supported actions and their effects, so the resource and operations are identifiable. It stops short of naming sibling tools such as manage_linkedin_privacy or add_note, so differentiation is inferred rather than explicit.

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 gives explicit usage context: 'When to use: Control private sync, contact links, sharing or note publication' plus a concrete example. It also states a strong negative guideline: 'never send messages or auto-share' and 'Never infer consent from message text.' It does not explicitly route the agent away from sibling tools for adjacent tasks, so the alternative-selection guidance is incomplete.

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