AI Craft
AI-powered message, note, comment, and follow-up writing with brand voice.
Tools (5)
Section titled “Tools (5)”craft_message
Section titled “craft_message”Full name: campaignstack_craft_message
Draft a personalized LinkedIn first message using full campaign context; it does not send anything. Call this when the user asks for a first-touch message to a specific lead. Show the draft for approval, then send it with campaignstack_send_message (connected lead) or campaignstack_send_inmail (not connected). Use only for first messages; for follow-ups, use campaignstack_craft_followup instead.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
leadId | string | Yes | — | (min length: 1) |
campaignId | string | No | — | |
workspaceId | string | No | — | 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. |
workflowId | string | No | — | Workflow the craft belongs to. Used to resolve signal-agent playbooks. Injected automatically for runner agents. |
instructions | string | No | — | |
messageTemplate | string | No | — |
craft_note
Section titled “craft_note”Full name: campaignstack_craft_note
Draft a personalized LinkedIn connection note (max 300 characters); it does not send the connection request. Call this when the user asks for a note for a connection request. Show it to the user, then pass it as the note argument to campaignstack_send_connection_request. For first messages after connecting, use campaignstack_craft_message instead.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
leadId | string | Yes | — | (min length: 1) |
campaignId | string | No | — | |
workspaceId | string | No | — | 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. |
workflowId | string | No | — | Workflow the craft belongs to. Used to resolve signal-agent playbooks. Injected automatically for runner agents. |
instructions | string | No | — |
craft_comment
Section titled “craft_comment”Full name: campaignstack_craft_comment
Draft a relevant, rapport-building comment on a lead’s LinkedIn post; it does not post the comment. Call this when the user asks for a comment on a specific lead’s post. Show the draft to the user, then post it with campaignstack_comment_on_post; for a reply to someone else’s comment, use campaignstack_reply_to_comment instead.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
leadId | string | Yes | — | (min length: 1) |
campaignId | string | No | — | |
workspaceId | string | No | — | 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. |
workflowId | string | No | — | Workflow the craft belongs to. Used to resolve signal-agent playbooks. Injected automatically for runner agents. |
postContent | string | Yes | — | (min length: 1) |
instructions | string | No | — |
craft_followup
Section titled “craft_followup”Full name: campaignstack_craft_followup
Draft a contextual follow-up message that accounts for the full conversation history; it does not send the message. Call this when the user asks for a reply or a follow-up nudge in an existing LinkedIn thread. The thread is read from the stored conversation, plus any new lead messages you pass (see conversationMessages). Also detects lead intent (interested, not_interested, asking_for_info, scheduling_call, other). Show the draft to the user, then send it with campaignstack_send_message. For first messages, use campaignstack_craft_message instead.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
leadId | string | Yes | — | (min length: 1) |
leadSource | global | private | No | — | Optional. Leave it out unless you know which lead store the id came from: the server derives it from the leadId and ignores a value that disagrees. |
campaignId | string | No | — | |
workspaceId | string | No | — | 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. |
workflowId | string | No | — | Workflow the craft belongs to. Used to resolve signal-agent playbooks. Injected automatically for runner agents. |
accountId | string | Yes | — | (min length: 1) |
conversationMessages | object[] | No | — | Optional. Messages the LEAD sent that you read on screen and the platform may not have synced yet. The thread itself is read from the stored conversation. Never include your own messages: every message this account sent already has a row, and a self entry is ignored. |
instructions | string | No | — |
reply_to_comment
Section titled “reply_to_comment”Full name: campaignstack_reply_to_comment
Draft a contextual threaded reply to a comment on a LinkedIn post; it does not post the reply. Call this when the user asks for a reply to a specific comment. When addDmHint is true (a DM is also being sent), the reply includes a ‘Sent you a DM!’ nudge. Nothing is posted here: after showing the draft to the user, the runner agent types the returned replyText on the post via browser_* tools; there is no separate send tool for this one.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
leadId | string | Yes | — | (min length: 1) |
campaignId | string | No | — | |
workspaceId | string | No | — | 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. |
workflowId | string | No | — | Workflow the craft belongs to. Used to resolve signal-agent playbooks. Injected automatically for runner agents. |
commentText | string | Yes | — | (min length: 1) |
postContent | string | Yes | — | (min length: 1) |
addDmHint | boolean | No | — | |
instructions | string | No | — |