MCP 서버

Boat House

com.boathousecloud/boathouse

이 MCP로 할 수 있는 일

Deploys and operates small containerized web applications with releases, rollbacks, persistent data, access controls, secrets, billing, and custom domains.

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.
입력 스키마
{'type': 'object', 'required': [], 'properties': {'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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.
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The request id from access_requests.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 last ledger lines.
입력 스키마
{'type': 'object', 'required': [], 'properties': {'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
capacity
Quote additional app storage. Show the maximum extra monthly price and get owner approval before confirming. No automatic upgrade. Owners only.
입력 스키마
{'type': 'object', 'required': ['tool'], 'properties': {'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'confirm': {'type': 'boolean', 'description': 'False or absent returns the quote and does nothing. True actually does it.'}, 'quote_id': {'type': 'string', 'description': 'The exact capacity quote the owner approved.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}, 'storage_gb': {'type': 'integer', 'description': 'Requested total storage in whole GB; starts with a price quote.'}, 'max_extra_monthly_cents': {'type': 'integer', 'description': 'Maximum extra monthly price from the approved quote, in cents.'}}}
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.
입력 스키마
{'type': 'object', 'required': [], 'properties': {'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 requires purge_confirm true as well.
입력 스키마
{'type': 'object', 'required': ['tool'], 'properties': {'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'purge': {'type': 'boolean', 'description': "Also destroy the tool's database and uploaded files. Irreversible."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}, 'purge_confirm': {'type': 'boolean', 'description': 'Must be true alongside purge, as a second confirmation.'}}}
deploy
Deploy a folder as a tool and make it live at https://<tool>.<workspace domain>. 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.
입력 스키마
{'type': 'object', 'required': ['tool', 'files'], 'properties': {'base': {'type': 'integer', 'description': 'The release number these files were pulled from. The deploy is refused with STALE_BASE if a newer release is live.'}, 'name': {'type': 'string', 'description': "Human name for the tool, used when it is created (e.g. 'CRCS Finance')."}, 'note': {'type': 'string', 'description': 'Why this release exists; shown in the release list.'}, 'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'files': {'type': 'object', 'description': 'The folder: relative path -> the file\'s text content, e.g. {"Dockerfile": "FROM python:3.12-slim\\n...", "app.py": "..."}. No leading slash and no \'..\' in paths.', 'additionalProperties': {'type': 'string'}}, 'base64': {'type': 'object', 'description': 'Optional binary files: relative path -> base64 of the bytes.', 'additionalProperties': {'type': 'string'}}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 point it at one tool at the same time. Owners only.
입력 스키마
{'type': 'object', 'required': ['domain'], 'properties': {'tool': {'type': 'string', 'description': 'Optional: the tool the bare domain and www should open.'}, 'domain': {'type': 'string', 'description': "A full domain name you control, e.g. 'crcstools.com'."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 now, renewal price, your balance) and buys nothing. Owners only.
입력 스키마
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': "The domain to buy, e.g. 'crcstools.com'."}, 'confirm': {'type': 'boolean', 'description': 'False or absent returns the quote and does nothing. True actually does it.'}, 'quote_id': {'type': 'string', 'description': 'The quote_id from the dry run. Required to confirm; reuse it on retries.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}, 'max_cost_cents': {'type': 'integer', 'minimum': 1, 'description': "Maximum approved total, including Boathouse's margin. Required to confirm."}}}
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 Boathouse's margin_cents); show that one.
입력 스키마
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': "A full domain name, e.g. 'crcstools.com'."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
domain_detach
Stop serving a domain. The registration itself is untouched and domain_attach brings it back. Owners only.
입력 스키마
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'A domain the workspace answers on.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
domain_dns
The DNS records the registrar currently holds for a domain Boathouse bought or manages. Changes nothing.
입력 스키마
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'A domain the workspace answers on.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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.
입력 스키마
{'type': 'object', 'required': ['domain'], 'properties': {'tool': {'type': 'string', 'description': 'The tool to open, or an empty string to show the tool list again.'}, 'domain': {'type': 'string', 'description': 'A domain the workspace answers on.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
domain_primary
Make one of the workspace's domains the primary one: the address tool URLs and emails use. Owners only.
입력 스키마
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'A domain the workspace answers on.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
domain_renewals
Read domain expiry dates, renewal status, spending limits and billing problems. Owners only.
입력 스키마
{'type': 'object', 'required': [], 'properties': {'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 the domain expire. Owners only.
입력 스키마
{'type': 'object', 'required': ['domain', 'enabled'], 'properties': {'domain': {'type': 'string', 'description': 'A domain owned through this organization, including detached domains.'}, 'confirm': {'type': 'boolean', 'description': 'False or absent returns the quote and does nothing. True actually does it.'}, 'enabled': {'type': 'boolean', 'description': 'True renews from prepaid credit; false lets the domain expire.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}, 'max_cost_cents': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Approved maximum per renewal including the service fee; required when enabling.'}}}
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.
입력 스키마
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'A domain the workspace answers on.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
domains_list
The addresses this workspace answers on: the free <workspace>.boathousecloud.com address, the primary domain, and every custom domain with its DNS state.
입력 스키마
{'type': 'object', 'required': [], 'properties': {'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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.
입력 스키마
{'type': 'object', 'required': ['tool'], 'properties': {'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 behind the workspace login.
입력 스키마
{'type': 'object', 'required': [], 'properties': {'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
logs
The tool container's recent log lines, newest last. Use this to find out why a tool is failing.
입력 스키마
{'type': 'object', 'required': ['tool'], 'properties': {'tail': {'type': 'integer', 'description': 'How many lines from the end (default 200, max 5000).'}, 'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'since': {'type': 'integer', 'description': 'Unix seconds: only lines after this moment.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
prices
What Boathouse charges, in plain words: one organization plan for up to five lightweight tools, shared limits, storage, and the domain margin.
입력 스키마
{'type': 'object', 'required': [], 'properties': {'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 come back base64 encoded). Tool admins only.
입력 스키마
{'type': 'object', 'required': ['tool'], 'properties': {'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'release': {'type': 'integer', 'description': 'Which release to fetch. Defaults to the live one.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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).
입력 스키마
{'type': 'object', 'required': [], 'properties': {'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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.
입력 스키마
{'type': 'object', 'required': ['tool'], 'properties': {'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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. The person is emailed when it is allowed.
입력 스키마
{'type': 'object', 'required': ['target'], 'properties': {'tier': {'enum': ['viewer', 'editor', 'admin'], 'type': 'string', 'description': 'Default viewer.'}, 'target': {'type': 'string', 'description': '<workspace>/<tool>, for example chloe/db.'}, 'message': {'type': 'string', 'description': 'One line the owners see, e.g. who you are and why.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
restart
Restart the tool's container with its current release and current secrets.
입력 스키마
{'type': 'object', 'required': ['tool'], 'properties': {'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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.
입력 스키마
{'type': 'object', 'required': ['tool'], 'properties': {'to': {'type': 'integer', 'description': 'Release number to restore. Defaults to the previous one.'}, 'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
secrets_delete
Remove one secret from a tool. It disappears on the tool's next restart or deploy.
입력 스키마
{'type': 'object', 'required': ['tool', 'name'], 'properties': {'name': {'type': 'string', 'description': "The secret's name."}, 'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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.
입력 스키마
{'type': 'object', 'required': ['tool'], 'properties': {'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 back to the user.
입력 스키마
{'type': 'object', 'required': ['tool', 'name', 'value'], 'properties': {'name': {'type': 'string', 'description': 'UPPER_SNAKE_CASE environment variable name, e.g. STRIPE_KEY.'}, 'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'value': {'type': 'string', 'description': 'The secret value.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 with. Use 'listed' for anything sensitive.
입력 스키마
{'type': 'object', 'required': ['tool', 'mode'], 'properties': {'mode': {'enum': ['members', 'listed', 'public'], 'type': 'string', 'description': 'members (anyone in the workspace), listed (only people shared with), or public (anyone on the internet may read; writes still need sign-in).'}, 'tier': {'enum': ['viewer', 'editor', 'admin'], 'type': 'string', 'description': "The tier workspace members get when mode is 'members'."}, 'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 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.
입력 스키마
{'type': 'object', 'required': ['tool', 'email'], 'properties': {'tier': {'enum': ['viewer', 'editor', 'admin'], 'type': 'string', 'description': 'viewer, editor or admin. Default viewer.'}, 'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'email': {'type': 'string', 'description': "The person's email address."}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': "Optional app-specific words passed to the tool as headers (e.g. ['consultant']). Labels are not permissions."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 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.
입력 스키마
{'type': 'object', 'required': ['cents'], 'properties': {'cents': {'type': 'integer', 'description': 'Amount in cents, e.g. 2000 for $20.00.'}, 'confirm': {'type': 'boolean', 'description': 'False or absent returns the quote and does nothing. True actually does it.'}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}, 'operation_id': {'type': 'string', 'description': 'The payment quote ID, required when confirming or retrying.'}}}
unshare
Take away one person's access to one tool. They keep their workspace account.
입력 스키마
{'type': 'object', 'required': ['tool', 'email'], 'properties': {'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'email': {'type': 'string', 'description': "The person's email address."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
usage
Check storage, memory, CPU and the reason an app is paused. Tool admins only.
입력 스키마
{'type': 'object', 'required': ['tool'], 'properties': {'tool': {'type': 'string', 'description': "The tool's short name, for example 'finance', or 'acme/finance' to select its workspace."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 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.
입력 스키마
{'type': 'object', 'required': ['email'], 'properties': {'role': {'enum': ['member', 'owner', 'guest'], 'type': 'string', 'description': 'Default member.'}, 'email': {'type': 'string', 'description': "The person's email address."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 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.
입력 스키마
{'type': 'object', 'required': ['email'], 'properties': {'email': {'type': 'string', 'description': "The person's email address."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
users_list
Everyone in the workspace: role (owner, member or guest), name, and whether they have set a password yet.
입력 스키마
{'type': 'object', 'required': [], 'properties': {'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
users_remove
Remove a person from the workspace. Their sessions, project keys, invites and tool grants stop working immediately. Owners only.
입력 스키마
{'type': 'object', 'required': ['email'], 'properties': {'email': {'type': 'string', 'description': "The person's email address."}, 'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
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 workspace you are acting in.
입력 스키마
{'type': 'object', 'required': [], 'properties': {'workspace': {'type': 'string', 'description': 'Workspace slug to act in. Use this when you belong to several workspaces; whoami lists them.'}}}
추가됨
delete_tool
2026년 9월 19일 2:40 AM
추가됨
card_link
2026년 9월 19일 2:40 AM
추가됨
topup
2026년 9월 19일 2:40 AM
추가됨
referral
2026년 9월 19일 2:40 AM
추가됨
prices
2026년 9월 19일 2:40 AM
추가됨
billing
2026년 9월 19일 2:40 AM
추가됨
capacity
2026년 9월 19일 2:40 AM
추가됨
usage
2026년 9월 19일 2:40 AM
추가됨
domain_detach
2026년 9월 19일 2:40 AM
추가됨
domain_repoint
2026년 9월 19일 2:40 AM
추가됨
domain_dns
2026년 9월 19일 2:40 AM
추가됨
domain_primary
2026년 9월 19일 2:40 AM
추가됨
domain_point
2026년 9월 19일 2:40 AM
추가됨
domain_attach
2026년 9월 19일 2:40 AM
추가됨
domain_renewal_set
2026년 9월 19일 2:40 AM
추가됨
domain_renewals
2026년 9월 19일 2:40 AM
추가됨
domain_buy
2026년 9월 19일 2:40 AM
추가됨
domain_check
2026년 9월 19일 2:40 AM
추가됨
domains_list
2026년 9월 19일 2:40 AM
추가됨
users_remove
2026년 9월 19일 2:40 AM
추가됨
users_invite
2026년 9월 19일 2:40 AM
추가됨
users_add
2026년 9월 19일 2:40 AM
추가됨
users_list
2026년 9월 19일 2:40 AM
추가됨
secrets_delete
2026년 9월 19일 2:40 AM
추가됨
secrets_set
2026년 9월 19일 2:40 AM
추가됨
secrets_list
2026년 9월 19일 2:40 AM
추가됨
set_access
2026년 9월 19일 2:40 AM
추가됨
allow_request
2026년 9월 19일 2:40 AM
추가됨
access_requests
2026년 9월 19일 2:40 AM
추가됨
request_access
2026년 9월 19일 2:40 AM