{
  "data": {
    "tool": {
      "category": "infrastructure",
      "endpoint": "https://mcp.boathousecloud.com/mcp",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/boathousecloud-boathouse.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/boathousecloud-boathouse.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/boathousecloud-boathouse.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 6136,
          "counts": {
            "error": 0,
            "note": 1,
            "warn": 42
          },
          "findings": [
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "access_requests",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "allow_request",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "billing",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "capacity",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "card_link",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_tool",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "deploy",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "domain_attach",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "domain_buy",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "domain_check",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"check\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "domain_detach",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "domain_dns",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "domain_point",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "domain_primary",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "domain_renewal_set",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "domain_renewals",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "domain_repoint",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "domains_list",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_tool",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_tools",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "logs",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "prices",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "pull",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "referral",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "releases",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "request_access",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "restart",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "rollback",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "secrets_delete",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "secrets_list",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "secrets_set",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "set_access",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "share",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "topup",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "unshare",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "usage",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "users_add",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "users_invite",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "users_list",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "users_remove",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "whoami",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"whoami\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC23",
              "severity": "warn",
              "message": "41 tools",
              "fix": "Offer a smaller default toolset and let clients opt into the rest."
            },
            {
              "rule": "TC24",
              "severity": "note",
              "message": "41 of 41 tools have no outputSchema",
              "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:22:17Z",
        "count": 41,
        "note": "answered without the initialize handshake",
        "schemaTokens": 6136,
        "status": "ok",
        "tools": [
          {
            "name": "whoami",
            "description": "Who this project key belongs to: the email, the workspace, the domain its tools live on, and the prepaid balance. Call it first if you are not sure which workspace you are acting in.",
            "inputSchema": {
              "properties": {
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            }
          },
          {
            "name": "list_tools",
            "description": "Every tool in the workspace with its state (running/absent), current release, public URL and who can see it. A 'tool' is one small web app Boathouse runs behind the workspace login.",
            "inputSchema": {
              "properties": {
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            }
          },
          {
            "name": "get_tool",
            "description": "One tool in detail: URL, container state, current release, who it is visible to, and the list of people it has been shared with.",
            "inputSchema": {
              "properties": {
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool"
              ],
              "type": "object"
            }
          },
          {
            "name": "deploy",
            "description": "Deploy a folder as a tool and make it live at https://\u003ctool\u003e.\u003cworkspace domain\u003e. Send the whole folder in `files`, which MUST include a top-level Dockerfile whose process listens on $PORT (8080). Creates the tool on the first deploy; afterwards it replaces the running container. If you got these files from `pull`, pass the release number you pulled as `base` so a deploy someone else made in the meantime is not silently overwritten.",
            "inputSchema": {
              "properties": {
                "base": {
                  "description": "The release number these files were pulled from. The deploy is refused with STALE_BASE if a newer release is live.",
                  "type": "integer"
                },
                "base64": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Optional binary files: relative path -\u003e base64 of the bytes.",
                  "type": "object"
                },
                "files": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "The folder: relative path -\u003e the file's text content, e.g. {\"Dockerfile\": \"FROM python:3.12-slim\\n...\", \"app.py\": \"...\"}. No leading slash and no '..' in paths.",
                  "type": "object"
                },
                "name": {
                  "description": "Human name for the tool, used when it is created (e.g. 'CRCS Finance').",
                  "type": "string"
                },
                "note": {
                  "description": "Why this release exists; shown in the release list.",
                  "type": "string"
                },
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool",
                "files"
              ],
              "type": "object"
            }
          },
          {
            "name": "pull",
            "description": "Fetch the exact source folder a release was built from, so you can edit it and deploy it back. Returns the release number and the files as text (binary files come back base64 encoded). Tool admins only.",
            "inputSchema": {
              "properties": {
                "release": {
                  "description": "Which release to fetch. Defaults to the live one.",
                  "type": "integer"
                },
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool"
              ],
              "type": "object"
            }
          },
          {
            "name": "logs",
            "description": "The tool container's recent log lines, newest last. Use this to find out why a tool is failing.",
            "inputSchema": {
              "properties": {
                "since": {
                  "description": "Unix seconds: only lines after this moment.",
                  "type": "integer"
                },
                "tail": {
                  "description": "How many lines from the end (default 200, max 5000).",
                  "type": "integer"
                },
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool"
              ],
              "type": "object"
            }
          },
          {
            "name": "releases",
            "description": "The last 20 releases of a tool: number, status (live/superseded/failed), when, who and the note. A failed release shows the last line of its build log.",
            "inputSchema": {
              "properties": {
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool"
              ],
              "type": "object"
            }
          },
          {
            "name": "rollback",
            "description": "Put an earlier release back in service. With no `to`, goes back to the release before the live one. This rolls back the software, never the database.",
            "inputSchema": {
              "properties": {
                "to": {
                  "description": "Release number to restore. Defaults to the previous one.",
                  "type": "integer"
                },
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool"
              ],
              "type": "object"
            }
          },
          {
            "name": "restart",
            "description": "Restart the tool's container with its current release and current secrets.",
            "inputSchema": {
              "properties": {
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool"
              ],
              "type": "object"
            }
          },
          {
            "name": "share",
            "description": "Give one person access to one tool by email, at a tier: viewer (read only; the gateway blocks their writes), editor (may change the data), admin (may change the software, secrets, sharing). If the person is new, Boat House emails a secure invitation when email is configured. Check emailed in the result; if delivery failed, share the invitation page so the person can request their secure email.",
            "inputSchema": {
              "properties": {
                "email": {
                  "description": "The person's email address.",
                  "type": "string"
                },
                "labels": {
                  "description": "Optional app-specific words passed to the tool as headers (e.g. ['consultant']). Labels are not permissions.",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "tier": {
                  "description": "viewer, editor or admin. Default viewer.",
                  "enum": [
                    "viewer",
                    "editor",
                    "admin"
                  ],
                  "type": "string"
                },
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool",
                "email"
              ],
              "type": "object"
            }
          },
          {
            "name": "unshare",
            "description": "Take away one person's access to one tool. They keep their workspace account.",
            "inputSchema": {
              "properties": {
                "email": {
                  "description": "The person's email address.",
                  "type": "string"
                },
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool",
                "email"
              ],
              "type": "object"
            }
          },
          {
            "name": "request_access",
            "description": "Ask to be let into a tool in someone else's workspace, at viewer, editor or admin. Its owners get an email with one Allow button; nobody there runs a command. The person is emailed when it is allowed.",
            "inputSchema": {
              "properties": {
                "message": {
                  "description": "One line the owners see, e.g. who you are and why.",
                  "type": "string"
                },
                "target": {
                  "description": "\u003cworkspace\u003e/\u003ctool\u003e, for example chloe/db.",
                  "type": "string"
                },
                "tier": {
                  "description": "Default viewer.",
                  "enum": [
                    "viewer",
                    "editor",
                    "admin"
                  ],
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "target"
              ],
              "type": "object"
            }
          },
          {
            "name": "access_requests",
            "description": "Everyone waiting to be let into one of this workspace's tools: request id, email, tier asked for, and their message. Owners and tool admins.",
            "inputSchema": {
              "properties": {
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            }
          },
          {
            "name": "allow_request",
            "description": "Let a waiting person in at the tier they asked for. Their tool grant is made and they get an email saying what to do next. Owners and tool admins.",
            "inputSchema": {
              "properties": {
                "id": {
                  "description": "The request id from access_requests.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "set_access",
            "description": "Set who a tool is open to by default: 'members' means anyone in the workspace (at the given tier), 'listed' means only the people it has been explicitly shared with. Use 'listed' for anything sensitive.",
            "inputSchema": {
              "properties": {
                "mode": {
                  "description": "members (anyone in the workspace), listed (only people shared with), or public (anyone on the internet may read; writes still need sign-in).",
                  "enum": [
                    "members",
                    "listed",
                    "public"
                  ],
                  "type": "string"
                },
                "tier": {
                  "description": "The tier workspace members get when mode is 'members'.",
                  "enum": [
                    "viewer",
                    "editor",
                    "admin"
                  ],
                  "type": "string"
                },
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool",
                "mode"
              ],
              "type": "object"
            }
          },
          {
            "name": "secrets_list",
            "description": "The names of a tool's secrets (API keys and the like), when each was last set and by whom. Values are never returned.",
            "inputSchema": {
              "properties": {
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool"
              ],
              "type": "object"
            }
          },
          {
            "name": "secrets_set",
            "description": "Set one secret on a tool. It is injected as an environment variable of that name and the tool is restarted. Names are UPPER_SNAKE_CASE. Never echo the value back to the user.",
            "inputSchema": {
              "properties": {
                "name": {
                  "description": "UPPER_SNAKE_CASE environment variable name, e.g. STRIPE_KEY.",
                  "type": "string"
                },
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "value": {
                  "description": "The secret value.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool",
                "name",
                "value"
              ],
              "type": "object"
            }
          },
          {
            "name": "secrets_delete",
            "description": "Remove one secret from a tool. It disappears on the tool's next restart or deploy.",
            "inputSchema": {
              "properties": {
                "name": {
                  "description": "The secret's name.",
                  "type": "string"
                },
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool",
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "users_list",
            "description": "Everyone in the workspace: role (owner, member or guest), name, and whether they have set a password yet.",
            "inputSchema": {
              "properties": {
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            }
          },
          {
            "name": "users_add",
            "description": "Add a person to the workspace, or change their role. owner = may spend money, buy domains and manage people, and is admin on every tool; member = may see tools open to members and deploy their own; guest = sees only what is explicitly shared with them. Returns a one-time invite link for someone new. Owners only.",
            "inputSchema": {
              "properties": {
                "email": {
                  "description": "The person's email address.",
                  "type": "string"
                },
                "role": {
                  "description": "Default member.",
                  "enum": [
                    "member",
                    "owner",
                    "guest"
                  ],
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "email"
              ],
              "type": "object"
            }
          },
          {
            "name": "users_invite",
            "description": "Resend an invitation to someone in the workspace. New accounts confirm their mailbox through the emailed link; established accounts receive a normal sign-in URL. Password recovery is self-service on that page, and only the account holder's mailbox receives a reset link. Check emailed before offering a fallback.",
            "inputSchema": {
              "properties": {
                "email": {
                  "description": "The person's email address.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "email"
              ],
              "type": "object"
            }
          },
          {
            "name": "users_remove",
            "description": "Remove a person from the workspace. Their sessions, project keys, invites and tool grants stop working immediately. Owners only.",
            "inputSchema": {
              "properties": {
                "email": {
                  "description": "The person's email address.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "email"
              ],
              "type": "object"
            }
          },
          {
            "name": "domains_list",
            "description": "The addresses this workspace answers on: the free \u003cworkspace\u003e.boathousecloud.com address, the primary domain, and every custom domain with its DNS state.",
            "inputSchema": {
              "properties": {
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            }
          },
          {
            "name": "domain_check",
            "description": "Ask the registrar whether a domain is free and what it costs per year. Buys nothing. total_cents is the price the workspace pays (registrar_cents plus Boathouse's margin_cents); show that one.",
            "inputSchema": {
              "properties": {
                "domain": {
                  "description": "A full domain name, e.g. 'crcstools.com'.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "domain"
              ],
              "type": "object"
            }
          },
          {
            "name": "domain_buy",
            "description": "Buy a domain through Boathouse's registrar and point it at this box, paid from the workspace's prepaid balance. Without confirm it only returns the quote (cost now, renewal price, your balance) and buys nothing. Owners only.",
            "inputSchema": {
              "properties": {
                "confirm": {
                  "description": "False or absent returns the quote and does nothing. True actually does it.",
                  "type": "boolean"
                },
                "domain": {
                  "description": "The domain to buy, e.g. 'crcstools.com'.",
                  "type": "string"
                },
                "max_cost_cents": {
                  "description": "Maximum approved total, including Boathouse's margin. Required to confirm.",
                  "minimum": 1,
                  "type": "integer"
                },
                "quote_id": {
                  "description": "The quote_id from the dry run. Required to confirm; reuse it on retries.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "domain"
              ],
              "type": "object"
            }
          },
          {
            "name": "domain_renewals",
            "description": "Read domain expiry dates, renewal status, spending limits and billing problems. Owners only.",
            "inputSchema": {
              "properties": {
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            }
          },
          {
            "name": "domain_renewal_set",
            "description": "Set automatic renewal and a maximum prepaid renewal charge. Quote the change first, then require explicit approval with confirm true. Turning renewal off lets the domain expire. Owners only.",
            "inputSchema": {
              "properties": {
                "confirm": {
                  "description": "False or absent returns the quote and does nothing. True actually does it.",
                  "type": "boolean"
                },
                "domain": {
                  "description": "A domain owned through this organization, including detached domains.",
                  "type": "string"
                },
                "enabled": {
                  "description": "True renews from prepaid credit; false lets the domain expire.",
                  "type": "boolean"
                },
                "max_cost_cents": {
                  "description": "Approved maximum per renewal including the service fee; required when enabling.",
                  "maximum": 100000,
                  "minimum": 1,
                  "type": "integer"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "domain",
                "enabled"
              ],
              "type": "object"
            }
          },
          {
            "name": "domain_attach",
            "description": "Bring a domain the workspace already owns elsewhere: Boathouse starts answering on it and returns the DNS records to make at the current DNS host. Optionally point it at one tool at the same time. Owners only.",
            "inputSchema": {
              "properties": {
                "domain": {
                  "description": "A full domain name you control, e.g. 'crcstools.com'.",
                  "type": "string"
                },
                "tool": {
                  "description": "Optional: the tool the bare domain and www should open.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "domain"
              ],
              "type": "object"
            }
          },
          {
            "name": "domain_point",
            "description": "Make a domain (and its www) open one tool instead of the workspace's tool list. An empty tool clears it. Owners only.",
            "inputSchema": {
              "properties": {
                "domain": {
                  "description": "A domain the workspace answers on.",
                  "type": "string"
                },
                "tool": {
                  "description": "The tool to open, or an empty string to show the tool list again.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "domain"
              ],
              "type": "object"
            }
          },
          {
            "name": "domain_primary",
            "description": "Make one of the workspace's domains the primary one: the address tool URLs and emails use. Owners only.",
            "inputSchema": {
              "properties": {
                "domain": {
                  "description": "A domain the workspace answers on.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "domain"
              ],
              "type": "object"
            }
          },
          {
            "name": "domain_dns",
            "description": "The DNS records the registrar currently holds for a domain Boathouse bought or manages. Changes nothing.",
            "inputSchema": {
              "properties": {
                "domain": {
                  "description": "A domain the workspace answers on.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "domain"
              ],
              "type": "object"
            }
          },
          {
            "name": "domain_repoint",
            "description": "Rewrite a Boathouse-managed domain's DNS records to point at this Boathouse again (after a move, or if someone changed them). Owners only.",
            "inputSchema": {
              "properties": {
                "domain": {
                  "description": "A domain the workspace answers on.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "domain"
              ],
              "type": "object"
            }
          },
          {
            "name": "domain_detach",
            "description": "Stop serving a domain. The registration itself is untouched and domain_attach brings it back. Owners only.",
            "inputSchema": {
              "properties": {
                "domain": {
                  "description": "A domain the workspace answers on.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "domain"
              ],
              "type": "object"
            }
          },
          {
            "name": "usage",
            "description": "Check storage, memory, CPU and the reason an app is paused. Tool admins only.",
            "inputSchema": {
              "properties": {
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool"
              ],
              "type": "object"
            }
          },
          {
            "name": "capacity",
            "description": "Quote additional app storage. Show the maximum extra monthly price and get owner approval before confirming. No automatic upgrade. Owners only.",
            "inputSchema": {
              "properties": {
                "confirm": {
                  "description": "False or absent returns the quote and does nothing. True actually does it.",
                  "type": "boolean"
                },
                "max_extra_monthly_cents": {
                  "description": "Maximum extra monthly price from the approved quote, in cents.",
                  "type": "integer"
                },
                "quote_id": {
                  "description": "The exact capacity quote the owner approved.",
                  "type": "string"
                },
                "storage_gb": {
                  "description": "Requested total storage in whole GB; starts with a price quote.",
                  "type": "integer"
                },
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool"
              ],
              "type": "object"
            }
          },
          {
            "name": "billing",
            "description": "The workspace's money: prepaid balance, whether it is paused, how fast running tools burn credit, how many days are left, whether a card is on file, and the last ledger lines.",
            "inputSchema": {
              "properties": {
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            }
          },
          {
            "name": "prices",
            "description": "What Boathouse charges, in plain words: one organization plan for up to five lightweight tools, shared limits, storage, and the domain margin.",
            "inputSchema": {
              "properties": {
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            }
          },
          {
            "name": "referral",
            "description": "This person's referral code and link, the deal in words, and what each referred workspace has earned them so far (10% of usage charges, paid monthly in cash).",
            "inputSchema": {
              "properties": {
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            }
          },
          {
            "name": "topup",
            "description": "Open secure Stripe checkout to add prepaid hosting credit; the owner completes payment there. Without confirm it only quotes and returns operation_id. Confirm the same cents and operation_id after user approval; reuse the ID on retries. Between $5.00 (500) and $1,000.00 (100000). Owners only.",
            "inputSchema": {
              "properties": {
                "cents": {
                  "description": "Amount in cents, e.g. 2000 for $20.00.",
                  "type": "integer"
                },
                "confirm": {
                  "description": "False or absent returns the quote and does nothing. True actually does it.",
                  "type": "boolean"
                },
                "operation_id": {
                  "description": "The payment quote ID, required when confirming or retrying.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "cents"
              ],
              "type": "object"
            }
          },
          {
            "name": "card_link",
            "description": "A one-time link where a workspace owner types a card into Stripe. This is the only part of Boathouse that needs a browser. Owners only.",
            "inputSchema": {
              "properties": {
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            }
          },
          {
            "name": "delete_tool",
            "description": "Delete a tool: its container, its releases and its sharing. By default the tool's database and files are kept. purge true also destroys them forever, and then requires purge_confirm true as well.",
            "inputSchema": {
              "properties": {
                "purge": {
                  "description": "Also destroy the tool's database and uploaded files. Irreversible.",
                  "type": "boolean"
                },
                "purge_confirm": {
                  "description": "Must be true alongside purge, as a second confirmation.",
                  "type": "boolean"
                },
                "tool": {
                  "description": "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace.",
                  "type": "string"
                },
                "workspace": {
                  "description": "Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.",
                  "type": "string"
                }
              },
              "required": [
                "tool"
              ],
              "type": "object"
            }
          }
        ]
      },
      "name": "Boat House",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": null,
      "pageJsonUrl": "https://www.anchorterminal.com/tools/boathousecloud-boathouse.json",
      "popularity": {
        "githubStars": 1
      },
      "registryName": "com.boathousecloud/boathouse",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://mcp.boathousecloud.com/mcp"
        }
      ],
      "repository": "https://github.com/allenzhangyiteng/boathouse-cloud",
      "reviewed": false,
      "slug": "boathousecloud-boathouse",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=com.boathousecloud/boathouse",
      "summary": "Deploy and share small apps with team login, persistent data, versioned updates and domains.",
      "updatedAt": "2026-09-17T22:00:40Z",
      "url": "https://www.anchorterminal.com/tools/boathousecloud-boathouse",
      "vendor": "boathousecloud.com",
      "vendorUrl": "https://boathousecloud.com",
      "version": "1.0.0",
      "websiteUrl": "https://boathousecloud.com",
      "where": "hosted",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/boathousecloud-boathouse",
    "json": "https://www.anchorterminal.com/tools/boathousecloud-boathouse.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/boathousecloud-boathouse.md",
    "slim": "https://www.anchorterminal.com/tools/boathousecloud-boathouse.min.md"
  },
  "markdown": "# Boat House\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by boathousecloud.com (https://boathousecloud.com)\n- Category: Cloud \u0026 infrastructure (https://www.anchorterminal.com/categories/infrastructure.md)\n- Listed because: It's published in the registry under boathousecloud.com, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Deploy and share small apps with team login, persistent data, versioned updates and domains.\n\n## Facts\n\n- MCP registry: `com.boathousecloud/boathouse` 1.0.0\n- Endpoint: https://mcp.boathousecloud.com/mcp (streamable HTTP)\n- Source: https://github.com/allenzhangyiteng/boathouse-cloud\n- Website: https://boathousecloud.com\n- GitHub stars: 1\n- Registry entry updated: 2026-09-17\n\n## Tools\n\n- Tools it lists (41, about 6,136 tokens of context, `tools/list` without credentials, checked 2026-10-04 22:22 UTC):\n  - `whoami`: Who this project key belongs to: the email, the workspace, the domain its tools live on, and the prepaid balance. Call it first if you are not sure which…\n  - `list_tools`: Every tool in the workspace with its state (running/absent), current release, public URL and who can see it. A 'tool' is one small web app Boathouse runs…\n  - `get_tool`: One tool in detail: URL, container state, current release, who it is visible to, and the list of people it has been shared with.\n  - `deploy`: Deploy a folder as a tool and make it live at https://\u003ctool\u003e.\u003cworkspace domain\u003e. Send the whole folder in `files`, which MUST include a top-level Dockerfile…\n  - `pull`: Fetch the exact source folder a release was built from, so you can edit it and deploy it back. Returns the release number and the files as text (binary files…\n  - `logs`: The tool container's recent log lines, newest last. Use this to find out why a tool is failing.\n  - `releases`: The last 20 releases of a tool: number, status (live/superseded/failed), when, who and the note. A failed release shows the last line of its build log.\n  - `rollback`: Put an earlier release back in service. With no `to`, goes back to the release before the live one. This rolls back the software, never the database.\n  - `restart`: Restart the tool's container with its current release and current secrets.\n  - `share`: Give one person access to one tool by email, at a tier: viewer (read only; the gateway blocks their writes), editor (may change the data), admin (may change…\n  - `unshare`: Take away one person's access to one tool. They keep their workspace account.\n  - `request_access`: Ask to be let into a tool in someone else's workspace, at viewer, editor or admin. Its owners get an email with one Allow button; nobody there runs a command.…\n  - `access_requests`: Everyone waiting to be let into one of this workspace's tools: request id, email, tier asked for, and their message. Owners and tool admins.\n  - `allow_request`: Let a waiting person in at the tier they asked for. Their tool grant is made and they get an email saying what to do next. Owners and tool admins.\n  - `set_access`: Set who a tool is open to by default: 'members' means anyone in the workspace (at the given tier), 'listed' means only the people it has been explicitly shared…\n  - `secrets_list`: The names of a tool's secrets (API keys and the like), when each was last set and by whom. Values are never returned.\n  - `secrets_set`: Set one secret on a tool. It is injected as an environment variable of that name and the tool is restarted. Names are UPPER_SNAKE_CASE. Never echo the value…\n  - `secrets_delete`: Remove one secret from a tool. It disappears on the tool's next restart or deploy.\n  - `users_list`: Everyone in the workspace: role (owner, member or guest), name, and whether they have set a password yet.\n  - `users_add`: Add a person to the workspace, or change their role. owner = may spend money, buy domains and manage people, and is admin on every tool; member = may see tools…\n  - `users_invite`: Resend an invitation to someone in the workspace. New accounts confirm their mailbox through the emailed link; established accounts receive a normal sign-in…\n  - `users_remove`: Remove a person from the workspace. Their sessions, project keys, invites and tool grants stop working immediately. Owners only.\n  - `domains_list`: The addresses this workspace answers on: the free \u003cworkspace\u003e.boathousecloud.com address, the primary domain, and every custom domain with its DNS state.\n  - `domain_check`: Ask the registrar whether a domain is free and what it costs per year. Buys nothing. total_cents is the price the workspace pays (registrar_cents plus…\n  - `domain_buy`: Buy a domain through Boathouse's registrar and point it at this box, paid from the workspace's prepaid balance. Without confirm it only returns the quote (cost…\n  - `domain_renewals`: Read domain expiry dates, renewal status, spending limits and billing problems. Owners only.\n  - `domain_renewal_set`: Set automatic renewal and a maximum prepaid renewal charge. Quote the change first, then require explicit approval with confirm true. Turning renewal off lets…\n  - `domain_attach`: Bring a domain the workspace already owns elsewhere: Boathouse starts answering on it and returns the DNS records to make at the current DNS host. Optionally…\n  - `domain_point`: Make a domain (and its www) open one tool instead of the workspace's tool list. An empty tool clears it. Owners only.\n  - `domain_primary`: Make one of the workspace's domains the primary one: the address tool URLs and emails use. Owners only.\n  - `domain_dns`: The DNS records the registrar currently holds for a domain Boathouse bought or manages. Changes nothing.\n  - `domain_repoint`: Rewrite a Boathouse-managed domain's DNS records to point at this Boathouse again (after a move, or if someone changed them). Owners only.\n  - `domain_detach`: Stop serving a domain. The registration itself is untouched and domain_attach brings it back. Owners only.\n  - `usage`: Check storage, memory, CPU and the reason an app is paused. Tool admins only.\n  - `capacity`: Quote additional app storage. Show the maximum extra monthly price and get owner approval before confirming. No automatic upgrade. Owners only.\n  - `billing`: The workspace's money: prepaid balance, whether it is paused, how fast running tools burn credit, how many days are left, whether a card is on file, and the…\n  - `prices`: What Boathouse charges, in plain words: one organization plan for up to five lightweight tools, shared limits, storage, and the domain margin.\n  - `referral`: This person's referral code and link, the deal in words, and what each referred workspace has earned them so far (10% of usage charges, paid monthly in cash).\n  - `topup`: Open secure Stripe checkout to add prepaid hosting credit; the owner completes payment there. Without confirm it only quotes and returns operation_id. Confirm…\n  - `card_link`: A one-time link where a workspace owner types a card into Stripe. This is the only part of Boathouse that needs a browser. Owners only.\n  - `delete_tool`: Delete a tool: its container, its releases and its sharing. By default the tool's database and files are kept. purge true also destroys them forever, and then…\n- How its tools read to an agent (0 errors, 42 warnings, 1 note, about 6,136 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC16 access_requests: no readOnlyHint or destructiveHint\n  - warn TC16 allow_request: no readOnlyHint or destructiveHint\n  - warn TC16 billing: no readOnlyHint or destructiveHint\n  - warn TC16 capacity: no readOnlyHint or destructiveHint\n  - warn TC16 card_link: no readOnlyHint or destructiveHint\n  - warn TC16 delete_tool: no readOnlyHint or destructiveHint\n  - warn TC16 deploy: no readOnlyHint or destructiveHint\n  - warn TC16 domain_attach: no readOnlyHint or destructiveHint\n  - warn TC16 domain_buy: no readOnlyHint or destructiveHint\n  - warn TC16 domain_check: no readOnlyHint or destructiveHint\n  - warn TC16 domain_detach: no readOnlyHint or destructiveHint\n  - warn TC16 domain_dns: no readOnlyHint or destructiveHint\n  - warn TC16 domain_point: no readOnlyHint or destructiveHint\n  - warn TC16 domain_primary: no readOnlyHint or destructiveHint\n  - warn TC16 domain_renewal_set: no readOnlyHint or destructiveHint\n  - warn TC16 domain_renewals: no readOnlyHint or destructiveHint\n  - warn TC16 domain_repoint: no readOnlyHint or destructiveHint\n  - warn TC16 domains_list: no readOnlyHint or destructiveHint\n  - warn TC16 get_tool: no readOnlyHint or destructiveHint\n  - warn TC16 list_tools: no readOnlyHint or destructiveHint\n  - warn TC16 logs: no readOnlyHint or destructiveHint\n  - warn TC16 prices: no readOnlyHint or destructiveHint\n  - warn TC16 pull: no readOnlyHint or destructiveHint\n  - warn TC16 referral: no readOnlyHint or destructiveHint\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/boathousecloud-boathouse.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "Boat House",
        "url": ""
      }
    ],
    "description": "Boat House, an MCP server by boathousecloud.com, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Deploy and share small apps with team login, persistent data, versioned updates and domains.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "Boat House",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/boathousecloud-boathouse",
    "published": "",
    "section": "indexed",
    "title": "Boat House: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/boathousecloud-boathouse"
  },
  "tokens": {
    "markdown": 2500,
    "slim": 2430
  },
  "version": 1
}
