Campaigns / MCP

Save campaign sequence touches

Persist externally authored LinkedIn sequence touches into the same Launchpad Messaging store used by the UI. This is deterministic, invokes no hosted model, records current brief, skill, table, evidence, fallback, and operation provenance, and leaves every touch in draft status.

tools/callDeterministic operation

Parameters

workspaceIdOptional · string
Optional with API-key auth. Inferred from the key.
briefIdRequired · string
See the input schema for this field.
tableIdRequired · string
See the input schema for this field.
workOrderIdOptional · string
Claimed external Writer work-order ID.
bundleIdOptional · string
Claimed external Writer execution-bundle ID.
touchesRequired · array
See the input schema for this field.
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "save-campaign-sequence-touches",
    "arguments": {
      "briefId": "00000000-0000-4000-8000-000000000000",
      "tableId": "00000000-0000-4000-8000-000000000000",
      "touches": [
        {
          "rowId": "00000000-0000-4000-8000-000000000000",
          "touchIndex": 0,
          "channel": "connection_note",
          "outputRole": "example",
          "body": "example",
          "framework": "example",
          "selectedBranch": "example",
          "evidence": {
            "fact": "example",
            "sourceUrl": "https://example.com"
          },
          "operations": [
            "example"
          ]
        }
      ]
    }
  }
}
Full input schema
Input schema
{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "description": "Optional with API-key auth. Inferred from the key."
    },
    "briefId": {
      "type": "string"
    },
    "tableId": {
      "type": "string"
    },
    "workOrderId": {
      "type": "string",
      "description": "Claimed external Writer work-order ID."
    },
    "bundleId": {
      "type": "string",
      "description": "Claimed external Writer execution-bundle ID."
    },
    "touches": {
      "type": "array",
      "minItems": 1,
      "maxItems": 500,
      "items": {
        "type": "object",
        "properties": {
          "rowId": {
            "type": "string"
          },
          "touchIndex": {
            "type": "integer",
            "minimum": 0,
            "maximum": 20
          },
          "channel": {
            "type": "string",
            "enum": [
              "connection_note",
              "linkedin_dm"
            ]
          },
          "outputRole": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "framework": {
            "type": "string"
          },
          "daysAfterPrevious": {
            "type": "integer",
            "minimum": 0
          },
          "gatedOnAccept": {
            "type": "boolean"
          },
          "selectedBranch": {
            "type": "string",
            "description": "Exact label from the brief messageDecisionTree."
          },
          "variables": {
            "type": "object",
            "additionalProperties": true
          },
          "evidence": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "fact": {
                "type": "string",
                "description": "Exact canonical research fact stored on the table row."
              },
              "sourceUrl": {
                "type": "string",
                "description": "Exact canonical research source URL stored on the table row."
              }
            },
            "required": [
              "fact",
              "sourceUrl"
            ],
            "additionalProperties": false
          },
          "fallbackReason": {
            "type": [
              "string",
              "null"
            ]
          },
          "requiredVariables": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "operations": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "rowId",
          "touchIndex",
          "channel",
          "outputRole",
          "body",
          "framework",
          "selectedBranch",
          "evidence",
          "operations"
        ]
      }
    }
  },
  "required": [
    "briefId",
    "tableId",
    "touches"
  ]
}
See this operation inCLI REST API TypeScript SDK
MCP reference | Pipeline v2 preview