{
  "auth": "bearer token (issued on bruinen via buoy-mcp-token; app-level enforcement)",
  "endpoint": "https://mcp.bruinen.co",
  "integration": {
    "claude-code": "docs/integrations/claude-code.md in the repo",
    "codex": "docs/integrations/codex.md \u2014 needs mcp-proxy stdio bridge",
    "generic": "docs/integrations/generic-sdk.md"
  },
  "procedures": [
    {
      "name": "add_new_caddy_route",
      "summary": "procedure: add_new_caddy_route"
    },
    {
      "name": "add_new_ui_host",
      "summary": "procedure: add_new_ui_host"
    },
    {
      "name": "commit_to_repo",
      "summary": "procedure: commit_to_repo"
    },
    {
      "name": "decommission_service",
      "summary": "procedure: decommission_service"
    },
    {
      "name": "deploy_cycle",
      "summary": "procedure: deploy_cycle"
    },
    {
      "name": "diagnose_buoy_offline",
      "summary": "procedure: diagnose_buoy_offline"
    },
    {
      "name": "diagnose_sensor_stale",
      "summary": "procedure: diagnose_sensor_stale"
    },
    {
      "name": "emergency_rollback",
      "summary": "procedure: emergency_rollback"
    },
    {
      "name": "issue_bearer_token",
      "summary": "procedure: issue_bearer_token"
    },
    {
      "name": "stage_changes",
      "summary": "procedure: stage_changes"
    }
  ],
  "resources": [
    {
      "description": "Every buoy service across hosts + roles.",
      "format": "yaml",
      "name": "service_inventory"
    },
    {
      "description": "Every buoy-* repo + what it runs + where.",
      "format": "yaml",
      "name": "repo_inventory"
    },
    {
      "description": "Natural-language capability \u2192 repo mapping.",
      "format": "yaml",
      "name": "capability_map"
    },
    {
      "description": "Canonical port + hostname map.",
      "format": "markdown",
      "name": "port_convention"
    },
    {
      "description": "Step-by-step how-to guides (branch/deploy/rollback/etc).",
      "format": "list",
      "name": "procedures"
    },
    {
      "description": "Last 500 agent tool invocations with attribution.",
      "format": "json",
      "name": "recent_traces"
    },
    {
      "description": "Live composite: services per host + deploys + locks + trace count.",
      "format": "json",
      "name": "infra_summary"
    },
    {
      "description": "Latest BMS + GPS + IMU + AIS snapshot.",
      "format": "json",
      "name": "sensors_summary"
    }
  ],
  "server": "buoy-agent-mcp",
  "tools": [
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "env": {
            "enum": [
              "prod",
              "staging"
            ],
            "type": "string"
          },
          "repo": {
            "minLength": 1,
            "type": "string"
          },
          "ttl_s": {
            "default": 600,
            "maximum": 3600,
            "minimum": 10,
            "type": "number"
          }
        },
        "required": [
          "env",
          "repo"
        ],
        "title": "acquire_deploy_lock.input",
        "type": "object"
      },
      "name": "acquire_deploy_lock",
      "properties": [
        "env",
        "repo",
        "ttl_s"
      ],
      "required": [
        "env",
        "repo"
      ],
      "scope": "write"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "branch": {
            "minLength": 1,
            "type": "string"
          },
          "env": {
            "default": "prod",
            "enum": [
              "prod",
              "staging"
            ],
            "type": "string"
          },
          "repo": {
            "enum": [
              "buoy-debug-dsp",
              "buoy-debug-ui",
              "buoy-bms-cache",
              "buoy-agents-mcp"
            ],
            "type": "string"
          }
        },
        "required": [
          "repo",
          "branch"
        ],
        "title": "check_branch_base.input",
        "type": "object"
      },
      "name": "check_branch_base",
      "properties": [
        "repo",
        "branch",
        "env"
      ],
      "required": [
        "repo",
        "branch"
      ],
      "scope": "read"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "branch": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "env": {
            "enum": [
              "prod",
              "staging"
            ],
            "type": "string"
          },
          "repo": {
            "minLength": 1,
            "type": "string"
          },
          "target_services": {
            "default": [],
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "repo",
          "env"
        ],
        "title": "check_workflow.input",
        "type": "object"
      },
      "name": "check_workflow",
      "properties": [
        "repo",
        "env",
        "branch",
        "target_services"
      ],
      "required": [
        "repo",
        "env"
      ],
      "scope": "read"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "dry_run": {
            "default": false,
            "type": "boolean"
          },
          "env": {
            "enum": [
              "prod",
              "staging"
            ],
            "type": "string"
          },
          "repo": {
            "enum": [
              "buoy-debug-dsp",
              "buoy-debug-ui",
              "buoy-bms-cache",
              "buoy-agents-mcp"
            ],
            "type": "string"
          }
        },
        "required": [
          "env",
          "repo"
        ],
        "title": "deploy.input",
        "type": "object"
      },
      "name": "deploy",
      "properties": [
        "env",
        "repo",
        "dry_run"
      ],
      "required": [
        "env",
        "repo"
      ],
      "scope": "write"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "lines": {
            "default": 200,
            "maximum": 2000,
            "minimum": 1,
            "type": "integer"
          },
          "since": {
            "default": "5m",
            "description": "journalctl --since argument; e.g. '5m', '1h', '2026-04-23 10:00:00'",
            "type": "string"
          },
          "unit": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "unit"
        ],
        "title": "get_journal.input",
        "type": "object"
      },
      "name": "get_journal",
      "properties": [
        "unit",
        "since",
        "lines"
      ],
      "required": [
        "unit"
      ],
      "scope": "read"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "host": {
            "enum": [
              "bruinen",
              "pi"
            ],
            "type": "string"
          },
          "unit": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "host",
          "unit"
        ],
        "title": "get_service_state.input",
        "type": "object"
      },
      "name": "get_service_state",
      "properties": [
        "host",
        "unit"
      ],
      "required": [
        "host",
        "unit"
      ],
      "scope": "read"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "host": {
            "enum": [
              "bruinen",
              "pi"
            ],
            "type": "string"
          }
        },
        "required": [
          "host"
        ],
        "title": "list_services.input",
        "type": "object"
      },
      "name": "list_services",
      "properties": [
        "host"
      ],
      "required": [
        "host"
      ],
      "scope": "read"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "event": {
            "description": "Short event name (e.g. 'deploy-start', 'sensor-warn'). Not an enum; free-form but should stay stable per use-case for later querying.",
            "maxLength": 256,
            "minLength": 1,
            "type": "string"
          },
          "payload": {
            "additionalProperties": true,
            "default": {},
            "description": "Arbitrary JSON payload (<=64 KB when serialized). No required fields \u2014 shape is per-event.",
            "type": "object"
          }
        },
        "required": [
          "event"
        ],
        "title": "log_trace.input",
        "type": "object"
      },
      "name": "log_trace",
      "properties": [
        "event",
        "payload"
      ],
      "required": [
        "event"
      ],
      "scope": "write"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "buoy_id": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "channel": {
            "default": "all",
            "description": "Which channel(s) to deliver on. More channels land later.",
            "enum": [
              "telegram",
              "all"
            ],
            "type": "string"
          },
          "message": {
            "maxLength": 4000,
            "minLength": 1,
            "type": "string"
          },
          "severity": {
            "enum": [
              "info",
              "warn",
              "crit"
            ],
            "type": "string"
          }
        },
        "required": [
          "severity",
          "message"
        ],
        "title": "notify.input",
        "type": "object"
      },
      "name": "notify",
      "properties": [
        "severity",
        "message",
        "buoy_id",
        "channel"
      ],
      "required": [
        "severity",
        "message"
      ],
      "scope": "write"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "env": {
            "enum": [
              "prod",
              "staging"
            ],
            "type": "string"
          }
        },
        "required": [
          "env"
        ],
        "title": "query_deploy_status.input",
        "type": "object"
      },
      "name": "query_deploy_status",
      "properties": [
        "env"
      ],
      "required": [
        "env"
      ],
      "scope": "read"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "env": {
            "enum": [
              "prod",
              "staging"
            ],
            "type": "string"
          },
          "repo": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "env",
          "repo"
        ],
        "title": "release_deploy_lock.input",
        "type": "object"
      },
      "name": "release_deploy_lock",
      "properties": [
        "env",
        "repo"
      ],
      "required": [
        "env",
        "repo"
      ],
      "scope": "write"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "host": {
            "enum": [
              "bruinen",
              "pi"
            ],
            "type": "string"
          },
          "unit": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "host",
          "unit"
        ],
        "title": "restart_service.input",
        "type": "object"
      },
      "name": "restart_service",
      "properties": [
        "host",
        "unit"
      ],
      "required": [
        "host",
        "unit"
      ],
      "scope": "write"
    },
    {
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "capability": {
            "minLength": 2,
            "type": "string"
          }
        },
        "required": [
          "capability"
        ],
        "title": "suggest_repo.input",
        "type": "object"
      },
      "name": "suggest_repo",
      "properties": [
        "capability"
      ],
      "required": [
        "capability"
      ],
      "scope": "read"
    }
  ],
  "transport": "MCP over HTTP/SSE + custom REST"
}
