# airdress.remote_mcp.*

{/* Generated by scripts/generate-event-reference.mjs from https://schemas.airdress.co/operator/events/v1.json (operator v0.1.138).
    Do not edit by hand: run `pnpm generate:event-reference` and commit the result. */}

The events in the `airdress.remote_mcp` family. How to read a section, and what
each audience means, is on the [event reference](/events/) page.

## `airdress.remote_mcp.session_ended`

Owner info Functions

A remote MCP session ended, and why.

**Audience: owner.** About the airdress as a whole. Only the owner receives it: the owner's devices and the owner's subscriptions.

**Where it goes**

- **The operator's journal**, as one log line at this level, and **the event log**, where `airdress events tail` reads it.
- **Subscriptions** that name it, within its audience.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

- Version 1: first carried by operator v0.1.138.

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `reason` | string | yes |  |

<details>
<summary>JSON Schema</summary>

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A remote MCP session ended, and why.",
  "properties": {
    "reason": {
      "type": "string"
    }
  },
  "required": [
    "reason"
  ],
  "title": "SessionEnded",
  "type": "object"
}
```

</details>

## `airdress.remote_mcp.session_opened`

Owner info Functions

A remote MCP session opened, with the protocol revision agreed and the client's registered id.

**Audience: owner.** About the airdress as a whole. Only the owner receives it: the owner's devices and the owner's subscriptions.

**Where it goes**

- **The operator's journal**, as one log line at this level, and **the event log**, where `airdress events tail` reads it.
- **Subscriptions** that name it, within its audience.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

- Version 1: first carried by operator v0.1.138.

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `client` | string | yes |  |
| `protocol` | string | yes |  |

<details>
<summary>JSON Schema</summary>

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A remote MCP session opened, with the protocol revision agreed and the client's registered id.",
  "properties": {
    "client": {
      "type": "string"
    },
    "protocol": {
      "type": "string"
    }
  },
  "required": [
    "client",
    "protocol"
  ],
  "title": "SessionOpened",
  "type": "object"
}
```

</details>

## `airdress.remote_mcp.token_refused`

Owner info

A bearer token was refused on the remote MCP endpoint; `revoked` when its grant was revoked at the hub. Anybody can cause one, so it stays off the bus. The token is never in the event.

**Audience: owner.** About the airdress as a whole. Only the owner receives it: the owner's devices and the owner's subscriptions.

**Where it goes**

- **The operator's journal**, as one log line at this level, and **the event log**, where `airdress events tail` reads it.
- **Subscriptions** that name it, within its audience.
- Not functions bound to this operator's events: it is kept off that path as too frequent or too internal. A subscription with a function target still receives it.

**Versions**

- Version 1: first carried by operator v0.1.138.

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `error` | string | yes | Why validation refused it. |
| `revoked` | boolean | yes |  |

<details>
<summary>JSON Schema</summary>

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A bearer token was refused on the remote MCP endpoint; `revoked` when its grant was revoked at the hub. Anybody can cause one, so it stays off the bus. The token is never in the event.",
  "properties": {
    "error": {
      "description": "Why validation refused it.",
      "type": "string"
    },
    "revoked": {
      "type": "boolean"
    }
  },
  "required": [
    "error",
    "revoked"
  ],
  "title": "TokenRefused",
  "type": "object"
}
```

</details>