get_candidate_report

Get the person's own activity report

All MCP toolsRead

Start with this for how the person's own job search is going: one windowed report — the dated events (newest first, items capped at 20 while totalCount is the uncapped in-window total), one highlighted case from the period, and the status (normal, quiet or paused; quiet adds how many applications are still ongoing) — every section cut on the SAME window. window omitted = m1 (last month), the same default the person's own reports page opens on; bucket boundaries use the person's saved time zone (UTC when unset), resolved server-side. Every value returned is one the person's own reports page shows from the identical read model — no recomputation. Reading writes nothing: no impressions, no notifications.

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 own report to read (persons.id)."
    },
    "window": {
      "description": "Report window (m1 / m3 / m6); omitted = m1 — the same default the web reports page uses.",
      "type": "string",
      "enum": [
        "m1",
        "m3",
        "m6"
      ]
    }
  },
  "required": [
    "personId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output schema

{
  "type": "object",
  "properties": {
    "report": {
      "type": "object",
      "properties": {
        "window": {
          "type": "string",
          "enum": [
            "m1",
            "m3",
            "m6"
          ],
          "description": "Report window: \"m1\" (last 1 month, default), \"m3\", or \"m6\"."
        },
        "windowStart": {
          "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))$"
        },
        "generatedAt": {
          "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))$"
        },
        "events": {
          "type": "object",
          "properties": {
            "items": {
              "maxItems": 20,
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "candidacy_transition",
                      "mutual",
                      "interview_confirmed"
                    ],
                    "description": "Dated report event kind."
                  },
                  "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 event happened (ISO 8601, UTC)."
                  },
                  "jobId": {
                    "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 pair's job — display names resolve UI-side (disclosed path)."
                  },
                  "candidacyId": {
                    "anyOf": [
                      {
                        "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)$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "toState": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "applied",
                          "screening_passed",
                          "interviewing",
                          "offered",
                          "accepted",
                          "converted",
                          "withdrawn",
                          "declined"
                        ],
                        "description": "Candidacy state: the active pipeline \"applied\" → \"screening_passed\" → \"interviewing\" → \"offered\" → \"accepted\" → \"converted\", plus the terminal negatives \"withdrawn\" (seeker-initiated) and \"declined\" (hirer-initiated)."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "kind",
                  "occurredAt",
                  "jobId",
                  "candidacyId",
                  "toState"
                ],
                "additionalProperties": false
              }
            },
            "totalCount": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991,
              "description": "Event count (zero-filled)."
            }
          },
          "required": [
            "items",
            "totalCount"
          ],
          "additionalProperties": false
        },
        "highlight": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "jobId": {
                  "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)$"
                },
                "candidacyId": {
                  "anyOf": [
                    {
                      "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)$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "stage": {
                  "type": "string",
                  "enum": [
                    "considered",
                    "frame_matched",
                    "mutual",
                    "applied",
                    "interview_confirmed"
                  ],
                  "description": "Report funnel stage, in canonical order."
                },
                "entries": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "stage": {
                        "type": "string",
                        "enum": [
                          "considered",
                          "frame_matched",
                          "mutual",
                          "applied",
                          "interview_confirmed"
                        ],
                        "description": "Report funnel stage, in canonical order."
                      },
                      "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))$"
                      }
                    },
                    "required": [
                      "stage",
                      "occurredAt"
                    ],
                    "additionalProperties": false
                  }
                }
              },
              "required": [
                "jobId",
                "candidacyId",
                "stage",
                "entries"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "status": {
          "type": "string",
          "enum": [
            "normal",
            "quiet",
            "paused"
          ]
        },
        "quietBreakdown": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "active": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991,
                  "description": "Event count (zero-filled)."
                }
              },
              "required": [
                "active"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "window",
        "windowStart",
        "generatedAt",
        "events",
        "highlight",
        "status",
        "quietBreakdown"
      ],
      "additionalProperties": false,
      "description": "The candidate report on the wire — one window, every section on the same cut (ISO datetimes)."
    }
  },
  "required": [
    "report"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

On this page