Skip to main content
Glama

campaignstack_edit_signal_agent

Destructive

Create signal agents, update their account assignment, script or approval mode (approvalMode: whether what the agent drafts waits for a person), pause/resume them, replace their additive exclusions, or restore a previous agentScript version (restore_guidance, using a versionId from campaignstack_get_signal_agents include.guidanceHistory). On a create, omitted accountIds and actAccountIds default to the workspace's only LinkedIn account; with several, ask the person which accounts read the target (accountIds) and which send and act (actAccountIds). actAccountIds [] means collect without contacting anyone. Setting status to 'archived' runs the same permanent removal as campaignstack_delete_signal_agent and requires confirmed:true on that operation. Batch edits are bounded. Return one result per requested item, and report partial failures instead of describing the whole batch as successful.

Input Schema

NameRequiredDescriptionDefault
operationsYes
workspaceIdNoWorkspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.

Output Schema

NameRequiredDescriptionDefault
resultsNo
warningsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / operations / items / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "accountIds": {
      -        "description": "Reads with: accounts that watch the target (LinkedIn account IDs). Omit it to default to the workspace's only LinkedIn account that is ready; with several, the error lists them so you can ask the person.",
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "actAccountIds": {
      -        "description": "Acts with: accounts that contact the people found (LinkedIn account IDs). Omit it to default to the workspace's only LinkedIn account that is ready; with several, the error lists them so you can ask the person. An explicit [] stays empty: the agent collects without contacting anyone.",
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "approvalMode": {
      -        "description": "Whether what this workflow drafts waits for a person. manual_review: every message waits in the review queue. auto_when_confident: messages still wait, and the ones the confidence check rates as safe to send unchanged go out on their own once the workspace's calibration allows it (a daily cap applies, and booking confirmations, files, conversation turns and flagged drafts always wait). automatic: no review step at all. On a signal agent this also removes its review steps; on any other workflow, review steps already in the graph keep waiting, so remove them with campaignstack_edit_workflow_graph. Omit to keep the current mode; on create, omit to start from the owner's onboarding answer. Only a workspace owner or admin can set it. Set automatic only when the user asked for messages to go out unreviewed.",
      -        "enum": [
      -          "manual_review",
      -          "auto_when_confident",
      -          "automatic"
      -        ],
      -        "type": "string"
      -      },
      -      "mode": {
      -        "const": "create",
      -        "type": "string"
      -      },
      -      "name": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "publicReplyConfig": {
      -        "additionalProperties": {
      -          "type": "boolean"
      -        },
      -        "type": "object"
      -      },
      -      "silenceHours": {
      -        "type": "number"
      -      },
      -      "target": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "kind": {
      -                "const": "profile",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "type": "string"
      -              },
      -              "urn": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "urn"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "groupId": {
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "kind": {
      -                "const": "group",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "url",
      -              "groupId"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "activityId": {
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "kind": {
      -                "const": "post",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "url",
      -              "activityId"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "targetName": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "enum": [
      -          "profile_feed",
      -          "company_feed",
      -          "group_watch",
      -          "post_engagement"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "name",
      -      "type",
      -      "target",
      -      "targetName"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "accountIds": {
      -        "description": "Reads with: LinkedIn account IDs that watch the target. Omit to keep the current accounts.",
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "actAccountIds": {
      -        "description": "Acts with: LinkedIn account IDs that contact the people found. Omit to keep the current accounts; pass [] to stop contacting anyone while the agent keeps collecting.",
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "agentScript": {
      -        "type": "string"
      -      },
      -      "approvalMode": {
      -        "$ref": "#/properties/operations/items/anyOf/0/properties/approvalMode",
      -        "description": "Whether what this workflow drafts waits for a person. manual_review: every message waits in the review queue. auto_when_confident: messages still wait, and the ones the confidence check rates as safe to send unchanged go out on their own once the workspace's calibration allows it (a daily cap applies, and booking confirmations, files, conversation turns and flagged drafts always wait). automatic: no review step at all. On a signal agent this also removes its review steps; on any other workflow, review steps already in the graph keep waiting, so remove them with campaignstack_edit_workflow_graph. Omit to keep the current mode; on create, omit to start from the owner's onboarding answer. Only a workspace owner or admin can set it. Set automatic only when the user asked for messages to go out unreviewed."
      -      },
      -      "mode": {
      -        "const": "update",
      -        "type": "string"
      -      },
      -      "name": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "publicReplyConfig": {
      -        "additionalProperties": {
      -          "type": "boolean"
      -        },
      -        "type": "object"
      -      },
      -      "silenceHours": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "confirmed": {
      -        "description": "Required (must be true) when status is 'archived': archiving here runs the same permanent removal as campaignstack_delete_signal_agent. This permanently deletes a root record. Before calling it, name exactly what will be deleted, explain that it cannot be undone, and wait for an explicit yes.",
      -        "type": "boolean"
      -      },
      -      "mode": {
      -        "const": "set_status",
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "active",
      -          "paused",
      -          "archived"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId",
      -      "status"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "exclusions": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "config": {},
      -            "enabled": {
      -              "default": true,
      -              "type": "boolean"
      -            },
      -            "id": {
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "state": {},
      -            "type": {
      -              "minLength": 1,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "type"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 100,
      -        "type": "array"
      -      },
      -      "mode": {
      -        "const": "set_exclusions",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId",
      -      "exclusions"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "mode": {
      -        "const": "restore_guidance",
      -        "type": "string"
      -      },
      -      "versionId": {
      -        "description": "versionId of a previous agentScript version to restore.",
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "versionId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "accountIds": {
      +        "description": "Reads with: accounts that watch the target (LinkedIn account IDs). Omit it to default to the workspace's only LinkedIn account that is ready; with several, the error lists them so you can ask the person.",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "actAccountIds": {
      +        "description": "Acts with: accounts that contact the people found (LinkedIn account IDs). Omit it to default to the workspace's only LinkedIn account that is ready; with several, the error lists them so you can ask the person. An explicit [] stays empty: the agent collects without contacting anyone.",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "approvalMode": {
      +        "description": "Whether what this workflow drafts waits for a person. manual_review: every message waits in the review queue. auto_when_confident: messages still wait, and the ones the confidence check rates as safe to send unchanged go out on their own once the workspace's calibration allows it (a daily cap applies, and booking confirmations, files, conversation turns and flagged drafts always wait). automatic: no review step at all. On a signal agent this also removes its review steps; on any other workflow, review steps already in the graph keep waiting, so remove them with campaignstack_edit_workflow_graph. Omit to keep the current mode; on create, omit to start from the owner's onboarding answer. Only a workspace owner or admin can set it. Set automatic only when the user asked for messages to go out unreviewed.",
      +        "enum": [
      +          "manual_review",
      +          "auto_when_confident",
      +          "automatic"
      +        ],
      +        "type": "string"
      +      },
      +      "captureMode": {
      +        "description": "Post watchers only. all_commenters: a lead-magnet post, where every commenter asked for the resource, so each one gets a message asking whether it arrived. intent (default): only comments that show buying intent.",
      +        "enum": [
      +          "intent",
      +          "all_commenters"
      +        ],
      +        "type": "string"
      +      },
      +      "followUps": {
      +        "description": "Follow up if no reply: \"off\", 1 or 2 follow-ups, each drafted for review after 4 days of silence. Omit for the default: off for a lead-magnet post (captureMode all_commenters), 1 for every other agent.",
      +        "enum": [
      +          "off",
      +          1,
      +          2
      +        ],
      +        "type": [
      +          "string",
      +          "number"
      +        ]
      +      },
      +      "mode": {
      +        "const": "create",
      +        "type": "string"
      +      },
      +      "name": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "publicReplyConfig": {
      +        "additionalProperties": {
      +          "type": "boolean"
      +        },
      +        "type": "object"
      +      },
      +      "silenceHours": {
      +        "type": "number"
      +      },
      +      "target": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "kind": {
      +                "const": "profile",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "type": "string"
      +              },
      +              "urn": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "urn"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "groupId": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "kind": {
      +                "const": "group",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "url",
      +              "groupId"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "activityId": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "kind": {
      +                "const": "post",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "url",
      +              "activityId"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "targetName": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "enum": [
      +          "profile_feed",
      +          "company_feed",
      +          "group_watch",
      +          "post_engagement"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "name",
      +      "type",
      +      "target",
      +      "targetName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "accountIds": {
      +        "description": "Reads with: LinkedIn account IDs that watch the target. Omit to keep the current accounts.",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "actAccountIds": {
      +        "description": "Acts with: LinkedIn account IDs that contact the people found. Omit to keep the current accounts; pass [] to stop contacting anyone while the agent keeps collecting.",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "agentScript": {
      +        "type": "string"
      +      },
      +      "approvalMode": {
      +        "$ref": "#/properties/operations/items/anyOf/0/properties/approvalMode",
      +        "description": "Whether what this workflow drafts waits for a person. manual_review: every message waits in the review queue. auto_when_confident: messages still wait, and the ones the confidence check rates as safe to send unchanged go out on their own once the workspace's calibration allows it (a daily cap applies, and booking confirmations, files, conversation turns and flagged drafts always wait). automatic: no review step at all. On a signal agent this also removes its review steps; on any other workflow, review steps already in the graph keep waiting, so remove them with campaignstack_edit_workflow_graph. Omit to keep the current mode; on create, omit to start from the owner's onboarding answer. Only a workspace owner or admin can set it. Set automatic only when the user asked for messages to go out unreviewed."
      +      },
      +      "followUpAfterHours": {
      +        "description": "Hours of silence before each follow-up (default 96). It must leave room inside silenceHours, so it is shortened when it does not fit.",
      +        "maximum": 720,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "followUps": {
      +        "$ref": "#/properties/operations/items/anyOf/0/properties/followUps",
      +        "description": "Follow up if no reply: \"off\", 1 or 2. Omit to keep the current setting. Applies to people who reach the conversation step from now on."
      +      },
      +      "mode": {
      +        "const": "update",
      +        "type": "string"
      +      },
      +      "name": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "publicReplyConfig": {
      +        "additionalProperties": {
      +          "type": "boolean"
      +        },
      +        "type": "object"
      +      },
      +      "silenceHours": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "confirmed": {
      +        "description": "Required (must be true) when status is 'archived': archiving here runs the same permanent removal as campaignstack_delete_signal_agent. This permanently deletes a root record. Before calling it, name exactly what will be deleted, explain that it cannot be undone, and wait for an explicit yes.",
      +        "type": "boolean"
      +      },
      +      "mode": {
      +        "const": "set_status",
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "active",
      +          "paused",
      +          "archived"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId",
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "exclusions": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "config": {},
      +            "enabled": {
      +              "default": true,
      +              "type": "boolean"
      +            },
      +            "id": {
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "state": {},
      +            "type": {
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "type"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 100,
      +        "type": "array"
      +      },
      +      "mode": {
      +        "const": "set_exclusions",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId",
      +      "exclusions"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "mode": {
      +        "const": "restore_guidance",
      +        "type": "string"
      +      },
      +      "versionId": {
      +        "description": "versionId of a previous agentScript version to restore.",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "versionId"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / operations / items / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "accountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "actAccountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "approvalMode": {
      -        "description": "Whether what this workflow drafts waits for a person. manual_review: every message waits in the review queue. auto_when_confident: messages still wait, and the ones the confidence check rates as safe to send unchanged go out on their own once the workspace's calibration allows it (a daily cap applies, and booking confirmations, files, conversation turns and flagged drafts always wait). automatic: no review step at all. On a signal agent this also removes its review steps; on any other workflow, review steps already in the graph keep waiting, so remove them with campaignstack_edit_workflow_graph. Omit to keep the current mode; on create, omit to start from the owner's onboarding answer. Only a workspace owner or admin can set it. Set automatic only when the user asked for messages to go out unreviewed.",
      -        "enum": [
      -          "manual_review",
      -          "auto_when_confident",
      -          "automatic"
      -        ],
      -        "type": "string"
      -      },
      -      "mode": {
      -        "const": "create",
      -        "type": "string"
      -      },
      -      "name": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "publicReplyConfig": {
      -        "additionalProperties": {
      -          "type": "boolean"
      -        },
      -        "type": "object"
      -      },
      -      "silenceHours": {
      -        "type": "number"
      -      },
      -      "target": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "kind": {
      -                "const": "profile",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "type": "string"
      -              },
      -              "urn": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "urn"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "groupId": {
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "kind": {
      -                "const": "group",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "url",
      -              "groupId"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "activityId": {
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "kind": {
      -                "const": "post",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "url",
      -              "activityId"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "targetName": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "enum": [
      -          "profile_feed",
      -          "company_feed",
      -          "group_watch",
      -          "post_engagement"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "name",
      -      "type",
      -      "target",
      -      "targetName",
      -      "accountIds",
      -      "actAccountIds"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "accountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "actAccountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "agentScript": {
      -        "type": "string"
      -      },
      -      "approvalMode": {
      -        "$ref": "#/properties/operations/items/anyOf/0/properties/approvalMode",
      -        "description": "Whether what this workflow drafts waits for a person. manual_review: every message waits in the review queue. auto_when_confident: messages still wait, and the ones the confidence check rates as safe to send unchanged go out on their own once the workspace's calibration allows it (a daily cap applies, and booking confirmations, files, conversation turns and flagged drafts always wait). automatic: no review step at all. On a signal agent this also removes its review steps; on any other workflow, review steps already in the graph keep waiting, so remove them with campaignstack_edit_workflow_graph. Omit to keep the current mode; on create, omit to start from the owner's onboarding answer. Only a workspace owner or admin can set it. Set automatic only when the user asked for messages to go out unreviewed."
      -      },
      -      "mode": {
      -        "const": "update",
      -        "type": "string"
      -      },
      -      "name": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "publicReplyConfig": {
      -        "additionalProperties": {
      -          "type": "boolean"
      -        },
      -        "type": "object"
      -      },
      -      "silenceHours": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "confirmed": {
      -        "description": "Required (must be true) when status is 'archived': archiving here runs the same permanent removal as campaignstack_delete_signal_agent. This permanently deletes a root record. Before calling it, name exactly what will be deleted, explain that it cannot be undone, and wait for an explicit yes.",
      -        "type": "boolean"
      -      },
      -      "mode": {
      -        "const": "set_status",
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "active",
      -          "paused",
      -          "archived"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId",
      -      "status"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "exclusions": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "config": {},
      -            "enabled": {
      -              "default": true,
      -              "type": "boolean"
      -            },
      -            "id": {
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "state": {},
      -            "type": {
      -              "minLength": 1,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "type"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 100,
      -        "type": "array"
      -      },
      -      "mode": {
      -        "const": "set_exclusions",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId",
      -      "exclusions"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "mode": {
      -        "const": "restore_guidance",
      -        "type": "string"
      -      },
      -      "versionId": {
      -        "description": "versionId of a previous agentScript version to restore.",
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "versionId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "accountIds": {
      +        "description": "Reads with: accounts that watch the target (LinkedIn account IDs). Omit it to default to the workspace's only LinkedIn account that is ready; with several, the error lists them so you can ask the person.",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "actAccountIds": {
      +        "description": "Acts with: accounts that contact the people found (LinkedIn account IDs). Omit it to default to the workspace's only LinkedIn account that is ready; with several, the error lists them so you can ask the person. An explicit [] stays empty: the agent collects without contacting anyone.",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "approvalMode": {
      +        "description": "Whether what this workflow drafts waits for a person. manual_review: every message waits in the review queue. auto_when_confident: messages still wait, and the ones the confidence check rates as safe to send unchanged go out on their own once the workspace's calibration allows it (a daily cap applies, and booking confirmations, files, conversation turns and flagged drafts always wait). automatic: no review step at all. On a signal agent this also removes its review steps; on any other workflow, review steps already in the graph keep waiting, so remove them with campaignstack_edit_workflow_graph. Omit to keep the current mode; on create, omit to start from the owner's onboarding answer. Only a workspace owner or admin can set it. Set automatic only when the user asked for messages to go out unreviewed.",
      +        "enum": [
      +          "manual_review",
      +          "auto_when_confident",
      +          "automatic"
      +        ],
      +        "type": "string"
      +      },
      +      "mode": {
      +        "const": "create",
      +        "type": "string"
      +      },
      +      "name": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "publicReplyConfig": {
      +        "additionalProperties": {
      +          "type": "boolean"
      +        },
      +        "type": "object"
      +      },
      +      "silenceHours": {
      +        "type": "number"
      +      },
      +      "target": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "kind": {
      +                "const": "profile",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "type": "string"
      +              },
      +              "urn": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "urn"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "groupId": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "kind": {
      +                "const": "group",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "url",
      +              "groupId"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "activityId": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "kind": {
      +                "const": "post",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "url",
      +              "activityId"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "targetName": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "enum": [
      +          "profile_feed",
      +          "company_feed",
      +          "group_watch",
      +          "post_engagement"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "name",
      +      "type",
      +      "target",
      +      "targetName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "accountIds": {
      +        "description": "Reads with: LinkedIn account IDs that watch the target. Omit to keep the current accounts.",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "actAccountIds": {
      +        "description": "Acts with: LinkedIn account IDs that contact the people found. Omit to keep the current accounts; pass [] to stop contacting anyone while the agent keeps collecting.",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "agentScript": {
      +        "type": "string"
      +      },
      +      "approvalMode": {
      +        "$ref": "#/properties/operations/items/anyOf/0/properties/approvalMode",
      +        "description": "Whether what this workflow drafts waits for a person. manual_review: every message waits in the review queue. auto_when_confident: messages still wait, and the ones the confidence check rates as safe to send unchanged go out on their own once the workspace's calibration allows it (a daily cap applies, and booking confirmations, files, conversation turns and flagged drafts always wait). automatic: no review step at all. On a signal agent this also removes its review steps; on any other workflow, review steps already in the graph keep waiting, so remove them with campaignstack_edit_workflow_graph. Omit to keep the current mode; on create, omit to start from the owner's onboarding answer. Only a workspace owner or admin can set it. Set automatic only when the user asked for messages to go out unreviewed."
      +      },
      +      "mode": {
      +        "const": "update",
      +        "type": "string"
      +      },
      +      "name": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "publicReplyConfig": {
      +        "additionalProperties": {
      +          "type": "boolean"
      +        },
      +        "type": "object"
      +      },
      +      "silenceHours": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "confirmed": {
      +        "description": "Required (must be true) when status is 'archived': archiving here runs the same permanent removal as campaignstack_delete_signal_agent. This permanently deletes a root record. Before calling it, name exactly what will be deleted, explain that it cannot be undone, and wait for an explicit yes.",
      +        "type": "boolean"
      +      },
      +      "mode": {
      +        "const": "set_status",
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "active",
      +          "paused",
      +          "archived"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId",
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "exclusions": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "config": {},
      +            "enabled": {
      +              "default": true,
      +              "type": "boolean"
      +            },
      +            "id": {
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "state": {},
      +            "type": {
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "type"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 100,
      +        "type": "array"
      +      },
      +      "mode": {
      +        "const": "set_exclusions",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId",
      +      "exclusions"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "mode": {
      +        "const": "restore_guidance",
      +        "type": "string"
      +      },
      +      "versionId": {
      +        "description": "versionId of a previous agentScript version to restore.",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "versionId"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / operations / items / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "accountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "actAccountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "mode": {
      -        "const": "create",
      -        "type": "string"
      -      },
      -      "name": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "publicReplyConfig": {
      -        "additionalProperties": {
      -          "type": "boolean"
      -        },
      -        "type": "object"
      -      },
      -      "responseMode": {
      -        "enum": [
      -          "auto_send",
      -          "review_first"
      -        ],
      -        "type": "string"
      -      },
      -      "silenceHours": {
      -        "type": "number"
      -      },
      -      "target": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "kind": {
      -                "const": "profile",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "type": "string"
      -              },
      -              "urn": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "urn"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "groupId": {
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "kind": {
      -                "const": "group",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "url",
      -              "groupId"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "activityId": {
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "kind": {
      -                "const": "post",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "url",
      -              "activityId"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "targetName": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "enum": [
      -          "profile_feed",
      -          "company_feed",
      -          "group_watch",
      -          "post_engagement"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "name",
      -      "type",
      -      "target",
      -      "targetName",
      -      "responseMode",
      -      "accountIds",
      -      "actAccountIds"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "accountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "actAccountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "agentScript": {
      -        "type": "string"
      -      },
      -      "mode": {
      -        "const": "update",
      -        "type": "string"
      -      },
      -      "name": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "publicReplyConfig": {
      -        "additionalProperties": {
      -          "type": "boolean"
      -        },
      -        "type": "object"
      -      },
      -      "responseMode": {
      -        "enum": [
      -          "auto_send",
      -          "review_first"
      -        ],
      -        "type": "string"
      -      },
      -      "silenceHours": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "confirmed": {
      -        "description": "Required (must be true) when status is 'archived': archiving here runs the same permanent removal as campaignstack_delete_signal_agent. This permanently deletes a root record. Before calling it, name exactly what will be deleted, explain that it cannot be undone, and wait for an explicit yes.",
      -        "type": "boolean"
      -      },
      -      "mode": {
      -        "const": "set_status",
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "active",
      -          "paused",
      -          "archived"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId",
      -      "status"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "exclusions": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "config": {},
      -            "enabled": {
      -              "default": true,
      -              "type": "boolean"
      -            },
      -            "id": {
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "state": {},
      -            "type": {
      -              "minLength": 1,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "type"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 100,
      -        "type": "array"
      -      },
      -      "mode": {
      -        "const": "set_exclusions",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId",
      -      "exclusions"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "mode": {
      -        "const": "restore_guidance",
      -        "type": "string"
      -      },
      -      "versionId": {
      -        "description": "versionId of a previous agentScript version to restore.",
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "versionId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "accountIds": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "actAccountIds": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "approvalMode": {
      +        "description": "Whether what this workflow drafts waits for a person. manual_review: every message waits in the review queue. auto_when_confident: messages still wait, and the ones the confidence check rates as safe to send unchanged go out on their own once the workspace's calibration allows it (a daily cap applies, and booking confirmations, files, conversation turns and flagged drafts always wait). automatic: no review step at all. On a signal agent this also removes its review steps; on any other workflow, review steps already in the graph keep waiting, so remove them with campaignstack_edit_workflow_graph. Omit to keep the current mode; on create, omit to start from the owner's onboarding answer. Only a workspace owner or admin can set it. Set automatic only when the user asked for messages to go out unreviewed.",
      +        "enum": [
      +          "manual_review",
      +          "auto_when_confident",
      +          "automatic"
      +        ],
      +        "type": "string"
      +      },
      +      "mode": {
      +        "const": "create",
      +        "type": "string"
      +      },
      +      "name": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "publicReplyConfig": {
      +        "additionalProperties": {
      +          "type": "boolean"
      +        },
      +        "type": "object"
      +      },
      +      "silenceHours": {
      +        "type": "number"
      +      },
      +      "target": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "kind": {
      +                "const": "profile",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "type": "string"
      +              },
      +              "urn": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "urn"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "groupId": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "kind": {
      +                "const": "group",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "url",
      +              "groupId"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "activityId": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "kind": {
      +                "const": "post",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "url",
      +              "activityId"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "targetName": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "enum": [
      +          "profile_feed",
      +          "company_feed",
      +          "group_watch",
      +          "post_engagement"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "name",
      +      "type",
      +      "target",
      +      "targetName",
      +      "accountIds",
      +      "actAccountIds"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "accountIds": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "actAccountIds": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "agentScript": {
      +        "type": "string"
      +      },
      +      "approvalMode": {
      +        "$ref": "#/properties/operations/items/anyOf/0/properties/approvalMode",
      +        "description": "Whether what this workflow drafts waits for a person. manual_review: every message waits in the review queue. auto_when_confident: messages still wait, and the ones the confidence check rates as safe to send unchanged go out on their own once the workspace's calibration allows it (a daily cap applies, and booking confirmations, files, conversation turns and flagged drafts always wait). automatic: no review step at all. On a signal agent this also removes its review steps; on any other workflow, review steps already in the graph keep waiting, so remove them with campaignstack_edit_workflow_graph. Omit to keep the current mode; on create, omit to start from the owner's onboarding answer. Only a workspace owner or admin can set it. Set automatic only when the user asked for messages to go out unreviewed."
      +      },
      +      "mode": {
      +        "const": "update",
      +        "type": "string"
      +      },
      +      "name": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "publicReplyConfig": {
      +        "additionalProperties": {
      +          "type": "boolean"
      +        },
      +        "type": "object"
      +      },
      +      "silenceHours": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "confirmed": {
      +        "description": "Required (must be true) when status is 'archived': archiving here runs the same permanent removal as campaignstack_delete_signal_agent. This permanently deletes a root record. Before calling it, name exactly what will be deleted, explain that it cannot be undone, and wait for an explicit yes.",
      +        "type": "boolean"
      +      },
      +      "mode": {
      +        "const": "set_status",
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "active",
      +          "paused",
      +          "archived"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId",
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "exclusions": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "config": {},
      +            "enabled": {
      +              "default": true,
      +              "type": "boolean"
      +            },
      +            "id": {
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "state": {},
      +            "type": {
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "type"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 100,
      +        "type": "array"
      +      },
      +      "mode": {
      +        "const": "set_exclusions",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId",
      +      "exclusions"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "mode": {
      +        "const": "restore_guidance",
      +        "type": "string"
      +      },
      +      "versionId": {
      +        "description": "versionId of a previous agentScript version to restore.",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "versionId"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / operations / items / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "accountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "actAccountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "mode": {
      -        "const": "create",
      -        "type": "string"
      -      },
      -      "name": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "publicReplyConfig": {
      -        "additionalProperties": {
      -          "type": "boolean"
      -        },
      -        "type": "object"
      -      },
      -      "responseMode": {
      -        "enum": [
      -          "auto_send",
      -          "review_first"
      -        ],
      -        "type": "string"
      -      },
      -      "silenceHours": {
      -        "type": "number"
      -      },
      -      "target": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "kind": {
      -                "const": "profile",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "type": "string"
      -              },
      -              "urn": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "urn"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "groupId": {
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "kind": {
      -                "const": "group",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "url",
      -              "groupId"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "activityId": {
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "kind": {
      -                "const": "post",
      -                "type": "string"
      -              },
      -              "platform": {
      -                "const": "linkedin",
      -                "type": "string"
      -              },
      -              "url": {
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "platform",
      -              "kind",
      -              "url",
      -              "activityId"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "targetName": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "enum": [
      -          "profile_feed",
      -          "company_feed",
      -          "group_watch",
      -          "post_engagement"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "name",
      -      "type",
      -      "target",
      -      "targetName",
      -      "responseMode",
      -      "accountIds",
      -      "actAccountIds"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "accountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "actAccountIds": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "type": "array"
      -      },
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "agentScript": {
      -        "type": "string"
      -      },
      -      "mode": {
      -        "const": "update",
      -        "type": "string"
      -      },
      -      "name": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "publicReplyConfig": {
      -        "additionalProperties": {
      -          "type": "boolean"
      -        },
      -        "type": "object"
      -      },
      -      "responseMode": {
      -        "enum": [
      -          "auto_send",
      -          "review_first"
      -        ],
      -        "type": "string"
      -      },
      -      "silenceHours": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "confirmDelete": {
      -        "description": "Required (must be true) when status is 'archived': archiving here runs the same permanent removal as campaignstack_delete_signal_agent. This permanently deletes a root record. Before calling it, name exactly what will be deleted, explain that it cannot be undone, and wait for an explicit yes.",
      -        "type": "boolean"
      -      },
      -      "mode": {
      -        "const": "set_status",
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "active",
      -          "paused",
      -          "archived"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId",
      -      "status"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "agentId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "exclusions": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "config": {},
      -            "enabled": {
      -              "default": true,
      -              "type": "boolean"
      -            },
      -            "id": {
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "state": {},
      -            "type": {
      -              "minLength": 1,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "type"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 100,
      -        "type": "array"
      -      },
      -      "mode": {
      -        "const": "set_exclusions",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "agentId",
      -      "exclusions"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "mode": {
      -        "const": "restore_guidance",
      -        "type": "string"
      -      },
      -      "versionId": {
      -        "description": "versionId of a previous agentScript version to restore.",
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "versionId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "accountIds": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "actAccountIds": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "mode": {
      +        "const": "create",
      +        "type": "string"
      +      },
      +      "name": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "publicReplyConfig": {
      +        "additionalProperties": {
      +          "type": "boolean"
      +        },
      +        "type": "object"
      +      },
      +      "responseMode": {
      +        "enum": [
      +          "auto_send",
      +          "review_first"
      +        ],
      +        "type": "string"
      +      },
      +      "silenceHours": {
      +        "type": "number"
      +      },
      +      "target": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "kind": {
      +                "const": "profile",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "type": "string"
      +              },
      +              "urn": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "urn"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "groupId": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "kind": {
      +                "const": "group",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "url",
      +              "groupId"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "activityId": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "kind": {
      +                "const": "post",
      +                "type": "string"
      +              },
      +              "platform": {
      +                "const": "linkedin",
      +                "type": "string"
      +              },
      +              "url": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "platform",
      +              "kind",
      +              "url",
      +              "activityId"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "targetName": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "enum": [
      +          "profile_feed",
      +          "company_feed",
      +          "group_watch",
      +          "post_engagement"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "name",
      +      "type",
      +      "target",
      +      "targetName",
      +      "responseMode",
      +      "accountIds",
      +      "actAccountIds"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "accountIds": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "actAccountIds": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "type": "array"
      +      },
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "agentScript": {
      +        "type": "string"
      +      },
      +      "mode": {
      +        "const": "update",
      +        "type": "string"
      +      },
      +      "name": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "publicReplyConfig": {
      +        "additionalProperties": {
      +          "type": "boolean"
      +        },
      +        "type": "object"
      +      },
      +      "responseMode": {
      +        "enum": [
      +          "auto_send",
      +          "review_first"
      +        ],
      +        "type": "string"
      +      },
      +      "silenceHours": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "confirmed": {
      +        "description": "Required (must be true) when status is 'archived': archiving here runs the same permanent removal as campaignstack_delete_signal_agent. This permanently deletes a root record. Before calling it, name exactly what will be deleted, explain that it cannot be undone, and wait for an explicit yes.",
      +        "type": "boolean"
      +      },
      +      "mode": {
      +        "const": "set_status",
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "active",
      +          "paused",
      +          "archived"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId",
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "agentId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "exclusions": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "config": {},
      +            "enabled": {
      +              "default": true,
      +              "type": "boolean"
      +            },
      +            "id": {
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "state": {},
      +            "type": {
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "type"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 100,
      +        "type": "array"
      +      },
      +      "mode": {
      +        "const": "set_exclusions",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "agentId",
      +      "exclusions"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "mode": {
      +        "const": "restore_guidance",
      +        "type": "string"
      +      },
      +      "versionId": {
      +        "description": "versionId of a previous agentScript version to restore.",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "versionId"
      +    ],
      +    "type": "object"
      +  }
      +]
  5. Changed1 schema field changed
    • changedInput schema / properties / workspaceId / description
      Previous value: -"Workspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach."New value: +"Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too."
  6. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only give coarse hints (destructive, not idempotent, not read-only). The description adds real behavioral context: archived status performs the same permanent removal as delete and needs confirmed:true, actAccountIds [] means collect without contacting, batch edits are bounded, and per-item results with partial-failure reporting rather than claiming whole-batch success.

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-loaded with the operation list, then defaults and constraints; nearly every sentence carries actionable content such as confirmed:true, batch bounding, and partial-failure reporting. It is dense and somewhat long, with a little overlap against the schema's approvalMode text, but not padded.

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?

Given an output schema exists, return values need not be explained, yet the description still notes one result per requested item and partial-failure reporting. Combined with defaults, deletion safety, and admin-only restrictions, an agent has everything needed to invoke the batch correctly.

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?

The description adds the account-defaulting rule (omitted accountIds/actAccountIds fall back to the workspace's only ready LinkedIn account, otherwise an error listing them) and the read-vs-act account distinction. However, much of this is already restated in the schema's own field descriptions, so the marginal lift over the schema is moderate rather than large.

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 specific verbs and resources (create/update/pause/restore signal agents, replace exclusions) and enumerates the operations the batch tool supports. It explicitly distinguishes itself from campaignstack_delete_signal_agent (archiving behaves the same) and campaignstack_get_signal_agents (source of versionId/history), so an agent can route correctly without opening schemas.

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 explicit when-to-use guidance: on create with multiple accounts, ask the person which accounts read vs. act; set approvalMode automatic only when the user asked for unreviewed messages; restore_guidance requires a versionId from campaignstack_get_signal_agents include.guidanceHistory. It also names alternatives and the conditions that select them.

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