# MCP tools

Generated from OpenRig **0.5.14 (cc75efdd)**, commit `cc75efdd17fb967bde7cff6c5805791986af78d8`.

Discovered through MCP `tools/list`; no tools were invoked. Required inputs are marked below. JSON schemas are retained in full for nested constraints.

## rig_up

Bootstrap a rig from a spec or bundle

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| sourceRef | "string" | yes | Path to .yaml rig spec or .rigbundle |
| plan | "boolean" | no | Plan mode — preview without executing |
| autoApprove | "boolean" | no | Auto-approve trusted actions |
| targetRoot | "string" | no | Target root directory for package installation |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "sourceRef": {
      "type": "string",
      "description": "Path to .yaml rig spec or .rigbundle"
    },
    "plan": {
      "description": "Plan mode — preview without executing",
      "type": "boolean"
    },
    "autoApprove": {
      "description": "Auto-approve trusted actions",
      "type": "boolean"
    },
    "targetRoot": {
      "description": "Target root directory for package installation",
      "type": "string"
    }
  },
  "required": [
    "sourceRef"
  ]
}
```

## rig_down

Tear down a rig

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| rigId | "string" | yes | Rig identifier to tear down |
| delete | "boolean" | no | Delete rig record after stopping |
| force | "boolean" | no | Kill sessions immediately |
| snapshot | "boolean" | no | Take snapshot before teardown |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "rigId": {
      "type": "string",
      "description": "Rig identifier to tear down"
    },
    "delete": {
      "description": "Delete rig record after stopping",
      "type": "boolean"
    },
    "force": {
      "description": "Kill sessions immediately",
      "type": "boolean"
    },
    "snapshot": {
      "description": "Take snapshot before teardown",
      "type": "boolean"
    }
  },
  "required": [
    "rigId"
  ]
}
```

## rig_ps

List rigs and their status

| Input | Type | Required | Description |
| --- | --- | --- | --- |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {}
}
```

## rig_status

Check daemon health

| Input | Type | Required | Description |
| --- | --- | --- | --- |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {}
}
```

## rig_snapshot_create

Create a snapshot for a rig

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| rigId | "string" | yes | Rig identifier |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "rigId": {
      "type": "string",
      "description": "Rig identifier"
    }
  },
  "required": [
    "rigId"
  ]
}
```

## rig_snapshot_list

List snapshots for a rig

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| rigId | "string" | yes | Rig identifier |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "rigId": {
      "type": "string",
      "description": "Rig identifier"
    }
  },
  "required": [
    "rigId"
  ]
}
```

## rig_restore

Restore a rig from a snapshot

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| rigId | "string" | yes | Rig identifier |
| snapshotId | "string" | yes | Snapshot identifier |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "rigId": {
      "type": "string",
      "description": "Rig identifier"
    },
    "snapshotId": {
      "type": "string",
      "description": "Snapshot identifier"
    }
  },
  "required": [
    "rigId",
    "snapshotId"
  ]
}
```

## rig_discover

Scan for tmux sessions to discover

| Input | Type | Required | Description |
| --- | --- | --- | --- |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {}
}
```

## rig_bind

Bind a discovered session to an existing node or create a new node in a pod

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| discoveryId | "string" | yes | Discovery session identifier |
| rigId | "string" | yes | Target rig identifier |
| logicalId | "string" | no | Existing node logical ID (mode: bind to existing) |
| podNamespace | "string" | no | Pod namespace to create node in (mode: create in pod) |
| memberName | "string" | no | Member name for new node (required with podNamespace) |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "discoveryId": {
      "type": "string",
      "description": "Discovery session identifier"
    },
    "rigId": {
      "type": "string",
      "description": "Target rig identifier"
    },
    "logicalId": {
      "description": "Existing node logical ID (mode: bind to existing)",
      "type": "string"
    },
    "podNamespace": {
      "description": "Pod namespace to create node in (mode: create in pod)",
      "type": "string"
    },
    "memberName": {
      "description": "Member name for new node (required with podNamespace)",
      "type": "string"
    }
  },
  "required": [
    "discoveryId",
    "rigId"
  ]
}
```

## rig_bundle_inspect

Inspect a .rigbundle file

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| bundlePath | "string" | yes | Path to .rigbundle file |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "bundlePath": {
      "type": "string",
      "description": "Path to .rigbundle file"
    }
  },
  "required": [
    "bundlePath"
  ]
}
```

## rig_agent_validate

Validate an AgentSpec (agent.yaml) from YAML text

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| yaml | "string" | yes | YAML text of the agent spec |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "yaml": {
      "type": "string",
      "description": "YAML text of the agent spec"
    }
  },
  "required": [
    "yaml"
  ]
}
```

## rig_rig_validate

Validate a RigSpec (rig.yaml) from YAML text

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| yaml | "string" | yes | YAML text of the rig spec |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "yaml": {
      "type": "string",
      "description": "YAML text of the rig spec"
    }
  },
  "required": [
    "yaml"
  ]
}
```

