> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kalent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# update_sequence_blueprint

> Update a sequence blueprint name, steps, or configuration.

Updates an existing sequence blueprint in the authenticated MCP workspace. Send at least one of `name`, `steps`, or `config`.

## Input

| Parameter     | Type   | Required | Description                                                     |
| ------------- | ------ | -------- | --------------------------------------------------------------- |
| `blueprintId` | string | Yes      | Sequence blueprint to update.                                   |
| `name`        | string | No       | New display name for the blueprint.                             |
| `steps`       | array  | No       | Ordered outreach steps. Sending `steps` replaces the full list. |
| `config`      | object | No       | Optional sequence-level configuration.                          |

## Step shape

Each item in `steps` must include:

| Field                        | Type                                              | Required          | Description                                                 |
| ---------------------------- | ------------------------------------------------- | ----------------- | ----------------------------------------------------------- |
| `id`                         | string                                            | Yes               | Stable step id, unique within the blueprint.                |
| `name`                       | string                                            | Yes               | Step label.                                                 |
| `type`                       | `LINKEDIN` \| `WHATSAPP` \| `EMAIL` \| `SMS`      | Yes               | Outreach channel.                                           |
| `linkedInType`               | string                                            | For LinkedIn      | Required when `type` is `LINKEDIN`; not allowed otherwise.  |
| `content`                    | string                                            | Yes               | Message body.                                               |
| `subject`                    | string                                            | Email only        | Email subject.                                              |
| `temporalityType`            | `ASAP` \| `DELAYED` \| `AFTER_INVITATION_SETTLED` | Yes               | Scheduling rule.                                            |
| `delay`                      | object                                            | For delayed steps | Required when `temporalityType` is `DELAYED`.               |
| `delay.value`                | integer                                           | With `delay`      | Positive delay value.                                       |
| `delay.unit`                 | `day` \| `minute` \| `second`                     | With `delay`      | Delay unit.                                                 |
| `contentSource`              | `manual` \| `suggestedByKalent`                   | No                | Message origin.                                             |
| `policy.skipStepIfNoContact` | boolean                                           | No                | Skip if the required contact is missing.                    |
| `policy.autoValidateAIDraft` | boolean                                           | No                | Automatically validate AI-generated drafts.                 |
| `policy.inviteTimeoutDays`   | integer                                           | No                | Positive number of days for invite-related follow-up logic. |

Allowed `linkedInType` values are `LINKEDIN_INVITATION`, `LINKEDIN_INVITATION_WITH_MESSAGE`, `LINKEDIN_MESSAGE`, and `LINKEDIN_INMAIL`.

Only one invite step is allowed per blueprint.

## Supported template variables

Only these variables are supported in `content` and `subject`:

| Variable                   | Meaning                     |
| -------------------------- | --------------------------- |
| `{{firstname}}`            | Candidate first name        |
| `{{lastname}}`             | Candidate last name         |
| `{{candidateJobTitle}}`    | Candidate current job title |
| `{{candidateCompanyName}}` | Candidate current company   |
| `{{candidateLocation}}`    | Candidate location          |
| `{{sourcingJobTitle}}`     | Sourcing target job title   |
| `{{sourcingLocation}}`     | Sourcing target location    |
| `{{recruiterFirstname}}`   | Recruiter first name        |
| `{{recruiterLastname}}`    | Recruiter last name         |

Do not invent variables. Unknown variables such as `{{firstName}}`, `{{company}}`, or `{{job}}` are rejected.

Do not use unresolved bracket placeholders such as `[company]`, `[specific project or stack]`, `[one-pager link]`, or `[1 detail to add]` in `content` or `subject`. Replace them with real text, remove that part of the sentence, or ask the user for the missing detail before calling `update_sequence_blueprint`.

## Example input

```json theme={null}
{
  "blueprintId": "BLUEPRINT_ID",
  "steps": [
    {
      "id": "step-1",
      "name": "LinkedIn invite",
      "type": "LINKEDIN",
      "linkedInType": "LINKEDIN_INVITATION_WITH_MESSAGE",
      "content": "Hi {{firstname}}, I came across your profile and wanted to connect.",
      "temporalityType": "ASAP",
      "contentSource": "manual"
    },
    {
      "id": "step-2",
      "name": "Email follow-up",
      "type": "EMAIL",
      "subject": "Quick follow-up",
      "content": "Hi {{firstname}}, would you be open to discussing the role?",
      "temporalityType": "DELAYED",
      "delay": { "value": 2, "unit": "day" },
      "policy": { "skipStepIfNoContact": true }
    }
  ]
}
```

## Output

JSON block with `success: true` and `data`: `blueprintId`, `name`, and `sourcingId`.

## Errors

`session not found`, `Not found`, or a human-readable validation message when the blueprint cannot be updated.
