list_notification_deliveries

List notification deliveries

All MCP toolsRead

One page of the notification delivery log, newest first: every notification the platform published (kind, channel, what it is about by opaque ref, and when) — the poll-based change feed for agents. Rows deliberately carry NO content: re-fetch the subject through the matching read tool of your own face (as an organization: a candidacy via get_pipeline_candidacy, a thread via get_employer_thread, a job via get_job_posting; as the person: a selection record via get_selection, a conversation via get_conversation, a job via get_published_job_posting; …). Paginated by keyset cursor: pass the returned nextCursor as the next call's cursor to continue; null nextCursor = the final page. Filter with kind and/or since (ISO 8601 lower bound on occurredAt). A candidate credential sees only the deliveries addressed to its own person; an employer credential only the deliveries belonging to its own organization.

Input schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Page size, 1..50 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "description": "Opaque continuation token — the previous page's nextCursor. Omit for the first page.",
      "type": "string",
      "minLength": 1
    },
    "kind": {
      "description": "Restrict to one notification kind.",
      "type": "string",
      "enum": [
        "new_candidate",
        "profile_view",
        "recommendation",
        "approval_pending",
        "message_received",
        "proposal_received",
        "mutual_interest",
        "interview_schedule_updated",
        "candidacy_stage_changed",
        "approval_decided",
        "job_published",
        "webhook_endpoint_disabled",
        "evaluation_requested",
        "evaluation_reminder",
        "candidacy_advance_pending",
        "interview_slot_responded",
        "counter_request_received",
        "counter_request_resolved",
        "interview_completed",
        "interview_result_recorded",
        "interview_reminder",
        "interview_debrief_reminder",
        "interview_slot_response_nudge",
        "interview_slot_confirmation_nudge",
        "market_benchmark_update",
        "credit_expiry_upcoming",
        "credit_balance_low",
        "matching_paused",
        "job_matching_paused",
        "matching_resumed",
        "material_disclosure_opened",
        "material_request_received",
        "material_request_answered",
        "material_request_resolved",
        "agreement_recorded",
        "agreement_answered",
        "proposal_requested",
        "interview_cancelled"
      ]
    },
    "since": {
      "type": "string",
      "format": "date-time",
      "description": "Only deliveries with occurredAt at or after this instant — ISO 8601, Z or ±hh:mm offset accepted, compared as the denoted UTC instant."
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output schema

{
  "type": "object",
  "properties": {
    "deliveries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "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 delivery row id (notification_deliveries.id)."
          },
          "kind": {
            "type": "string",
            "enum": [
              "new_candidate",
              "profile_view",
              "recommendation",
              "approval_pending",
              "message_received",
              "proposal_received",
              "mutual_interest",
              "interview_schedule_updated",
              "candidacy_stage_changed",
              "approval_decided",
              "job_published",
              "webhook_endpoint_disabled",
              "evaluation_requested",
              "evaluation_reminder",
              "candidacy_advance_pending",
              "interview_slot_responded",
              "counter_request_received",
              "counter_request_resolved",
              "interview_completed",
              "interview_result_recorded",
              "interview_reminder",
              "interview_debrief_reminder",
              "interview_slot_response_nudge",
              "interview_slot_confirmation_nudge",
              "market_benchmark_update",
              "credit_expiry_upcoming",
              "credit_balance_low",
              "matching_paused",
              "job_matching_paused",
              "matching_resumed",
              "material_disclosure_opened",
              "material_request_received",
              "material_request_answered",
              "material_request_resolved",
              "agreement_recorded",
              "agreement_answered",
              "proposal_requested",
              "interview_cancelled"
            ],
            "description": "Notification kind: \"new_candidate\" (DORMANT: its fire point retired with the application door — the record opens on the employer's own proposal, so no \"application arrived\" event exists; capture vocabulary is additive-only, so the member stays and already-delivered rows keep reading), \"profile_view\" (a profile-view footprint), \"recommendation\" (DORMANT: capture vocabulary is additive-only, so the member stays; its fire point is owned by the recommendation MCP), \"approval_pending\" (an approval request is waiting — DORMANT: its fire points retired with the independent staff approval spine (ADR-0080 revision); capture vocabulary is additive-only, so the member stays and already-delivered rows keep reading), \"message_received\" (a new message, additive extension), \"proposal_received\" (a company proposed one or several of its published jobs — one delivery per proposal, subject the organization, answered per job in Decisions — the successor of the deleted per-job interest_received under the same one-time pre-launch licence), \"mutual_interest\" (with the previous, additive extensions), \"interview_schedule_updated\" (an interview schedule update, additive extension), the lifecycle events: \"candidacy_stage_changed\" (a candidacy stage transition), \"approval_decided\" (an approval decision — DORMANT: its fire points retired with the approval notifications (ADR-0080 revision); the member stays for already-delivered rows), \"job_published\" (a job publication), the ops alert \"webhook_endpoint_disabled\" (an endpoint was auto-disabled), \"evaluation_requested\" (an evaluation request arrived, additive extension), \"evaluation_reminder\" (the agent's collection reminder for a still-unsubmitted evaluation request — a periodic scan re-pins the evaluator with bounded retries, additive extension), the staff-facing decision events (additive extensions): \"candidacy_advance_pending\" (a candidacy awaits a selection decision — the candidate entered the decision supply set) and \"interview_slot_responded\" (the candidate responded to an interview slot), the terms-consultation pair \"counter_request_received\" and \"counter_request_resolved\" (DORMANT: their fire points retired with the terms-consultation screens and tools (ADR-0135 revision); capture vocabulary is additive-only, so the members stay and already-delivered rows keep reading), the interview-result pair (additive extensions): \"interview_completed\" (an interview took place — the arrival of both sides' result-entry decisions) and \"interview_result_recorded\" (the counterpart recorded a positive result — continue/passed only; negatives ride the existing transition notifications, ADR-0084), \"interview_reminder\" (an advance reminder for a confirmed interview slot — a periodic scan fires once per time point to both sides' attendees, additive extension), \"interview_debrief_reminder\" (the debrief re-ask for a still-unanswered continue decision — a periodic scan re-pins the candidate with bounded retries; candidate-only, additive extension), the slot-nudge pair (additive extensions): \"interview_slot_response_nudge\" (an unanswered proposed slot nears its deadline — re-pins the candidate's response decision) and \"interview_slot_confirmation_nudge\" (an accepted-but-unconfirmed proposed slot nears its deadline — re-pins the owner's confirm decision), \"market_benchmark_update\" (the market going rate moved — a weekly scan fires once per subscribed organization; no figures ride the event, additive extension), or the billing-credit pair (additive extensions; vocabulary is core, the fire point is the EE-gated daily scan — the market_benchmark_update posture): \"credit_expiry_upcoming\" (purchased mutual-interest credits near expiry — once per purchase × window) and \"credit_balance_low\" (mutual-interest credits run low — once per low-balance episode), \"matching_paused\" (new matching paused at zero credits — once per pause episode, same posture), \"job_matching_paused\" (one job's NEW matching paused at its own cap — the consumption-driven capacity-edge check fires it to the job's owner assignees, once per cap episode; the derived pause itself stays read-time), \"matching_resumed\" (a payment arrival lifted the organization's zero-balance pause — fired best-effort by the grant path, once per pause episode, closing the episode the pause ping opened), \"material_disclosure_opened\" (materials opened — milestone auto-opening fires once per pair event to the candidate, additive extension, ADR-0159), or the material-request trio (additive extensions, ADR-0163): \"material_request_received\" (a material request awaits the candidate's answer — candidate side), \"material_request_answered\" (a filed request was already answered by the candidate's standing policy — candidate-side receipt, no decision), and \"material_request_resolved\" (the candidate shared or declined — employer side), or the agreement pair (additive extensions, ADR-0229): \"agreement_recorded\" (a company recorded that terms were agreed independently of any job posting — the candidate's decision item, subject the agreement record) and \"agreement_answered\" (the candidate answered \"proceed with this agreement\" — the chat's topic became the agreed terms; employer side, subject the thread), or \"proposal_requested\" (a candidate asked the company, from the pair's open chat, to propose another job — employer side, subject the thread; the request closes with the company's next proposal, jobs or terms, ADR-0231), or \"interview_cancelled\" (a CONFIRMED interview was cancelled — recorded with who and when, never a reason; the candidate receives it when the company cancels, the job's owners when the candidate does; additive extension)."
          },
          "channel": {
            "type": "string",
            "enum": [
              "in_app",
              "webhook",
              "email",
              "push",
              "person_webhook",
              "sms"
            ],
            "description": "Delivery channel: \"in_app\" (pull-based reads of delivery rows — the row IS the inbox item), \"webhook\" (signed thin POST to the organization's registered endpoints), \"email\" (rendered-at-send plain-text mail to the candidate's verified sign-in address), \"push\" (Web Push to the person's registered browser subscriptions), \"person_webhook\" (signed thin POST to the person's OWN registered endpoints), or \"sms\" (rendered-at-send text message to the candidate's verified contact-use phone number — serves the interview reminder only). Further external channels (Slack) are additive values."
          },
          "subjectKind": {
            "type": "string",
            "enum": [
              "person",
              "job",
              "organization",
              "candidacy",
              "thread",
              "webhook_endpoint",
              "billing_purchase",
              "agreement"
            ],
            "description": "Notification subject kind: \"person\", \"job\", \"organization\", \"candidacy\", \"thread\", \"webhook_endpoint\", \"billing_purchase\" (a prepaid credit purchase — an organization-owned billing record, never person data), or \"agreement\" (a company's record that terms were agreed independently of any job posting — carries no terms, never person data) — what the notification is about."
          },
          "subjectRef": {
            "type": "string",
            "description": "What the notification is about, by opaque reference only — re-fetch detail through the matching authenticated read tool."
          },
          "setHash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The impressions batch this delivery exposes, when any (impressions.set_hash)."
          },
          "dedupeKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The publish idempotency key, when any."
          },
          "occurredAt": {
            "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 triggering event happened (ISO 8601, UTC)."
          }
        },
        "required": [
          "id",
          "kind",
          "channel",
          "subjectKind",
          "subjectRef",
          "setHash",
          "dedupeKey",
          "occurredAt"
        ],
        "additionalProperties": false,
        "description": "One notification delivery row: raw columns only, no body — content renders at read time through the disclosure gate."
      },
      "description": "One page of delivery rows, newest first."
    },
    "nextCursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Pass as the next call's cursor to continue; null on the final page."
    }
  },
  "required": [
    "deliveries",
    "nextCursor"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

On this page