Skip to content

executions.protocol

Where the WebSocket is, how a subscription and a reconnect are expressed, what the server writes, and the JSON Schema of every message — derived from the Rust types that implement it, so a client validating against this is validating against the implementation. OpenAPI cannot describe a socket; this is where that contract lives.

Where the WebSocket is, how a subscription and a reconnect are expressed, what the server writes, and the JSON Schema of every message — derived from the Rust types that implement it, so a client validating against this is validating against the implementation. OpenAPI cannot describe a socket; this is where that contract lives.

Exposure

Where this one definition is reachable. Absence is explicit: a surface not listed does not carry it.

surfaceas
MCPtool majordomus_execution_protocol
resource majordomus://executions/protocol
HTTPGET /api/v1/executions/protocol operationId executions.protocol
command linemajordomus executions protocol

Schemas

The canonical input and output, from the Rust types; the MCP tool schema and the OpenAPI parameters and responses are derived from these.

input · Empty

No input.

No properties: the capability takes no input.

JSON Schema
{
  "additionalProperties": false,
  "description": "No input.",
  "title": "Empty",
  "type": "object"
}

output · ProtocolReport

The answer of `executions.protocol`: the live channel's whole contract, derived from the types that implement it.

propertytyperequireddescription
event_schema object yes The JSON Schema of an event, derived from the Rust type.
event_types array yes The event types a client may receive, from the one enum that defines them.
heartbeat_seconds integer yes How many seconds of quiet before the server pings.
limits reference yes What the store keeps, so a client knows what it may ask for.
max_connections integer yes How many live channels this process serves at once.
max_replay integer yes How many retained events a scoped connection replays before going live.
protocol_version string yes The version of the event protocol this server speaks.
stream_schema object yes The JSON Schema of a control message, derived from the Rust type.
stream_types array yes The stream's own control messages.
subscription array yes How the subscription is expressed, and what a reconnect sends.
websocket string yes Where the live channel is: a path on this same server, not a second daemon.
JSON Schema
{
  "$defs": {
    "LimitsView": {
      "description": "What this process's execution store keeps.",
      "properties": {
        "max_events": {
          "description": "How many events are retained per execution.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "max_executions": {
          "description": "How many executions are remembered.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "max_log_chars": {
          "description": "The longest a single log line may be.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "max_running": {
          "description": "How many executions run at once.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "max_subscriber_queue": {
          "description": "How far a live channel may fall behind before it is told to resynchronise.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "max_executions",
        "max_events",
        "max_log_chars",
        "max_running",
        "max_subscriber_queue"
      ],
      "type": "object"
    },
    "ParameterView": {
      "description": "One query parameter of the live channel.",
      "properties": {
        "description": {
          "description": "What it does.",
          "type": "string"
        },
        "name": {
          "description": "Its name.",
          "type": "string"
        },
        "required": {
          "description": "Whether it must be given.",
          "type": "boolean"
        }
      },
      "required": [
        "name",
        "description",
        "required"
      ],
      "type": "object"
    }
  },
  "description": "The answer of `executions.protocol`: the live channel's whole contract, derived from\nthe types that implement it.",
  "properties": {
    "event_schema": {
      "description": "The JSON Schema of an event, derived from the Rust type."
    },
    "event_types": {
      "description": "The event types a client may receive, from the one enum that defines them.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "heartbeat_seconds": {
      "description": "How many seconds of quiet before the server pings.",
      "format": "uint64",
      "minimum": 0,
      "type": "integer"
    },
    "limits": {
      "$ref": "#/$defs/LimitsView",
      "description": "What the store keeps, so a client knows what it may ask for."
    },
    "max_connections": {
      "description": "How many live channels this process serves at once.",
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    },
    "max_replay": {
      "description": "How many retained events a scoped connection replays before going live.",
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    },
    "protocol_version": {
      "description": "The version of the event protocol this server speaks.",
      "type": "string"
    },
    "stream_schema": {
      "description": "The JSON Schema of a control message, derived from the Rust type."
    },
    "stream_types": {
      "description": "The stream's own control messages.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "subscription": {
      "description": "How the subscription is expressed, and what a reconnect sends.",
      "items": {
        "$ref": "#/$defs/ParameterView"
      },
      "type": "array"
    },
    "websocket": {
      "description": "Where the live channel is: a path on this same server, not a second daemon.",
      "type": "string"
    }
  },
  "required": [
    "protocol_version",
    "websocket",
    "subscription",
    "heartbeat_seconds",
    "max_connections",
    "max_replay",
    "event_types",
    "stream_types",
    "event_schema",
    "stream_schema",
    "limits"
  ],
  "title": "ProtocolReport",
  "type": "object"
}

Policies

benchmark
required — a target on every transport the exposure declares; the cases are the input type's
cache
disabled — every call runs the handler

Benchmark targets

Derived from the registry for this repository: one requirement per transport, and the cases the input type provides. The whole matrix is on the benchmarks page.

transportstatecasestargets
directcovered1default
mcpcovered1default
httpcovered1default