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
}