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.
Updates an existing sequence blueprint in the authenticated MCP workspace. Send at least one of name, steps, or config.
| 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.
{
"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.