Skip to main content
Glama

100Hires - AI ATS & Recruitment Software

hires_create_nurture_campaign

Create a nurture campaign with ordered steps (email, sms, voicemail, move_to_next_stage, assign_tag, assign_task), optionally triggered by a workflow stage.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
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
company_idNo
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
    • removedInput schema / properties / company_id / description
      Removed value: -"Target company ID (optional if API key is scoped to one company)"
    • changedInput schema / properties / delay_time / description
      Previous value: -"Delay time in seconds"New value: +"Delay before the first step, seconds (max 86400); wins over relative_days + relative_time if both are sent"
    • changedInput schema / properties / relative_days / description
      Previous value: -"Relative days for schedule"New value: +"Days after the trigger for the first step; use with relative_time"
    • changedInput schema / properties / relative_time / description
      Previous value: -"Relative time for schedule (seconds from midnight)"New value: +"Time of day for the first step, seconds from midnight"
    • changedInput schema / properties / response_move_to_stage_id / description
      Previous value: -"Stage to move candidate to when they reply"New value: +"Stage to move a candidate to when they reply"
    • changedInput schema / properties / send_to_all / description
      Previous value: -"Send to all candidates or only new ones (default false)"New value: +"Send to all candidates in the stage, not only new ones (default false)"
    • changedInput schema / properties / stage_id / description
      Previous value: -"Stage ID that triggers the campaign"New value: +"Stage that triggers the campaign"
    • changedInput schema / properties / steps / description
      Previous value: -"Campaign steps (at least one required)"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: -"IANA timezone, 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 to bind the campaign to"New value: +"Workflow the campaign is bound to"
  2. First observed

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate the tool is not read-only (readOnlyHint: false) and not destructive (destructiveHint: false), so the description doesn't need to repeat that. It adds minimal behavioral context beyond the annotation, mentioning the ordered nature of steps and the optional trigger, but does not disclose side effects, prerequisites, or return behavior.

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?

The description is a single, front-loaded sentence that immediately identifies the action and key characteristics. Every word earns its place, with no filler or redundancy.

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?

Given the tool's complexity (nested steps array, 11 parameters, no output schema), the description is relatively thin. It conveys the core concept but does not explain return values, prerequisites, or the interplay of scheduling parameters. The comprehensive schema mitigates this, but for a creation tool of this complexity, more context would help an agent avoid missteps.

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?

Schema coverage is high (82%), so the baseline is 3. The description adds value by stating that steps are 'ordered' and listing the step types, which clarifies the array semantics beyond the schema's individual field descriptions. However, it does not explain the many optional top-level parameters (timezone, delay_time, etc.) or the required fields, relying on the schema to carry that load.

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

Purpose5/5

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

The description clearly states the tool creates a nurture campaign and enumerates the specific step types it supports, which distinguishes it from sibling tools like update, delete, and list. It also mentions the optional workflow-stage trigger, making the purpose unambiguous.

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 description implies this is the creation variant by using 'Create' and listing step types, which is clear enough for an agent to select it over update/delete/list. However, it does not explicitly state when not to use it or name alternatives, leaving the usage guidance to be inferred from the tool name and context.

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.