Skip to main content
Glama

100Hires - AI ATS & Recruitment Software

hires_update_nurture_campaign

Destructive

Update a nurture campaign. Send the full steps list: existing steps with their id, removed steps with is_deleted=true.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
stepsYesExecuted in order. Each field names the step types that use it and whether it is required there.
titleYes
stage_idNoStage that triggers the campaign
timezoneNoIANA timezone, e.g. America/New_York
delay_timeNoDelay before the first step, seconds (max 86400); wins over relative_days + relative_time if both are sent
send_to_allNoSend to all candidates in the stage, not only new ones (default false)
workflow_idNoWorkflow the campaign is bound to
relative_daysNoDays after the trigger for the first step; use with relative_time
relative_timeNoTime of day for the first step, seconds from midnight
response_move_to_stage_idNoStage to move a candidate to when they reply

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / delay_time / description
      Previous value: -"Delay in minutes before the first step"New value: +"Delay before the first step, seconds (max 86400); wins over relative_days + relative_time if both are sent"
    • removedInput schema / properties / id / description
      Removed value: -"Nurture campaign ID"
    • changedInput schema / properties / relative_days / description
      Previous value: -"Number of days offset for scheduling"New value: +"Days after the trigger for the first step; use with relative_time"
    • changedInput schema / properties / relative_time / description
      Previous value: -"Time of day for scheduled sends"New value: +"Time of day for the first step, seconds from midnight"
    • changedInput schema / properties / response_move_to_stage_id / description
      Previous value: -"Stage ID to move candidates to when they respond"New value: +"Stage to move a candidate to when they reply"
    • changedInput schema / properties / send_to_all / description
      Previous value: -"Whether to send to all candidates or only new ones"New value: +"Send to all candidates in the stage, not only new ones (default false)"
    • changedInput schema / properties / stage_id / description
      Previous value: -"Pipeline stage ID that triggers the campaign"New value: +"Stage that triggers the campaign"
    • changedInput schema / properties / steps / description
      Previous value: -"All steps -- mark removed steps with is_deleted=true"New value: +"Executed in order. Each field names the step types that use it and whether it is required there."
    • removedInput schema / properties / steps / items / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "delay_days": {
      -        "description": "Days to wait before executing this step",
      -        "minimum": 0,
      -        "type": "number"
      -      },
      -      "id": {
      -        "description": "Step ID (required when updating an existing step)",
      -        "type": "number"
      -      },
      -      "is_deleted": {
      -        "description": "Set true to remove this step during update",
      -        "type": "boolean"
      -      },
      -      "is_new_thread": {
      -        "description": "Send as new email thread",
      -        "type": "boolean"
      -      },
      -      "is_send_by_carousel": {
      -        "description": "Send by carousel rotation",
      -        "type": "boolean"
      -      },
      -      "schedule_id": {
      -        "description": "Sending schedule ID",
      -        "type": "number"
      -      },
      -      "send_condition": {
      -        "description": "Condition for sending this step",
      -        "enum": [
      -          "if_no_reply",
      -          "if_no_reply_but_opened"
      -        ],
      -        "type": "string"
      -      },
      -      "sender": {
      -        "additionalProperties": false,
      -        "description": "Email sender",
      -        "properties": {
      -          "id": {
      -            "description": "Sender ID",
      -            "type": "number"
      -          },
      -          "type": {
      -            "description": "Sender type: \"account\" or \"user\"",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "type",
      -          "id"
      -        ],
      -        "type": "object"
      -      },
      -      "template_id": {
      -        "description": "Email template ID",
      -        "type": "number"
      -      },
      -      "type": {
      -        "const": "email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "delay_days",
      -      "send_condition",
      -      "type",
      -      "sender",
      -      "template_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "delay_days": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
      -      },
      -      "id": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
      -      },
      -      "is_deleted": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
      -      },
      -      "is_send_by_carousel": {
      -        "description": "Send by carousel rotation",
      -        "type": "boolean"
      -      },
      -      "schedule_id": {
      -        "description": "Sending schedule ID",
      -        "type": "number"
      -      },
      -      "send_condition": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
      -      },
      -      "sender_user_id": {
      -        "description": "Sender user ID",
      -        "type": "number"
      -      },
      -      "template_id": {
      -        "description": "SMS template ID",
      -        "type": "number"
      -      },
      -      "type": {
      -        "const": "sms",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "delay_days",
      -      "send_condition",
      -      "type",
      -      "sender_user_id",
      -      "template_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "attachment_uuid": {
      -        "description": "Voicemail audio file UUID. Reuse an existing voicemail step's `attachment_uuid`, or upload a new audio file through `hires_upload_attachment` with category `voicemail` and use the returned `uuid`.",
      -        "format": "uuid",
      -        "type": "string"
      -      },
      -      "delay_days": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
      -      },
      -      "id": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
      -      },
      -      "is_deleted": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
      -      },
      -      "schedule_id": {
      -        "description": "Sending schedule ID",
      -        "type": "number"
      -      },
      -      "send_condition": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
      -      },
      -      "type": {
      -        "const": "voicemail",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "delay_days",
      -      "send_condition",
      -      "type",
      -      "attachment_uuid"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "delay_days": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
      -      },
      -      "id": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
      -      },
      -      "is_deleted": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
      -      },
      -      "send_condition": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
      -      },
      -      "stage_id": {
      -        "description": "Target pipeline stage ID",
      -        "type": "number"
      -      },
      -      "type": {
      -        "const": "move_to_next_stage",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "delay_days",
      -      "send_condition",
      -      "type",
      -      "stage_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "delay_days": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
      -      },
      -      "id": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
      -      },
      -      "is_deleted": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
      -      },
      -      "send_condition": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
      -      },
      -      "tag_id": {
      -        "description": "Tag ID to assign",
      -        "type": "number"
      -      },
      -      "type": {
      -        "const": "assign_tag",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "delay_days",
      -      "send_condition",
      -      "type",
      -      "tag_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "assignees": {
      -        "description": "Assignee user IDs",
      -        "items": {
      -          "type": "number"
      -        },
      -        "type": "array"
      -      },
      -      "delay_days": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
      -      },
      -      "due_in_interval": {
      -        "description": "Due date interval, e.g. \"P3D\"",
      -        "type": "string"
      -      },
      -      "id": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
      -      },
      -      "is_deleted": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
      -      },
      -      "priority": {
      -        "description": "Task priority",
      -        "type": "number"
      -      },
      -      "send_condition": {
      -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
      -      },
      -      "task_template_id": {
      -        "description": "Task template ID",
      -        "type": "number"
      -      },
      -      "type": {
      -        "const": "assign_task",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "delay_days",
      -      "send_condition",
      -      "type",
      -      "task_template_id",
      -      "assignees"
      -    ],
      -    "type": "object"
      -  }
      -]
    • addedInput schema / properties / steps / items / properties
      Added value: +{
      +  "assignees": {
      +    "description": "assign_task (required): user ids",
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  "attachment_uuid": {
      +    "description": "voicemail (required): uuid from hires_upload_attachment, category voicemail",
      +    "format": "uuid",
      +    "type": "string"
      +  },
      +  "delay_days": {
      +    "description": "Days to wait before this step",
      +    "minimum": 0,
      +    "type": "number"
      +  },
      +  "due_in_interval": {
      +    "description": "assign_task: ISO-8601 duration, e.g. P3D",
      +    "type": "string"
      +  },
      +  "id": {
      +    "description": "Existing step id (update only)",
      +    "type": "number"
      +  },
      +  "is_deleted": {
      +    "description": "Update only: true removes the step",
      +    "type": "boolean"
      +  },
      +  "is_new_thread": {
      +    "description": "email: send as a new thread",
      +    "type": "boolean"
      +  },
      +  "is_send_by_carousel": {
      +    "description": "email, sms: rotate sender accounts",
      +    "type": "boolean"
      +  },
      +  "priority": {
      +    "description": "assign_task",
      +    "type": "number"
      +  },
      +  "schedule_id": {
      +    "description": "email, sms, voicemail: sending schedule id",
      +    "type": "number"
      +  },
      +  "send_condition": {
      +    "enum": [
      +      "if_no_reply",
      +      "if_no_reply_but_opened"
      +    ],
      +    "type": "string"
      +  },
      +  "sender": {
      +    "description": "email (required)",
      +    "properties": {
      +      "id": {
      +        "type": "number"
      +      },
      +      "type": {
      +        "description": "account or user",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "id"
      +    ],
      +    "type": "object"
      +  },
      +  "sender_user_id": {
      +    "description": "sms (required)",
      +    "type": "number"
      +  },
      +  "stage_id": {
      +    "description": "move_to_next_stage (required)",
      +    "type": "number"
      +  },
      +  "tag_id": {
      +    "description": "assign_tag (required)",
      +    "type": "number"
      +  },
      +  "task_template_id": {
      +    "description": "assign_task (required)",
      +    "type": "number"
      +  },
      +  "template_id": {
      +    "description": "email, sms (required)",
      +    "type": "number"
      +  },
      +  "type": {
      +    "enum": [
      +      "email",
      +      "sms",
      +      "voicemail",
      +      "move_to_next_stage",
      +      "assign_tag",
      +      "assign_task"
      +    ],
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / steps / items / required
      Added value: +[
      +  "type",
      +  "delay_days",
      +  "send_condition"
      +]
    • addedInput schema / properties / steps / items / type
      Added value: +"object"
    • changedInput schema / properties / timezone / description
      Previous value: -"Timezone for scheduled sends, e.g. \"America/New_York\""New value: +"IANA timezone, e.g. America/New_York"
    • removedInput schema / properties / title / description
      Removed value: -"Campaign name"
    • changedInput schema / properties / workflow_id / description
      Previous value: -"Workflow ID this campaign is associated with"New value: +"Workflow the campaign is bound to"
  2. First observed

TDQS

A3.7/5.0
Behavior3/5

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

The description explains how to mark steps as removed (is_deleted=true), which exposes the destructive aspect of the operation. However, it does not mention side effects like whether omitted steps are deleted, whether sent steps can be edited, or any irreversible consequences of updating.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, front-loaded sentences deliver the core action and the most important usage constraint. Every word adds value; no boilerplate or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential replacement semantics, but given the schema's field density and destructive annotation, an agent would benefit from knowing expected side effects (e.g., what happens to removed steps' history, whether all fields must be re-sent, and whether the update is atomic). These gaps are not covered by annotations or output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes fields such as id ('Existing step id (update only)') and the field-level requirements per step type with high coverage (~90%). The description adds the valuable 'send the full steps list' protocol, which is not in the schema, but beyond that it mostly restates what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Update a nurture campaign') and clearly conveys the tool's purpose. It does not explicitly contrast with sibling tools beyond the verb itself, but 'update' unambiguously distinguishes it from create/delete/get/list operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The key instruction—'Send the full steps list: existing steps with their id, removed steps with is_deleted=true'—is critical operational guidance that protects the agent from accidentally dropping steps. It implies a full-replacement semantic, though it doesn't spell out consequences of omitting fields or explicitly say when to prefer alternatives.

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.