> For the complete documentation index, see [llms.txt](https://mcp-test-kitchen-docs.cakewalk.security/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mcp-test-kitchen-docs.cakewalk.security/reading-the-record/record/fields.md).

# Observation Fields

Every field an observation carries, the nine phases a request can land in and the three catalog categories.

One entry is written per request the server handled.

***

## Fields

| Field                   | What it holds                                               |
| ----------------------- | ----------------------------------------------------------- |
| `occurredAt`            | When the server handled the request                         |
| `method`                | The MCP method, such as `tools/call` or `resources/read`    |
| `phase`                 | Which stage of the connection the method belongs to         |
| `durationMs`            | How long the server spent on the request                    |
| `statusCode`            | The HTTP status returned                                    |
| `wasCancelled`          | Whether your client aborted the request before it finished  |
| `scenarioId`            | The scenario active when the request arrived                |
| `callerEmail`           | The account the token belongs to                            |
| `clientProtocolVersion` | The protocol revision your client declared                  |
| `requestId`             | The server's own trace identifier for the HTTP request      |
| `headersJson`           | Request headers, with values outside the allowlist replaced |
| `requestParamsJson`     | A summary of the params, not the whole object. See below    |

`requestId` is the server's trace identifier, not the JSON-RPC `id` your client put in the request. The two do not correlate, so do not try to match an entry to a line in your client's log by id.

`scenarioId` is attached to tool and protocol traffic. Resource and prompt methods do not carry it, because the always on catalog is the same under every scenario.

Header values are redacted by default. Six headers are recorded in full and everything else, including your token, is stored as `[redacted]`.

`requestParamsJson` is a summary rather than the params your client sent. For `initialize` it holds the protocol version and your client's name and version. For `tools/call` it holds the tool name and nothing else, so tool arguments never reach the record. For every other method it holds the params object when that object is 512 characters or fewer, and nothing otherwise. See [Data Handling](/reference/data-handling.md).

***

## Phases

The phase is derived from the method, so it is a grouping rather than an independent signal. It is the fastest way to find the part of a connection you care about.

| Phase                | Methods                                                              |
| -------------------- | -------------------------------------------------------------------- |
| `initialize`         | `initialize`                                                         |
| `client_initialized` | `notifications/initialized`                                          |
| `discovery`          | `tools/list`, `resources/list`, `prompts/list`, `tools/list_changed` |
| `notification`       | Any other `notifications/` method                                    |
| `tool_execution`     | `tools/call`                                                         |
| `resource_read`      | `resources/read`                                                     |
| `prompt_get`         | `prompts/get`                                                        |
| `protocol`           | Anything not matched above                                           |
| `malformed`          | Requests the server could not read as MCP                            |

A request landing in `protocol` when you expected something else usually means your client sent a method this server does not recognize. Open the drawer and read the method string.

***

## Categories

The category filter matches on the method prefix, so it is a coarser cut than phase.

| Category  | Matches      |
| --------- | ------------ |
| Tools     | `tools/`     |
| Resources | `resources/` |
| Prompts   | `prompts/`   |

Use category when you want everything about one catalog kind, including its discovery call. Use phase when you want one stage across all kinds.

***

## What Is Not Recorded

The server records what it received and what status it returned. It does not record the response body it sent, and it has no way to record what your client did with either.

That boundary is the subject of [What the Record Proves](/reading-the-record/record/what-it-proves.md).
