set_notification_preference

Set one notification preference

All MCP toolsWrite

Set ONE cell of the person's preference matrix: a single notification kind on a single external channel, on or off. Read get_notification_preferences first — it names the kinds this person can receive and whether the channel can deliver at all. The stored value is an explicit choice and outlives any later change to the platform default, so writing the current default is meaningful rather than a no-op. A kind outside what a candidate receives, or a channel outside email, push and sms, refuses with zero writes — and the sms channel accepts only the kinds it actually serves (interview_reminder): an sms cell on any other kind refuses with zero writes too.

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 person whose preference to set (persons.id — self)."
    },
    "kind": {
      "type": "string",
      "enum": [
        "proposal_received",
        "mutual_interest",
        "interview_schedule_updated",
        "candidacy_stage_changed",
        "interview_completed",
        "interview_reminder",
        "interview_slot_response_nudge",
        "message_received",
        "agreement_recorded"
      ],
      "description": "Which notification kind this cell is about."
    },
    "channel": {
      "type": "string",
      "enum": [
        "email",
        "push",
        "sms"
      ],
      "description": "Which external channel this cell is about."
    },
    "enabled": {
      "type": "boolean",
      "description": "The value to store for this cell."
    }
  },
  "required": [
    "personId",
    "kind",
    "channel",
    "enabled"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output 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)$"
    },
    "kind": {
      "type": "string",
      "enum": [
        "proposal_received",
        "mutual_interest",
        "interview_schedule_updated",
        "candidacy_stage_changed",
        "interview_completed",
        "interview_reminder",
        "interview_slot_response_nudge",
        "message_received",
        "agreement_recorded"
      ]
    },
    "channel": {
      "type": "string",
      "enum": [
        "email",
        "push",
        "sms"
      ]
    },
    "enabled": {
      "type": "boolean",
      "description": "The stored value after the call."
    }
  },
  "required": [
    "personId",
    "kind",
    "channel",
    "enabled"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

On this page