ship.page
by ship.page · remote · no sign-in to list tools · v1.0.0 · published by page.ship
Deploy HTML from any agent: POST markup, get a live URL. Static hosting API with MCP tools.
11 tools: 8 can delete or cancel things and 3 change things.
Scanned Oct 21, 2026
- Deletes or cancels8Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things3Claude Code: ask: see these tools
- Only reads0Claude Code: allow
4 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http ship-page https://ship.page/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnlist_drops
The server marks "list_drops" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "list_drops" says "list": a word for reading.
- Warnrestore_drop
The server marks "restore_drop" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "restore_drop" says "drop": a word for removing or ending something.
- Warnget_limits
The server marks "get_limits" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_limits" says "get": a word for reading.
- Warnget_account
The server marks "get_account" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_account" says "get": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
11 tools
Deletes or cancels 8Claude Code: deny
append_filesAdd files to a drop owned by the authenticated account (requires an sp_ API key and an active subscription): up to 10,000 files per drop in total, and existing paths are overwritte…No findings
Why it is in this group
- The description's first verb is "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Add files to a drop owned by the authenticated account (requires an sp_ API key and an active subscription): up to 10,000 files per drop in total, and existing paths are overwritten. The drop keeps its current expiry and password protection.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: true
- destructiveHint: true
- idempotentHint: false
claim_dropAttach an anonymously deployed drop to the authenticated account using its one-time claim token (spc_..., returned once by deploy_html/deploy_files).No findings
Why it is in this group
- The name "claim_drop" says "drop": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Attach an anonymously deployed drop to the authenticated account using its one-time claim token (spc_..., returned once by deploy_html/deploy_files). Claiming extends the drop to the free-account lifetime (90 days) and can revive an offline drop during its 30-day private recovery window. Claimed drops become listable, deletable, and — on paid plans — redeployable via named drops. Requires an sp_ API key.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: true
- destructiveHint: true
- idempotentHint: false
delete_dropPermanently delete a drop owned by the authenticated account (requires an sp_ API key).No findings
Why it is in this group
- The name "delete_drop" says "delete": a word for removing or ending something.
- The description says "Permanently delete".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Permanently delete a drop owned by the authenticated account (requires an sp_ API key). The URL stops serving immediately and cannot be recovered.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: true
- destructiveHint: true
- idempotentHint: false
deploy_filesDeploy a map of path -> content as a multi-file site (must include index.html to serve at the root).No findings
Why it is in this group
- The name "deploy_files" says "deploy": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Deploy a map of path -> content as a multi-file site (must include index.html to serve at the root). Anonymous: up to 100 files per request, 30-day expiry (90 days once signed in). Pro ($4/mo): up to 10,000 files, custom or no TTL, named drops.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: true
- destructiveHint: true
- idempotentHint: false
deploy_htmlDeploy one HTML document and get back a live, unguessable https://<slug>.ship.place/ URL.No findings
Why it is in this group
- The name "deploy_html" says "deploy": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Deploy one HTML document and get back a live, unguessable https://<slug>.ship.place/ URL. Anonymous: 10 deploys/min per IP, 10MB body cap, 30-day expiry. Pro ($4/mo): custom or no TTL, named drops.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: true
- destructiveHint: true
- idempotentHint: false
remove_drop_passwordRemove password protection from a drop you own, making it readable by anyone with its URL.No findings
Why it is in this group
- The name "remove_drop_password" says "remove": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Remove password protection from a drop you own, making it readable by anyone with its URL. Requires an sp_ API key; works even after your paid subscription lapses.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: true
- destructiveHint: true
- idempotentHint: false
restore_dropBring back an expired drop owned by the authenticated account while its files are still retained (requires an sp_ API key), up to 90 days past expiry.1 finding
Why it is in this group
- The name "restore_drop" says "drop": a word for removing or ending something.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "restore_drop" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "restore_drop" says "drop": a word for removing or ending something.
Description, as the server wrote it Bring back an expired drop owned by the authenticated account while its files are still retained (requires an sp_ API key), up to 90 days past expiry. Free accounts get the drop back at the 90-day lifetime; on a paid plan the restored drop never expires again.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: true
- destructiveHint: false
- idempotentHint: false
set_drop_passwordSet or rotate the shared password on a drop you own.No findings
Why it is in this group
- The name "set_drop_password" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Set or rotate the shared password on a drop you own. Requires an sp_ API key and active paid Pro/Team; unavailable billing returns an error, not a public drop. Visitors unlock in their browser. Never put the password in a URL.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: true
- destructiveHint: true
- idempotentHint: false
Changes things 3Claude Code: ask
get_accountShow the authenticated account's plan, subscription status and usage (requires an sp_ API key).1 finding
Why it is in this group
- The name "get_account" says "get": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "get_account" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_account" says "get": a word for reading.
Description, as the server wrote it Show the authenticated account's plan, subscription status and usage (requires an sp_ API key). Anonymous callers should use get_limits for the static free-tier limits.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
- destructiveHint: false
- idempotentHint: false
get_limitsShow the ship.page plan matrix (anonymous free tier vs Pro $4/mo vs Team $19/mo) and, when an sp_ API key is present, the caller's current account/plan status.1 finding
Why it is in this group
- The name "get_limits" says "get": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "get_limits" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_limits" says "get": a word for reading.
Description, as the server wrote it Show the ship.page plan matrix (anonymous free tier vs Pro $4/mo vs Team $19/mo) and, when an sp_ API key is present, the caller's current account/plan status.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
- destructiveHint: false
- idempotentHint: false
list_dropsList drops owned by the authenticated account (requires an sp_ API key; anonymous drops are not listable).1 finding
Why it is in this group
- The name "list_drops" says "list": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "list_drops" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "list_drops" says "list": a word for reading.
Description, as the server wrote it List drops owned by the authenticated account (requires an sp_ API key; anonymous drops are not listable). Returns slug, url, name, file counts, expiry and password_protected, newest first.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
- destructiveHint: false
- idempotentHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http ship-page https://ship.page/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [],
"ask": [
"mcp__ship-page__list_drops",
"mcp__ship-page__get_limits",
"mcp__ship-page__get_account"
],
"deny": [
"mcp__ship-page__deploy_html",
"mcp__ship-page__deploy_files",
"mcp__ship-page__append_files",
"mcp__ship-page__claim_drop",
"mcp__ship-page__restore_drop",
"mcp__ship-page__delete_drop",
"mcp__ship-page__set_drop_password",
"mcp__ship-page__remove_drop_password"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as ship-page. Review it before you use it.