Skip to main content
Glama

Yardstick ATS

Create a stage automation rule

yardstick_automation_rules_create

Create a named workflow automation rule with stage or step triggers, job scope, delivery mode, timing and a typed action. Authoring executes no action.

Input Schema

NameRequiredDescriptionDefault
nameNo
actionYes
job_idNo
timingNo
triggerYes
positionNo
conditionNo
is_activeNo
job_scopeNo
request_idNo
starter_keyNo
delivery_modeNo
idempotency_keyNo
job_posting_idsNo
needs_step_pickNo
pipeline_stage_idNo
pipeline_template_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / action / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "delivery": {
      -        "default": "auto_draft_review",
      -        "enum": [
      -          "auto_send",
      -          "auto_draft_review"
      -        ],
      -        "type": "string"
      -      },
      -      "task": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "assignee": {
      -            "anyOf": [
      -              {
      -                "const": "recruiter",
      -                "type": "string"
      -              },
      -              {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "user_id": {
      -                    "format": "uuid",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "user_id"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          },
      -          "due_in": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "unit": {
      -                "enum": [
      -                  "days",
      -                  "hours"
      -                ],
      -                "type": "string"
      -              },
      -              "value": {
      -                "maximum": 8760,
      -                "minimum": 1,
      -                "type": "integer"
      -              }
      -            },
      -            "required": [
      -              "value",
      -              "unit"
      -            ],
      -            "type": "object"
      -          },
      -          "title": {
      -            "maxLength": 500,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "assignee",
      -          "title"
      -        ],
      -        "type": "object"
      -      },
      -      "template_key": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "update_scheduling",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "task"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "assigned_role": {
      -        "enum": [
      -          "assigned_interviewer",
      -          "recruiter",
      -          "hiring_manager",
      -          "team_owner"
      -        ],
      -        "type": "string"
      -      },
      -      "assigned_user_email": {
      -        "maxLength": 320,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "context": {
      -        "additionalProperties": {},
      -        "type": "object"
      -      },
      -      "due_date": {
      -        "description": "Existing fixed deadline; use due_in for recurring rules.",
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "due_in": {
      -        "additionalProperties": false,
      -        "description": "Due this many days or hours after the rule fires; at most 365 days or 8760 hours. Cannot combine with due_date.",
      -        "properties": {
      -          "unit": {
      -            "enum": [
      -              "days",
      -              "hours"
      -            ],
      -            "type": "string"
      -          },
      -          "value": {
      -            "maximum": 8760,
      -            "minimum": 1,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "value",
      -          "unit"
      -        ],
      -        "type": "object"
      -      },
      -      "task_title": {
      -        "description": "Task title; {candidate} resolves to the candidate name.",
      -        "maxLength": 500,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "task_type": {
      -        "description": "Add to My Tasks: scorecard_review on feedback_submitted, or coordination for a general follow-up. Same-kind tasks are stacked.",
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "create_task",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "task_type",
      -      "task_title"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "email_type": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "acknowledgment",
      -              "advancement",
      -              "interview_confirmation",
      -              "rejection",
      -              "offer_declined",
      -              "offer",
      -              "hired",
      -              "withdrawn",
      -              "on_hold"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "const": "interview_cancellation",
      -            "type": "string"
      -          }
      -        ]
      -      },
      -      "template_key": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "format": {
      -        "enum": [
      -          "combined",
      -          "separate"
      -        ],
      -        "type": "string"
      -      },
      -      "interview_ids": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "template_key": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_scheduling_invitation",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "interview_ids",
      -      "format"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "template_key": {
      -        "enum": [
      -          "candidate_preparation",
      -          "onsite_logistics",
      -          "technical_preparation"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_preparation_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "audience": {
      -        "enum": [
      -          "assigned_interviewer",
      -          "recruiter",
      -          "hiring_manager",
      -          "team_owner",
      -          "offer_approver",
      -          "offer_requester"
      -        ],
      -        "type": "string"
      -      },
      -      "template": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_internal_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "audience",
      -      "template"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "type": {
      -        "const": "verify_calendar_event",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "delivery": {
      +        "default": "auto_draft_review",
      +        "enum": [
      +          "auto_send",
      +          "auto_draft_review"
      +        ],
      +        "type": "string"
      +      },
      +      "task": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "assignee": {
      +            "anyOf": [
      +              {
      +                "const": "recruiter",
      +                "type": "string"
      +              },
      +              {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "user_id": {
      +                    "format": "uuid",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "user_id"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "due_in": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "unit": {
      +                "enum": [
      +                  "days",
      +                  "hours"
      +                ],
      +                "type": "string"
      +              },
      +              "value": {
      +                "maximum": 8760,
      +                "minimum": 1,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "value",
      +              "unit"
      +            ],
      +            "type": "object"
      +          },
      +          "title": {
      +            "maxLength": 500,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "assignee",
      +          "title"
      +        ],
      +        "type": "object"
      +      },
      +      "template_key": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "update_scheduling",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "task"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "assigned_role": {
      +        "enum": [
      +          "assigned_interviewer",
      +          "recruiter",
      +          "hiring_manager",
      +          "team_owner"
      +        ],
      +        "type": "string"
      +      },
      +      "assigned_user_email": {
      +        "maxLength": 320,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "context": {
      +        "additionalProperties": {},
      +        "type": "object"
      +      },
      +      "due_date": {
      +        "description": "Existing fixed deadline; use due_in for recurring rules.",
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "due_in": {
      +        "additionalProperties": false,
      +        "description": "Due this many days or hours after the rule fires; at most 365 days or 8760 hours. Cannot combine with due_date.",
      +        "properties": {
      +          "unit": {
      +            "enum": [
      +              "days",
      +              "hours"
      +            ],
      +            "type": "string"
      +          },
      +          "value": {
      +            "maximum": 8760,
      +            "minimum": 1,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "value",
      +          "unit"
      +        ],
      +        "type": "object"
      +      },
      +      "task_title": {
      +        "description": "Task title; {candidate} resolves to the candidate name.",
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "task_type": {
      +        "description": "Add to My Tasks: scorecard_review on feedback_submitted, or coordination for a general follow-up. Same-kind tasks are stacked.",
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "create_task",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "task_type",
      +      "task_title"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "email_type": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "acknowledgment",
      +              "advancement",
      +              "interview_confirmation",
      +              "rejection",
      +              "offer_declined",
      +              "offer",
      +              "hired",
      +              "withdrawn",
      +              "on_hold"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "const": "interview_cancellation",
      +            "type": "string"
      +          }
      +        ]
      +      },
      +      "sender_type": {
      +        "description": "Who the email comes from: owner (the job recruiter) or job_hiring_manager. Omit to use the company's sender setting.",
      +        "enum": [
      +          "owner",
      +          "job_hiring_manager"
      +        ],
      +        "type": "string"
      +      },
      +      "template_key": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "format": {
      +        "enum": [
      +          "combined",
      +          "separate"
      +        ],
      +        "type": "string"
      +      },
      +      "interview_ids": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "template_key": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_scheduling_invitation",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "interview_ids",
      +      "format"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "template_key": {
      +        "enum": [
      +          "candidate_preparation",
      +          "onsite_logistics",
      +          "technical_preparation"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_preparation_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "audience": {
      +        "enum": [
      +          "assigned_interviewer",
      +          "recruiter",
      +          "hiring_manager",
      +          "team_owner",
      +          "offer_approver",
      +          "offer_requester"
      +        ],
      +        "type": "string"
      +      },
      +      "template": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_internal_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "audience",
      +      "template"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "type": {
      +        "const": "verify_calendar_event",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / trigger / enum
      Previous value: -[
      -  "stage_enter",
      -  "stage_exit",
      -  "step_ready",
      -  "booking_created",
      -  "booking_changed",
      -  "step_completed",
      -  "feedback_submitted",
      -  "all_scorecards_submitted",
      -  "interview_time",
      -  "assignment_changed",
      -  "booking_cancelled",
      -  "scorecard_due",
      -  "scorecard_overdue",
      -  "decision_brief_ready",
      -  "coaching_report_ready",
      -  "offer_approval_due",
      -  "offer_approval_escalation_due"
      -]New value: +[
      +  "stage_enter",
      +  "stage_exit",
      +  "step_ready",
      +  "booking_created",
      +  "booking_changed",
      +  "step_completed",
      +  "feedback_submitted",
      +  "all_scorecards_submitted",
      +  "hiring_manager_advanced",
      +  "hiring_manager_held",
      +  "interview_time",
      +  "assignment_changed",
      +  "booking_cancelled",
      +  "scorecard_due",
      +  "scorecard_overdue",
      +  "decision_brief_ready",
      +  "coaching_report_ready",
      +  "offer_approval_due",
      +  "offer_approval_escalation_due"
      +]
  3. Changed2 schema fields changed
    • changedInput schema / properties / action / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "assigned_role": {
      -        "enum": [
      -          "assigned_interviewer",
      -          "recruiter",
      -          "hiring_manager",
      -          "team_owner"
      -        ],
      -        "type": "string"
      -      },
      -      "assigned_user_email": {
      -        "maxLength": 320,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "context": {
      -        "additionalProperties": {},
      -        "type": "object"
      -      },
      -      "due_date": {
      -        "description": "Existing fixed deadline; use due_in for recurring rules.",
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "due_in": {
      -        "additionalProperties": false,
      -        "description": "Due this many days or hours after the rule fires; at most 365 days or 8760 hours. Cannot combine with due_date.",
      -        "properties": {
      -          "unit": {
      -            "enum": [
      -              "days",
      -              "hours"
      -            ],
      -            "type": "string"
      -          },
      -          "value": {
      -            "maximum": 8760,
      -            "minimum": 1,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "value",
      -          "unit"
      -        ],
      -        "type": "object"
      -      },
      -      "task_title": {
      -        "description": "Task title; {candidate} resolves to the candidate name.",
      -        "maxLength": 500,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "task_type": {
      -        "description": "Add to My Tasks: scorecard_review on feedback_submitted, or coordination for a general follow-up. Same-kind tasks are stacked.",
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "create_task",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "task_type",
      -      "task_title"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "email_type": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "acknowledgment",
      -              "advancement",
      -              "interview_confirmation",
      -              "rejection",
      -              "offer_declined",
      -              "offer",
      -              "hired",
      -              "withdrawn",
      -              "on_hold"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "const": "interview_cancellation",
      -            "type": "string"
      -          }
      -        ]
      -      },
      -      "template_key": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "format": {
      -        "enum": [
      -          "combined",
      -          "separate"
      -        ],
      -        "type": "string"
      -      },
      -      "interview_ids": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "template_key": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_scheduling_invitation",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "interview_ids",
      -      "format"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "template_key": {
      -        "enum": [
      -          "candidate_preparation",
      -          "onsite_logistics",
      -          "technical_preparation"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_preparation_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "audience": {
      -        "enum": [
      -          "assigned_interviewer",
      -          "recruiter",
      -          "hiring_manager",
      -          "team_owner",
      -          "offer_approver",
      -          "offer_requester"
      -        ],
      -        "type": "string"
      -      },
      -      "template": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_internal_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "audience",
      -      "template"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "type": {
      -        "const": "verify_calendar_event",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "delivery": {
      +        "default": "auto_draft_review",
      +        "enum": [
      +          "auto_send",
      +          "auto_draft_review"
      +        ],
      +        "type": "string"
      +      },
      +      "task": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "assignee": {
      +            "anyOf": [
      +              {
      +                "const": "recruiter",
      +                "type": "string"
      +              },
      +              {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "user_id": {
      +                    "format": "uuid",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "user_id"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "due_in": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "unit": {
      +                "enum": [
      +                  "days",
      +                  "hours"
      +                ],
      +                "type": "string"
      +              },
      +              "value": {
      +                "maximum": 8760,
      +                "minimum": 1,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "value",
      +              "unit"
      +            ],
      +            "type": "object"
      +          },
      +          "title": {
      +            "maxLength": 500,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "assignee",
      +          "title"
      +        ],
      +        "type": "object"
      +      },
      +      "template_key": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "update_scheduling",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "task"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "assigned_role": {
      +        "enum": [
      +          "assigned_interviewer",
      +          "recruiter",
      +          "hiring_manager",
      +          "team_owner"
      +        ],
      +        "type": "string"
      +      },
      +      "assigned_user_email": {
      +        "maxLength": 320,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "context": {
      +        "additionalProperties": {},
      +        "type": "object"
      +      },
      +      "due_date": {
      +        "description": "Existing fixed deadline; use due_in for recurring rules.",
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "due_in": {
      +        "additionalProperties": false,
      +        "description": "Due this many days or hours after the rule fires; at most 365 days or 8760 hours. Cannot combine with due_date.",
      +        "properties": {
      +          "unit": {
      +            "enum": [
      +              "days",
      +              "hours"
      +            ],
      +            "type": "string"
      +          },
      +          "value": {
      +            "maximum": 8760,
      +            "minimum": 1,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "value",
      +          "unit"
      +        ],
      +        "type": "object"
      +      },
      +      "task_title": {
      +        "description": "Task title; {candidate} resolves to the candidate name.",
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "task_type": {
      +        "description": "Add to My Tasks: scorecard_review on feedback_submitted, or coordination for a general follow-up. Same-kind tasks are stacked.",
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "create_task",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "task_type",
      +      "task_title"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "email_type": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "acknowledgment",
      +              "advancement",
      +              "interview_confirmation",
      +              "rejection",
      +              "offer_declined",
      +              "offer",
      +              "hired",
      +              "withdrawn",
      +              "on_hold"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "const": "interview_cancellation",
      +            "type": "string"
      +          }
      +        ]
      +      },
      +      "template_key": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "format": {
      +        "enum": [
      +          "combined",
      +          "separate"
      +        ],
      +        "type": "string"
      +      },
      +      "interview_ids": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "template_key": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_scheduling_invitation",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "interview_ids",
      +      "format"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "template_key": {
      +        "enum": [
      +          "candidate_preparation",
      +          "onsite_logistics",
      +          "technical_preparation"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_preparation_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "audience": {
      +        "enum": [
      +          "assigned_interviewer",
      +          "recruiter",
      +          "hiring_manager",
      +          "team_owner",
      +          "offer_approver",
      +          "offer_requester"
      +        ],
      +        "type": "string"
      +      },
      +      "template": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_internal_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "audience",
      +      "template"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "type": {
      +        "const": "verify_calendar_event",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / trigger / enum
      Previous value: -[
      -  "stage_enter",
      -  "stage_exit",
      -  "step_ready",
      -  "booking_created",
      -  "booking_changed",
      -  "step_completed",
      -  "feedback_submitted",
      -  "all_scorecards_submitted",
      -  "interview_time",
      -  "booking_cancelled",
      -  "scorecard_due",
      -  "scorecard_overdue",
      -  "decision_brief_ready",
      -  "coaching_report_ready",
      -  "offer_approval_due",
      -  "offer_approval_escalation_due"
      -]New value: +[
      +  "stage_enter",
      +  "stage_exit",
      +  "step_ready",
      +  "booking_created",
      +  "booking_changed",
      +  "step_completed",
      +  "feedback_submitted",
      +  "all_scorecards_submitted",
      +  "interview_time",
      +  "assignment_changed",
      +  "booking_cancelled",
      +  "scorecard_due",
      +  "scorecard_overdue",
      +  "decision_brief_ready",
      +  "coaching_report_ready",
      +  "offer_approval_due",
      +  "offer_approval_escalation_due"
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / action / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "interview_id": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "interview_session_id": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_scheduling_link",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "assigned_role": {
      -        "enum": [
      -          "assigned_interviewer",
      -          "recruiter",
      -          "hiring_manager",
      -          "team_owner"
      -        ],
      -        "type": "string"
      -      },
      -      "assigned_user_email": {
      -        "maxLength": 320,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "context": {
      -        "additionalProperties": {},
      -        "type": "object"
      -      },
      -      "due_date": {
      -        "description": "Existing fixed deadline; use due_in for recurring rules.",
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "due_in": {
      -        "additionalProperties": false,
      -        "description": "Due this many days or hours after the rule fires; at most 365 days or 8760 hours. Cannot combine with due_date.",
      -        "properties": {
      -          "unit": {
      -            "enum": [
      -              "days",
      -              "hours"
      -            ],
      -            "type": "string"
      -          },
      -          "value": {
      -            "maximum": 8760,
      -            "minimum": 1,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "value",
      -          "unit"
      -        ],
      -        "type": "object"
      -      },
      -      "task_title": {
      -        "description": "Task title; {candidate} resolves to the candidate name.",
      -        "maxLength": 500,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "task_type": {
      -        "description": "Add to My Tasks: scorecard_review on feedback_submitted, or coordination for a general follow-up. Same-kind tasks are stacked.",
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "create_task",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "task_type",
      -      "task_title"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "email_type": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "acknowledgment",
      -              "advancement",
      -              "interview_confirmation",
      -              "rejection",
      -              "offer_declined",
      -              "offer",
      -              "hired",
      -              "withdrawn",
      -              "on_hold"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "const": "interview_cancellation",
      -            "type": "string"
      -          }
      -        ]
      -      },
      -      "template_key": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "format": {
      -        "enum": [
      -          "combined",
      -          "separate"
      -        ],
      -        "type": "string"
      -      },
      -      "interview_ids": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "type": {
      -        "const": "send_scheduling_invitation",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "interview_ids",
      -      "format"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "template_key": {
      -        "enum": [
      -          "candidate_preparation",
      -          "onsite_logistics",
      -          "technical_preparation"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_preparation_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "audience": {
      -        "enum": [
      -          "assigned_interviewer",
      -          "recruiter",
      -          "hiring_manager",
      -          "team_owner",
      -          "offer_approver",
      -          "offer_requester"
      -        ],
      -        "type": "string"
      -      },
      -      "template": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_internal_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "audience",
      -      "template"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "type": {
      -        "const": "verify_calendar_event",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "assigned_role": {
      +        "enum": [
      +          "assigned_interviewer",
      +          "recruiter",
      +          "hiring_manager",
      +          "team_owner"
      +        ],
      +        "type": "string"
      +      },
      +      "assigned_user_email": {
      +        "maxLength": 320,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "context": {
      +        "additionalProperties": {},
      +        "type": "object"
      +      },
      +      "due_date": {
      +        "description": "Existing fixed deadline; use due_in for recurring rules.",
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "due_in": {
      +        "additionalProperties": false,
      +        "description": "Due this many days or hours after the rule fires; at most 365 days or 8760 hours. Cannot combine with due_date.",
      +        "properties": {
      +          "unit": {
      +            "enum": [
      +              "days",
      +              "hours"
      +            ],
      +            "type": "string"
      +          },
      +          "value": {
      +            "maximum": 8760,
      +            "minimum": 1,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "value",
      +          "unit"
      +        ],
      +        "type": "object"
      +      },
      +      "task_title": {
      +        "description": "Task title; {candidate} resolves to the candidate name.",
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "task_type": {
      +        "description": "Add to My Tasks: scorecard_review on feedback_submitted, or coordination for a general follow-up. Same-kind tasks are stacked.",
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "create_task",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "task_type",
      +      "task_title"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "email_type": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "acknowledgment",
      +              "advancement",
      +              "interview_confirmation",
      +              "rejection",
      +              "offer_declined",
      +              "offer",
      +              "hired",
      +              "withdrawn",
      +              "on_hold"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "const": "interview_cancellation",
      +            "type": "string"
      +          }
      +        ]
      +      },
      +      "template_key": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "format": {
      +        "enum": [
      +          "combined",
      +          "separate"
      +        ],
      +        "type": "string"
      +      },
      +      "interview_ids": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "template_key": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_scheduling_invitation",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "interview_ids",
      +      "format"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "template_key": {
      +        "enum": [
      +          "candidate_preparation",
      +          "onsite_logistics",
      +          "technical_preparation"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_preparation_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "audience": {
      +        "enum": [
      +          "assigned_interviewer",
      +          "recruiter",
      +          "hiring_manager",
      +          "team_owner",
      +          "offer_approver",
      +          "offer_requester"
      +        ],
      +        "type": "string"
      +      },
      +      "template": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_internal_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "audience",
      +      "template"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "type": {
      +        "const": "verify_calendar_event",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  }
      +]
  5. Changed7 schema fields changed
    • changedInput schema / properties / action / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "interview_id": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "interview_session_id": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_scheduling_link",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "assigned_role": {
      -        "enum": [
      -          "assigned_interviewer",
      -          "recruiter",
      -          "hiring_manager",
      -          "team_owner"
      -        ],
      -        "type": "string"
      -      },
      -      "assigned_user_email": {
      -        "maxLength": 320,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "context": {
      -        "additionalProperties": {},
      -        "type": "object"
      -      },
      -      "due_date": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "task_title": {
      -        "maxLength": 500,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "task_type": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "create_task",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "task_type",
      -      "task_title"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "email_type": {
      -        "enum": [
      -          "acknowledgment",
      -          "advancement",
      -          "interview_confirmation",
      -          "rejection",
      -          "offer_declined",
      -          "offer",
      -          "hired",
      -          "withdrawn",
      -          "on_hold"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "email_type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "format": {
      -        "enum": [
      -          "combined",
      -          "separate"
      -        ],
      -        "type": "string"
      -      },
      -      "interview_ids": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "type": {
      -        "const": "send_scheduling_invitation",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "interview_ids",
      -      "format"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "type": {
      -        "const": "send_preparation_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "audience": {
      -        "enum": [
      -          "assigned_interviewer",
      -          "recruiter",
      -          "hiring_manager",
      -          "team_owner"
      -        ],
      -        "type": "string"
      -      },
      -      "template": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_internal_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "audience",
      -      "template"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "type": {
      -        "const": "verify_calendar_event",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "interview_id": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "interview_session_id": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_scheduling_link",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "assigned_role": {
      +        "enum": [
      +          "assigned_interviewer",
      +          "recruiter",
      +          "hiring_manager",
      +          "team_owner"
      +        ],
      +        "type": "string"
      +      },
      +      "assigned_user_email": {
      +        "maxLength": 320,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "context": {
      +        "additionalProperties": {},
      +        "type": "object"
      +      },
      +      "due_date": {
      +        "description": "Existing fixed deadline; use due_in for recurring rules.",
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "due_in": {
      +        "additionalProperties": false,
      +        "description": "Due this many days or hours after the rule fires; at most 365 days or 8760 hours. Cannot combine with due_date.",
      +        "properties": {
      +          "unit": {
      +            "enum": [
      +              "days",
      +              "hours"
      +            ],
      +            "type": "string"
      +          },
      +          "value": {
      +            "maximum": 8760,
      +            "minimum": 1,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "value",
      +          "unit"
      +        ],
      +        "type": "object"
      +      },
      +      "task_title": {
      +        "description": "Task title; {candidate} resolves to the candidate name.",
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "task_type": {
      +        "description": "Add to My Tasks: scorecard_review on feedback_submitted, or coordination for a general follow-up. Same-kind tasks are stacked.",
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "create_task",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "task_type",
      +      "task_title"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "email_type": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "acknowledgment",
      +              "advancement",
      +              "interview_confirmation",
      +              "rejection",
      +              "offer_declined",
      +              "offer",
      +              "hired",
      +              "withdrawn",
      +              "on_hold"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "const": "interview_cancellation",
      +            "type": "string"
      +          }
      +        ]
      +      },
      +      "template_key": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "format": {
      +        "enum": [
      +          "combined",
      +          "separate"
      +        ],
      +        "type": "string"
      +      },
      +      "interview_ids": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "type": {
      +        "const": "send_scheduling_invitation",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "interview_ids",
      +      "format"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "template_key": {
      +        "enum": [
      +          "candidate_preparation",
      +          "onsite_logistics",
      +          "technical_preparation"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_preparation_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "audience": {
      +        "enum": [
      +          "assigned_interviewer",
      +          "recruiter",
      +          "hiring_manager",
      +          "team_owner",
      +          "offer_approver",
      +          "offer_requester"
      +        ],
      +        "type": "string"
      +      },
      +      "template": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_internal_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "audience",
      +      "template"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "type": {
      +        "const": "verify_calendar_event",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / condition / properties / step_position
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "which": {
      +          "const": "next",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "which"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "kind": {
      +          "enum": [
      +            "candidate_interview",
      +            "reference_check",
      +            "internal_debrief",
      +            "offer_meeting"
      +          ],
      +          "type": "string"
      +        },
      +        "which": {
      +          "const": "first",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "which",
      +        "kind"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "kind": {
      +          "enum": [
      +            "candidate_interview",
      +            "reference_check",
      +            "internal_debrief",
      +            "offer_meeting"
      +          ],
      +          "type": "string"
      +        },
      +        "which": {
      +          "const": "last",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "which",
      +        "kind"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "anchor_kind": {
      +          "enum": [
      +            "candidate_interview",
      +            "reference_check",
      +            "internal_debrief",
      +            "offer_meeting"
      +          ],
      +          "type": "string"
      +        },
      +        "kind": {
      +          "enum": [
      +            "candidate_interview",
      +            "reference_check",
      +            "internal_debrief",
      +            "offer_meeting"
      +          ],
      +          "type": "string"
      +        },
      +        "which": {
      +          "const": "last_before",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "which",
      +        "kind",
      +        "anchor_kind"
      +      ],
      +      "type": "object"
      +    }
      +  ]
      +}
    • addedInput schema / properties / job_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / needs_step_pick
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / pipeline_template_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedInput schema / properties / trigger / enum
      Previous value: -[
      -  "stage_enter",
      -  "stage_exit",
      -  "step_ready",
      -  "booking_created",
      -  "booking_changed",
      -  "step_completed",
      -  "feedback_submitted",
      -  "interview_time"
      -]New value: +[
      +  "stage_enter",
      +  "stage_exit",
      +  "step_ready",
      +  "booking_created",
      +  "booking_changed",
      +  "step_completed",
      +  "feedback_submitted",
      +  "all_scorecards_submitted",
      +  "interview_time",
      +  "booking_cancelled",
      +  "scorecard_due",
      +  "scorecard_overdue",
      +  "decision_brief_ready",
      +  "coaching_report_ready",
      +  "offer_approval_due",
      +  "offer_approval_escalation_due"
      +]
    • changedInput schema / required
      Previous value: -[
      -  "pipeline_stage_id",
      -  "trigger",
      -  "action"
      -]New value: +[
      +  "trigger",
      +  "action"
      +]
  6. Changed13 schema fields changed
    • changedInput schema / properties / action / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "interview_id": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "interview_session_id": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_scheduling_link",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "assigned_user_email": {
      -        "maxLength": 320,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "context": {
      -        "additionalProperties": {},
      -        "type": "object"
      -      },
      -      "due_date": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "task_title": {
      -        "maxLength": 500,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "task_type": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "create_task",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "task_type",
      -      "task_title",
      -      "assigned_user_email"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "email_type": {
      -        "enum": [
      -          "acknowledgment",
      -          "advancement",
      -          "interview_confirmation",
      -          "rejection",
      -          "offer_declined",
      -          "offer",
      -          "hired",
      -          "withdrawn",
      -          "on_hold"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "send_email",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "email_type"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "interview_id": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "interview_session_id": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_scheduling_link",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "assigned_role": {
      +        "enum": [
      +          "assigned_interviewer",
      +          "recruiter",
      +          "hiring_manager",
      +          "team_owner"
      +        ],
      +        "type": "string"
      +      },
      +      "assigned_user_email": {
      +        "maxLength": 320,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "context": {
      +        "additionalProperties": {},
      +        "type": "object"
      +      },
      +      "due_date": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "task_title": {
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "task_type": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "create_task",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "task_type",
      +      "task_title"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "email_type": {
      +        "enum": [
      +          "acknowledgment",
      +          "advancement",
      +          "interview_confirmation",
      +          "rejection",
      +          "offer_declined",
      +          "offer",
      +          "hired",
      +          "withdrawn",
      +          "on_hold"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "email_type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "format": {
      +        "enum": [
      +          "combined",
      +          "separate"
      +        ],
      +        "type": "string"
      +      },
      +      "interview_ids": {
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "type": {
      +        "const": "send_scheduling_invitation",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "interview_ids",
      +      "format"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "type": {
      +        "const": "send_preparation_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "audience": {
      +        "enum": [
      +          "assigned_interviewer",
      +          "recruiter",
      +          "hiring_manager",
      +          "team_owner"
      +        ],
      +        "type": "string"
      +      },
      +      "template": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "send_internal_email",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "audience",
      +      "template"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "type": {
      +        "const": "verify_calendar_event",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / condition / additionalProperties
      Previous value: -{}New value: +true
    • addedInput schema / properties / condition / properties
      Added value: +{
      +  "interview_ids": {
      +    "items": {
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  "step_kinds": {
      +    "items": {
      +      "enum": [
      +        "candidate_interview",
      +        "reference_check",
      +        "internal_debrief",
      +        "offer_meeting"
      +      ],
      +      "type": "string"
      +    },
      +    "minItems": 1,
      +    "type": "array"
      +  }
      +}
    • addedInput schema / properties / delivery_mode
      Added value: +{
      +  "enum": [
      +    "auto_send",
      +    "auto_draft_review"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / job_posting_ids
      Added value: +{
      +  "items": {
      +    "format": "uuid",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / job_scope
      Added value: +{
      +  "enum": [
      +    "all_compatible",
      +    "selected"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / name
      Added value: +{
      +  "maxLength": 200,
      +  "type": "string"
      +}
    • addedInput schema / properties / pipeline_stage_id / anyOf
      Added value: +[
      +  {
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / pipeline_stage_id / minLength
      Removed value: -1
    • removedInput schema / properties / pipeline_stage_id / type
      Removed value: -"string"
    • addedInput schema / properties / starter_key
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 100,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / timing
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "type": {
      +          "const": "immediate",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "type"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "delayMinutes": {
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "type": {
      +          "const": "delay",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "type",
      +        "delayMinutes"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "anchor": {
      +          "enum": [
      +            "start",
      +            "end"
      +          ],
      +          "type": "string"
      +        },
      +        "offsetMinutes": {
      +          "type": "integer"
      +        },
      +        "type": {
      +          "const": "interview_relative",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "type",
      +        "anchor",
      +        "offsetMinutes"
      +      ],
      +      "type": "object"
      +    }
      +  ]
      +}
    • changedInput schema / properties / trigger / enum
      Previous value: -[
      -  "stage_enter",
      -  "stage_exit"
      -]New value: +[
      +  "stage_enter",
      +  "stage_exit",
      +  "step_ready",
      +  "booking_created",
      +  "booking_changed",
      +  "step_completed",
      +  "feedback_submitted",
      +  "interview_time"
      +]
  7. First observed

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so safety profile is known. The description adds one genuinely useful fact beyond that: authoring executes no action at creation time. It does not cover idempotency_key/request_id behaviour or whether an invalid rule aborts atomically.

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

Conciseness4/5

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

Two tight sentences with no waste, and the core purpose is front-loaded. The closing clause about not executing an action earns its place; nothing is padded.

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 17 parameters, deep nesting and no output schema, the description is thinner than the tool's complexity warrants, though the schema's enums and nested descriptions carry much of the load. It omits how job_scope selected vs all_compatible interacts with job_posting_ids, and how this tool relates to the preview/preview_draft siblings before committing a rule.

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

Parameters4/5

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

Schema description coverage is 0% overall, so the description must compensate, and it names the main parameter domains: trigger (stage/step), job_scope, delivery_mode, timing and a typed action. That clarifies the discriminator concept and the trigger family, but leaves condition, position, needs_step_pick, job_posting_ids and the idempotency fields unexplained.

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?

States a specific verb (Create) and resource (named workflow automation rule) plus the components it accepts: triggers, job scope, delivery mode, timing, typed action. This separates it from read/update/delete siblings, though it never explicitly names preview/bulk/copy as alternatives.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance, and no routing to sibling tools such as yardstick_automation_rules_preview, _update, _bulk or _starters_apply. The only usable inference is that authoring is safe to attempt because it executes nothing.

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.