## rig_rig_nodes

Get node inventory for a rig — session names, status, attach commands, resume commands

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| rigId | "string" | yes | Rig identifier |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "rigId": {
      "type": "string",
      "description": "Rig identifier"
    }
  },
  "required": [
    "rigId"
  ]
}
```

## rig_send

Send a message to an agent's terminal using reliable two-step send

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| session | "string" | yes | Target session name (e.g. example-seat@example) |
| text | "string" | yes | Message text to send |
| verify | "boolean" | no | Verify delivery by checking pane content |
| force | "boolean" | no | Send even if target appears mid-task |
| waitForIdleSeconds | "number" | no | Wait until explicit idle evidence before sending |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "session": {
      "type": "string",
      "description": "Target session name (e.g. example-seat@example)"
    },
    "text": {
      "type": "string",
      "description": "Message text to send"
    },
    "verify": {
      "description": "Verify delivery by checking pane content",
      "type": "boolean"
    },
    "force": {
      "description": "Send even if target appears mid-task",
      "type": "boolean"
    },
    "waitForIdleSeconds": {
      "description": "Wait until explicit idle evidence before sending",
      "type": "number",
      "exclusiveMinimum": 0
    }
  },
  "required": [
    "session",
    "text"
  ]
}
```

## rig_capture

Capture terminal output from an agent session

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| session | "string" | no | Session name (omit for multi-target with rig/pod) |
| rig | "string" | no | Capture all sessions in a rig |
| pod | "string" | no | Capture all sessions in a pod |
| lines | "number" | no | Number of lines to capture (default: 20) |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "session": {
      "description": "Session name (omit for multi-target with rig/pod)",
      "type": "string"
    },
    "rig": {
      "description": "Capture all sessions in a rig",
      "type": "string"
    },
    "pod": {
      "description": "Capture all sessions in a pod",
      "type": "string"
    },
    "lines": {
      "description": "Number of lines to capture (default: 20)",
      "type": "number"
    }
  }
}
```

## rig_chatroom_send

Send a message to a rig's chatroom

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| rigName | "string" | yes | Rig name to send message to |
| body | "string" | yes | Message body |
| sender | "string" | no | (deprecated, ignored) the sender is derived from the seat env (X-OpenRig-Session, stamped by the MCP server's DaemonClient); the chat route derives it from the transport header |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "rigName": {
      "type": "string",
      "description": "Rig name to send message to"
    },
    "body": {
      "type": "string",
      "description": "Message body"
    },
    "sender": {
      "description": "(deprecated, ignored) the sender is derived from the seat env (X-OpenRig-Session, stamped by the MCP server's DaemonClient); the chat route derives it from the transport header",
      "type": "string"
    }
  },
  "required": [
    "rigName",
    "body"
  ]
}
```

## rig_chatroom_watch

Get recent chatroom messages for a rig (MCP returns history, not streaming)

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| rigName | "string" | yes | Rig name |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "rigName": {
      "type": "string",
      "description": "Rig name"
    }
  },
  "required": [
    "rigName"
  ]
}
```

## rig_add

Add a single member to an existing pod in a running rig (the add_member converge op). Identity-migration-free: mints a fresh seat, nothing existing re-keys.

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| rigId | "string" | yes | Target rig identifier |
| podNamespace | "string" | yes | Namespace of the existing pod to add the member to |
| member | "object" | yes | Member fragment with spec snake_case fields: id, runtime, agent_ref, profile, cwd (and optional model, codex_config_profile, restore_policy, label) |
| edges | "array" | no | Optional pod-local edges (from/to are member ids within the pod; resolved against the new member + existing pod-mates) |
| rigRoot | "string" | no | Root directory for agent resolution |

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "rigId": {
      "type": "string",
      "description": "Target rig identifier"
    },
    "podNamespace": {
      "type": "string",
      "description": "Namespace of the existing pod to add the member to"
    },
    "member": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Member fragment with spec snake_case fields: id, runtime, agent_ref, profile, cwd (and optional model, codex_config_profile, restore_policy, label)"
    },
    "edges": {
      "description": "Optional pod-local edges (from/to are member ids within the pod; resolved against the new member + existing pod-mates)",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string"
          },
          "to": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          }
        },
        "required": [
          "from",
          "to",
          "kind"
        ]
      }
    },
    "rigRoot": {
      "description": "Root directory for agent resolution",
      "type": "string"
    }
  },
  "required": [
    "rigId",
    "podNamespace",
    "member"
  ]
}
```

