cancel_confirmed_interview

Cancel a confirmed interview

All MCP toolsWrite

Cancel the person's OWN confirmed interview before it starts — the person's side of the company's cancel. A proposed slot is answered with respond_interview_slot (declined), never cancelled here (interview_slot_not_confirmed). Recorded with who and when, never a reason; the company is notified of that fact, its calendar entry is cancelled, and the next slots come from the company. availabilityNote (optional, one short line) is the time bands that suit the person, in their own words: they reach the company as written, become the person's registered availability at save time, and filter the company's next proposal — scheduling material, never a reason. Refuses once the interview has started (interview_started) with nothing written, and an already-cancelled slot (interview_slot_cancelled). There is no undo — verify the person's intent before cancelling. Read the slot with get_selection first.

Input schema

{
  "type": "object",
  "properties": {
    "personId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "The cancelling person (persons.id) — the human principal the agent acts for."
    },
    "slotId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "The person's confirmed slot (interview_slots.id, from get_selection)."
    },
    "availabilityNote": {
      "description": "Optional, one short line: the time bands that suit the person, in their own words. They reach the company as written, become the person's registered availability at save time, and filter the company's next proposal — scheduling material, never a reason. An empty line says nothing.",
      "type": "string",
      "maxLength": 256
    }
  },
  "required": [
    "personId",
    "slotId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output schema

{
  "type": "object",
  "properties": {
    "slot": {
      "type": "object",
      "properties": {
        "slotId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "The interview slot (interview_slots.id)."
        },
        "candidacyId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "The candidacy this slot hangs off (candidacies.id) — the selection record the company's first proposal on the mutual pair opened; the slot's one parent."
        },
        "status": {
          "type": "string",
          "enum": [
            "proposed",
            "confirmed",
            "cancelled"
          ],
          "description": "Interview slot status: \"proposed\", \"confirmed\" (at most one UNDECIDED per candidacy; decided past ones remain as the record), or \"cancelled\". Nothing leaves cancelled."
        },
        "startsAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
          "description": "When the slot starts, ISO 8601 datetime (UTC)."
        },
        "endsAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ],
          "description": "When the slot ends, ISO 8601 datetime (UTC); null when open-ended."
        },
        "candidateResponse": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "accepted",
                "declined"
              ],
              "description": "Candidate response to an interview slot: \"accepted\" or \"declined\" (does not fit their schedule). Mutable — the latest response wins; absent (null) means no response yet. A confirmed slot takes no response; the person's verb there is the interview cancel."
            },
            {
              "type": "null"
            }
          ],
          "description": "The candidate's latest response: accepted, declined, or null (no response yet). A declined slot refuses confirmation until the response changes."
        },
        "respondedAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ],
          "description": "When the latest response was recorded, ISO 8601 (UTC); null when unresponded."
        },
        "candidateVerdict": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "continue",
                "withdraw"
              ],
              "description": "Candidate post-interview intent: \"continue\" (stay in this selection process) or \"withdraw\" (leave it). Absent (null) means no intent recorded yet; withdraw co-occurs with the withdrawn transition."
            },
            {
              "type": "null"
            }
          ],
          "description": "The candidate's post-interview intent: continue, withdraw, or null (not recorded yet). Meaningful only once the confirmed slot's start has passed."
        },
        "candidateVerdictAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ],
          "description": "When the candidate intent was recorded, ISO 8601 (UTC); null when unrecorded."
        },
        "employerVerdict": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "passed",
                "declined"
              ],
              "description": "Employer interview verdict: \"passed\" (state unchanged) or \"declined\" (co-occurs with the declined transition). Absent (null) means no verdict recorded yet."
            },
            {
              "type": "null"
            }
          ],
          "description": "The employer's verdict on the completed interview: passed, declined, or null (not recorded yet)."
        },
        "employerVerdictAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ],
          "description": "When the employer verdict was recorded, ISO 8601 (UTC); null when unrecorded."
        },
        "contact": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "phone": {
                  "description": "Phone number in customary domestic notation, e.g. \"03-1234-5678\" or \"+81 3 1234 5678\" — digits, \"+\", \"-\", spaces and parentheses only; never normalized or verified.",
                  "type": "string",
                  "pattern": "^(?=.*[0-9])[0-9+(](?:[0-9+\\-() ]*[0-9)])?$"
                },
                "email": {
                  "description": "Contact email address for enquiries about this posting.",
                  "type": "string",
                  "format": "email",
                  "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
                },
                "note": {
                  "type": "string",
                  "pattern": "^\\S(?:[\\s\\S]*\\S)?$",
                  "description": "One line beside the channels — the department, the person in charge, reception hours — trimmed and non-empty."
                }
              },
              "additionalProperties": false,
              "description": "Employer contact for the posting: phone and/or email (at least one), plus an optional one-line note. Published as posting content — no disclosure gate."
            },
            {
              "type": "null"
            }
          ],
          "description": "The employer's day-of contact stated for THIS interview at proposal (ADR-0217) — the raw statement, not the resolution: null when none was stated, in which case the posting's contact is the day-of contact."
        },
        "cancelledAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ],
          "description": "When a confirmed interview was cancelled, ISO 8601 (UTC) — recorded with who and when; a proposed slot's withdrawal and the expiry sweep leave it null."
        },
        "cancelledBy": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "candidate",
                "employer"
              ],
              "description": "Which side cancelled the confirmed interview: \"candidate\" or \"employer\". Absent (null) when the slot was not a cancelled confirmed interview — a proposed slot's withdrawal and the expiry sweep record no side."
            },
            {
              "type": "null"
            }
          ],
          "description": "Which side cancelled the confirmed interview — recorded with who and when; a proposed slot's withdrawal and the expiry sweep leave it null."
        },
        "candidateAvailabilityNote": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 256
            },
            {
              "type": "null"
            }
          ],
          "description": "The candidate's own words about the times that suit them, written beside a declined response or beside their own cancellation of a confirmed interview; null when they said nothing."
        }
      },
      "required": [
        "slotId",
        "candidacyId",
        "status",
        "startsAt",
        "endsAt",
        "candidateResponse",
        "respondedAt",
        "candidateVerdict",
        "candidateVerdictAt",
        "employerVerdict",
        "employerVerdictAt",
        "contact",
        "cancelledAt",
        "cancelledBy",
        "candidateAvailabilityNote"
      ],
      "additionalProperties": false,
      "description": "The cancelled slot: cancelledAt, cancelledBy = candidate, and the person's words (candidateAvailabilityNote) as written."
    }
  },
  "required": [
    "slot"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

On this page