ship.page
Server Details
Deploy HTML from any agent: POST markup, get a live URL. Static hosting API with MCP tools.
- Status
- Healthy
- Uptime
- 100.0% over 83 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 11 tools
Most tools target distinct operations: deploy_html vs deploy_files differ by single-document vs multi-file, and append_files is clearly scoped to an existing drop. The only real overlap is get_account vs get_limits, since get_limits also reports account status when an API key is present, which could cause a misselection.
Every tool follows a strict snake_case verb_noun pattern (deploy_html, list_drops, delete_drop, set_drop_password, remove_drop_password, restore_drop, claim_drop). The verb choices are also semantically predictable — deploy/append for creation, get/list for reads, set/remove for passwords.
Eleven tools is well within the sweet spot and each one maps to a concrete operation in the drop lifecycle. Nothing appears redundant or filler; nothing obviously needed is missing from the count.
The lifecycle is broadly covered: deploy (HTML/files), append, claim, list, delete, restore, password set/remove, plus account and plan info. Gaps are minor but real — there's no tool to fetch a single drop's details, rename/update drop metadata, or explicitly redeploy to a named drop even though named drops are advertised as a Pro feature.
Available Tools
11 toolsappend_filesAppend files to an existing dropADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The drop slug (the subdomain part of its ${domain} URL). | |
| files | Yes | Map of relative paths (e.g. 'index.html', 'css/app.css') to either a string, or { encoding: 'base64', content } for binary files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| plan | No | |
| slug | Yes | |
| files | Yes | Paths added by this call |
| expires_at | Yes | ISO timestamp, or null when the drop never expires |
| total_files | Yes | Total files on the drop after the append |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing a hard cap (10,000 files per drop), the destructive behavior specifically ('existing paths are overwritten'), auth/subscription requirements, and the non-obvious fact that expiry and password protection are preserved. This is exactly the extra context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence whose every clause (auth requirement, file cap, overwrite behavior, preserved settings) carries information an agent needs. No filler and the operation is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the definition covers side effects, limits, and auth needs adequately. The only gap is routing guidance relative to sibling deployment tools, which is more a usage-guideline concern.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds real meaning by clarifying that re-used path keys overwrite existing files and by bounding the total file count, which the schema does not express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add files to a drop') plus scope ('owned by the authenticated account'), and the clause 'existing paths are overwritten' implies an existing drop, distinguishing it from deploy_files/deploy_html without needing the schemas opened.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a prerequisite ('requires an sp_ API key and an active subscription') which is real usage guidance, but never states when to prefer this over deploy_files or deploy_html, nor any exclusions. Usage context is implied rather than declared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_dropClaim an anonymous dropADestructiveInspect
Attach an anonymously deployed drop to the authenticated account using its one-time claim token (spc_..., returned once by deploy_html/deploy_files). Claiming a live drop extends it to the free-account lifetime (30 days). A drop that already expired can still be claimed, but it stays expired until it's restored on Pro. Claimed drops become listable, deletable, and — on paid plans — redeployable via named drops. Requires an sp_ API key.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The drop slug (the subdomain part of its ${domain} URL). | |
| claim_token | Yes | The one-time spc_... token returned at deploy time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| slug | Yes | |
| paused | No | True when the drop had already expired and joined the account offline; restoring it needs Pro |
| claimed | Yes | |
| restored | No | True when the drop had already expired and was revived by the claim |
| expires_at | No | ISO timestamp after the claim's lifetime extension, or null |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only flag destructive/one-shot semantics), the description discloses the token's one-time nature, that claiming a live drop extends it to the 30-day free-account lifetime, that an expired drop can be claimed but stays expired until restored on Pro, and that the claim requires an sp_ API key. This is exactly the behavioral context an agent cannot infer from the schema or hints, and it is consistent with destructiveHint=true and idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the first clause, followed by token provenance, lifetime effects, and the auth prerequisite in a tight progression. Every sentence carries decision-relevant information; there is no restatement of the name or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters, full schema coverage, an output schema, and annotations covering safety, the description supplies the remaining essentials: prerequisite API key, token source, lifetime consequences, and post-claim capabilities. Nothing needed to invoke it correctly or interpret a success is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented as slug and one-time spc_ token, giving a baseline of 3. The description adds meaning beyond the schema by stating where the token comes from ('returned once by deploy_html/deploy_files') and by emphasizing that it is one-time, which matters operationally if a call fails and the agent considers retrying.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Attach an anonymously deployed drop to the authenticated account') and names the one-time claim token as the mechanism. It also names the sibling tools that produce the token (deploy_html/deploy_files), so an agent can place it precisely in the deploy-then-claim flow rather than confusing it with list_drops or delete_drop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly implies the usage context: this is the step after an anonymous deploy, and it requires an sp_ API key plus the one-time spc_ token from deploy time. It also spells out downstream consequences (listable, deletable, redeployable on paid plans) that help an agent decide whether to claim. It stops short of explicitly naming a case where another sibling should be used instead (e.g., restore_drop for expired drops), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dropDelete a dropADestructiveInspect
Permanently delete a drop owned by the authenticated account (requires an sp_ API key). The URL stops serving immediately and cannot be recovered.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The drop slug (the subdomain part of its ${domain} URL). |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes | Slug of the deleted drop |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint as true, but the description adds meaningful behavioral specifics: deletion is permanent, the URL stops serving immediately, and recovery is impossible. It also discloses the credential requirement. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core destructive action is front-loaded, followed by the key consequences and auth requirement. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with a complete input schema and an output schema present, the description covers the action, ownership requirement, auth requirement, and immediate irreversible effects. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains slug as the subdomain part of the drop's URL. The tool description adds no parameter-specific detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Permanently delete') on a specific resource ('a drop owned by the authenticated account') and emphasizes irreversibility. This clearly distinguishes it from non-destructive siblings such as remove_drop_password or restore_drop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: the drop must be owned by the authenticated account and an sp_ API key is required. It does not explicitly name alternatives or give a when-not-to-use condition, but the permanent and unrecoverable nature strongly implies when this tool should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_filesDeploy a multi-file siteADestructiveInspect
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, 7-day expiry (30 days once signed in). Pro ($4/mo): up to 10,000 files, custom or no TTL, named drops.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | Lifetime in seconds (min 60). Anonymous: max 604800 (7 days), default 7 days. Signed-in free: max 2592000 (30 days), default 30 days. A longer ttl is capped at the max. Paid: any value, omit for no expiry. | |
| name | No | Stable name for a redeployable drop (1-41 chars of [a-z0-9-]). Requires an active subscription; the URL stays the same across redeploys. | |
| agent | No | Name of the AI agent or app publishing this drop, e.g. 'chatgpt', 'claude', 'cursor'. AI agents: always set this. | |
| No | Contact email for an anonymous deploy: the one-time claim link is mailed to it, so the drop stays recoverable even if the claim_token from the response is lost. Pass it whenever the deploy is for a human. Ignored for authenticated deploys (those are owned already). | ||
| files | Yes | Map of relative paths (e.g. 'index.html', 'css/app.css') to either a string, or { encoding: 'base64', content } for binary files. | |
| password | No | Shared password: 8-128 Unicode characters, at most 512 UTF-8 bytes. Requires active paid Pro/Team. Sent privately, never in the URL or response. Omit on a live named redeploy to preserve protection. Recreating an expired or purged name is a new drop: send the password again. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| hint | No | Present when the requested ttl was over the plan's maximum and was capped to it. |
| name | No | |
| plan | Yes | |
| slug | Yes | Drop slug; the site is live at https://<slug>.ship.place/ |
| files | Yes | |
| replaced | No | Present with named deploys; true when an existing drop was replaced |
| claim_url | No | Present on anonymous deploys: a browser link that saves the drop to whichever account opens it. It carries the claim token, so keep it private. |
| next_step | No | Present when an API or MCP deploy expires: when the page expires and how to keep it online, written to be passed on to the person the page was made for. |
| expires_at | Yes | ISO timestamp, or null when the drop never expires |
| claim_email | No | Present when email was accepted on an anonymous deploy; the claim link was mailed to this address. |
| claim_token | No | One-time claim token (spc_...), present only on anonymous deploys and shown once. Anyone holding it can attach the drop to an account via claim_drop. |
| password_protected | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false. The description adds meaningful operational context beyond those annotations: anonymous file limits, 7-day expiry, 30-day signed-in retention, paid-tier max files and TTL behavior, and named drops. It does not fully explain overwrite or purge semantics for named redeploys, but it substantially improves transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact, front-loaded paragraph that leads with the core action and then layers on constraints and tier information. The parenthetical tier details are dense but relevant. There is little wasted text, though the sentence could be split for easier scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex, with six parameters, nested file objects, annotations, and an output schema. The description covers the essential payload requirement, tier limits, expiry behavior, and named drops, while the output schema handles return values. It leaves some sibling-routing and redeploy-overwrite details implicit, but is otherwise complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents ttl, name, agent, email, files, and password in detail. The description reinforces tier limits and the index.html requirement, which adds some framing beyond the schema. Because most parameter-level meaning is already in the schema, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: deploy a map of path -> content as a multi-file site. It also gives a key structural constraint that index.html must be included to serve at the root. It is clearly distinct from a generic deploy, though it does not explicitly contrast itself with sibling deploy_html or append_files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through file-count and TTL tiers, and the index.html requirement tells the agent when a payload is valid. However, it does not explicitly say when to choose this over deploy_html for single-file HTML or append_files for incremental changes. Usage guidance is therefore present but inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_htmlDeploy a single HTML pageADestructiveInspect
Deploy one HTML document and get back a live, unguessable https://.ship.place/ URL. Anonymous: 10 deploys/min per IP, 10MB body cap, 7-day expiry. Pro ($4/mo): custom or no TTL, named drops.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | Lifetime in seconds (min 60). Anonymous: max 604800 (7 days), default 7 days. Signed-in free: max 2592000 (30 days), default 30 days. A longer ttl is capped at the max. Paid: any value, omit for no expiry. | |
| html | Yes | The full HTML document to publish. | |
| name | No | Stable name for a redeployable drop (1-41 chars of [a-z0-9-]). Requires an active subscription; the URL stays the same across redeploys. | |
| agent | No | Name of the AI agent or app publishing this drop, e.g. 'chatgpt', 'claude', 'cursor'. AI agents: always set this. | |
| No | Contact email for an anonymous deploy: the one-time claim link is mailed to it, so the drop stays recoverable even if the claim_token from the response is lost. Pass it whenever the deploy is for a human. Ignored for authenticated deploys (those are owned already). | ||
| password | No | Shared password: 8-128 Unicode characters, at most 512 UTF-8 bytes. Requires active paid Pro/Team. Sent privately, never in the URL or response. Omit on a live named redeploy to preserve protection. Recreating an expired or purged name is a new drop: send the password again. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| hint | No | Present when the requested ttl was over the plan's maximum and was capped to it. |
| name | No | |
| plan | Yes | |
| slug | Yes | Drop slug; the site is live at https://<slug>.ship.place/ |
| files | Yes | |
| replaced | No | Present with named deploys; true when an existing drop was replaced |
| claim_url | No | Present on anonymous deploys: a browser link that saves the drop to whichever account opens it. It carries the claim token, so keep it private. |
| next_step | No | Present when an API or MCP deploy expires: when the page expires and how to keep it online, written to be passed on to the person the page was made for. |
| expires_at | Yes | ISO timestamp, or null when the drop never expires |
| claim_email | No | Present when email was accepted on an anonymous deploy; the claim link was mailed to this address. |
| claim_token | No | One-time claim token (spc_...), present only on anonymous deploys and shown once. Anyone holding it can attach the drop to an account via claim_drop. |
| password_protected | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing a 10 deploys/min per-IP rate limit, a 10MB body cap, and a 7-day anonymous expiry, and by explaining that the URL is unguessable but public with Pro-only custom TTL and named drops. It never addresses what the destructiveHint implies (publication is irreversible; expiry/purge behavior) or what recovery looks like, so a small gap remains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the outcome and URL shape front-loaded, then limits and tier gating in a compact clause. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers plan gating, expiry, and rate limits for a six-parameter publish tool. What is missing is the irreversibility/publicity contract implied by destructiveHint=true and the role of the sibling claim_drop in the anonymous flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an extra point by tying plan tiers to specific parameters (custom or no TTL maps to ttl, "named drops" maps to name), which clarifies why those fields are plan-gated rather than merely optional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ("Deploy one HTML document") plus the concrete outcome (a live, unguessable https://<slug>.ship.place/ URL). "One HTML document" implicitly separates it from the sibling deploy_files, so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied through the anonymous vs Pro tier breakdown, which tells an agent what it can do unauthenticated, but there is no explicit when-to-use/when-not guidance and no sibling tool (deploy_files, append_files, claim_drop) is ever named. The agent must infer routing from parameter names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountGet account infoAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | Yes | free | pro | team |
| cancelAt | No | |
| accountId | Yes | |
| portalAvailable | No | |
| currentPeriodEnd | No | |
| activeSubscription | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
All annotation hints are false, so the description carries the burden of behavioral disclosure. It discloses an authentication requirement (sp_ API key) and characterizes the operation as 'Show', implying a read-only, non-destructive access. It does not explicitly state 'does not modify state', but given the tool name and description, this is sufficiently clear for an agent. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no wasted words. The core purpose is front-loaded, followed by the auth requirement and the routing to an alternative, all in compact, scannable structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a low-complexity, zero-parameter tool with an output schema present. The description covers the tool's purpose, authentication requirement, and the alternative for anonymous callers. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and schema coverage is 100%, so there are no parameter semantics to document. The baseline of 4 applies because the description adds no unnecessary parameter commentary and there is nothing missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('the authenticated account') and a specific verb ('Show'), and enumerates the exact fields returned (plan, subscription status, usage). It also differentiates this tool from the sibling get_limits by explicitly stating the account-specific scope, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states a precondition ('requires an sp_ API key') and explicitly routes anonymous callers to the alternative tool get_limits. This is direct when-to-use versus when-not-to-use guidance, with the named sibling alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_limitsGet plan limitsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| plans | Yes | Plan matrix: anonymous, pro, team |
| account | No | Present when an sp_ API key was supplied |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond annotations: it discloses the anonymous vs authenticated behavior and the public plan matrix. The word 'Show' implies a non-mutating operation, and while readOnlyHint is false, this is not an affirmative contradiction since false is not a positive claim of mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence with principal content front-loaded and the conditional case stated second. No unnecessary words or repetition of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and an output schema, the description is complete: it specifies exactly what is shown in both the anonymous and API-key-present cases. Nothing an agent needs to decide whether to call it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the description does not need to explain parameter meaning. The baseline for zero parameters is 4, and the description correctly avoids inventing parameter details while still clarifying the API key as an environmental condition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Show') and a specific resource (the ship.page plan matrix), and adds the conditional account/plan status. It is clear about what the tool does, though it does not explicitly differentiate itself from the overlapping 'get_account' sibling for account status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when the tool provides just the public matrix versus when it also shows the caller's status (when an sp_ API key is present). It does not mention alternatives or exclusions, but for a zero-parameter informational tool this is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dropsList your dropsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max drops to return (1-500, default 100). | |
| offset | No | Number of drops to skip (default 0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| drops | Yes | |
| total | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no hints (all false), so the description carries the burden. It discloses the auth requirement, that anonymous drops are excluded, the exact returned fields, and newest-first ordering — meaningful behavior beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. Purpose and auth constraint are front-loaded, followed by return fields and ordering. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple list tool: output schema covers return values, pagination lives in the documented schema, and auth requirements and return composition are described. Slightly richer tie-in to how ordering interacts with offset could push it higher, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both limit and offset, so the schema fully documents the parameters. The description adds nothing substantive about parameters beyond the schema, but it needn't — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) + resource (drops) + scope (owned by the authenticated account), immediately distinguishing it from get_account and get_limits. The mention of returned fields makes the operation unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context: requires an sp_ API key, anonymous drops are not listable. While it doesn't name a specific sibling alternative, none of the siblings compete for this operation, so the context is sufficient for an agent to know when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_drop_passwordRemove a drop passwordADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The drop slug (the subdomain part of its URL). |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| password_protected | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by disclosing the destructive consequence (password removed and drop becomes publicly readable), the authentication requirement, and the surprising behavior of remaining functional after subscription lapse. No contradiction with destructiveHint or readOnlyHint exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the core action front-loaded and no unnecessary detail. Every clause adds useful decision-making information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with an output schema, the description covers prerequisites, side effects, authentication, and an edge-case licensing condition. Nothing essential is missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter `slug` is already fully described in the input schema as the drop slug subdomain part. The description adds no additional parameter-level detail, so the schema carries the semantic burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove password protection'), the resource ('a drop you own'), and the outcome ('making it readable by anyone with its URL'). This unambiguously distinguishes it from sibling tools like set_drop_password.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies key usage context: the drop must be owned, an sp_ API key is required, and the action works even after subscription lapse. It does not explicitly name set_drop_password as the alternative, but the conditions for when to use this tool are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_dropRestore an expired dropAInspect
Bring back an expired drop owned by the authenticated account, however long ago it expired (requires an sp_ API key on a paid plan). The restored drop doesn't expire while the account stays on Pro. Free accounts get a 402 subscription_required with an upgrade_url.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The drop slug (the subdomain part of its ${domain} URL). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| slug | Yes | |
| restored | Yes | False when the drop was not expired and nothing changed |
| expires_at | Yes | ISO timestamp after the restore, or null when the drop never expires |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: an sp_ API key on a paid plan is required, the restored drop persists without expiry while on Pro, and free accounts receive a 402 subscription_required with an upgrade_url. It does not explain the non-idempotent behavior flagged in annotations (e.g., what happens if the drop is already active or the slug is wrong), which is the main remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences, front-loaded with the action and scope, followed by auth requirements and error semantics. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with an output schema, the description covers the key operational facts an agent needs: plan/API-key requirements, persistence after restore, and the 402 failure mode. It could be complete with a note on failure when the drop is not expired or is not owned by the account.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage, the schema already defines 'slug' as the subdomain part of the drop URL. The description adds no further meaning about the identifier, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Bring back an expired drop') plus the ownership scope ('owned by the authenticated account'). This clearly separates it from siblings like claim_drop, list_drops, and delete_drop without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context — restoring an expired drop regardless of how long ago it expired — and implies the preconditions (expired state, ownership, paid plan). It does not explicitly name an alternative such as claim_drop or say what to do when the drop is not expired, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_drop_passwordSet a drop passwordADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The drop slug (the subdomain part of its URL). | |
| password | Yes | Shared password: 8-128 Unicode characters, at most 512 UTF-8 bytes. Requires active paid Pro/Team. Sent privately, never in the URL or response. Omit on a live named redeploy to preserve protection. Recreating an expired or purged name is a new drop: send the password again. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| password_protected | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a destructive, non-read-only, non-idempotent write operation. The description adds valuable behavioral context beyond that: billing failures error out instead of exposing a public drop, visitors unlock in their browser, and the password must not be placed in a URL. This meaningfully supplements the structured hints without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core action, and every sentence earns its place: the operation, prerequisites, failure behavior, visitor experience, and a security warning. No redundant phrases or filler are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write operation with annotations, a fully documented schema, and an output schema, the description covers the essential context: authentication needs, billing prerequisite, failure mode, security constraints, and the end-user effect. Nothing critical for selecting or calling the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both slug and password, including length limits, UTF-8 byte constraints, and redeploy behavior. The description adds minimal parameter-specific semantics beyond reinforcing that the password is shared and should be kept out of URLs, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Set or rotate the shared password on a drop you own.' This clearly defines the operation and naturally distinguishes it from the sibling remove_drop_password tool, which removes rather than sets or rotates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when the tool is usable: it requires an sp_ API key and active paid Pro/Team, and it warns that unavailable billing returns an error rather than falling back to a public drop. It does not explicitly mention alternatives or when to prefer remove_drop_password, but the usage context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
deploy_files1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Stable name for a redeployable drop (1-41 chars of [a-z0-9-]). Requires an active subscription; Team accounts serve it on their vanity subdomain."New value: +"Stable name for a redeployable drop (1-41 chars of [a-z0-9-]). Requires an active subscription; the URL stays the same across redeploys."
- Changed
deploy_html1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Stable name for a redeployable drop (1-41 chars of [a-z0-9-]). Requires an active subscription; Team accounts serve it on their vanity subdomain."New value: +"Stable name for a redeployable drop (1-41 chars of [a-z0-9-]). Requires an active subscription; the URL stays the same across redeploys."
2 tool updates
- Changed
deploy_files3 fields changed- changed
Input schema / properties / ttl / descriptionPrevious value: -"Lifetime in seconds (min 60). Anonymous: max 2592000 (30 days), default 30 days. Signed-in free: max 7776000 (90 days), default 90 days. Paid: any value, omit for no expiry."New value: +"Lifetime in seconds (min 60). Anonymous: max 604800 (7 days), default 7 days. Signed-in free: max 2592000 (30 days), default 30 days. A longer ttl is capped at the max. Paid: any value, omit for no expiry." - added
Output schema / properties / hintAdded value: +{ + "description": "Present when the requested ttl was over the plan's maximum and was capped to it.", + "type": "string" +} - changed
Output schema / properties / next_step / descriptionPrevious value: -"Present with claim_url: one sentence on keeping the page online, written to be passed on to the person the page was made for."New value: +"Present when an API or MCP deploy expires: when the page expires and how to keep it online, written to be passed on to the person the page was made for."
- Changed
deploy_html3 fields changed- changed
Input schema / properties / ttl / descriptionPrevious value: -"Lifetime in seconds (min 60). Anonymous: max 2592000 (30 days), default 30 days. Signed-in free: max 7776000 (90 days), default 90 days. Paid: any value, omit for no expiry."New value: +"Lifetime in seconds (min 60). Anonymous: max 604800 (7 days), default 7 days. Signed-in free: max 2592000 (30 days), default 30 days. A longer ttl is capped at the max. Paid: any value, omit for no expiry." - added
Output schema / properties / hintAdded value: +{ + "description": "Present when the requested ttl was over the plan's maximum and was capped to it.", + "type": "string" +} - changed
Output schema / properties / next_step / descriptionPrevious value: -"Present with claim_url: one sentence on keeping the page online, written to be passed on to the person the page was made for."New value: +"Present when an API or MCP deploy expires: when the page expires and how to keep it online, written to be passed on to the person the page was made for."
1 tool update
- Changed
claim_drop1 field changed- added
Output schema / properties / pausedAdded value: +{ + "description": "True when the drop had already expired and joined the account offline; restoring it needs Pro", + "type": "boolean" +}
2 tool updates
- Changed
deploy_files3 fields changed- added
Output schema / properties / claim_emailAdded value: +{ + "description": "Present when email was accepted on an anonymous deploy; the claim link was mailed to this address.", + "type": "string" +} - added
Output schema / properties / claim_urlAdded value: +{ + "description": "Present on anonymous deploys: a browser link that saves the drop to whichever account opens it. It carries the claim token, so keep it private.", + "type": "string" +} - added
Output schema / properties / next_stepAdded value: +{ + "description": "Present with claim_url: one sentence on keeping the page online, written to be passed on to the person the page was made for.", + "type": "string" +}
- Changed
deploy_html3 fields changed- added
Output schema / properties / claim_emailAdded value: +{ + "description": "Present when email was accepted on an anonymous deploy; the claim link was mailed to this address.", + "type": "string" +} - added
Output schema / properties / claim_urlAdded value: +{ + "description": "Present on anonymous deploys: a browser link that saves the drop to whichever account opens it. It carries the claim token, so keep it private.", + "type": "string" +} - added
Output schema / properties / next_stepAdded value: +{ + "description": "Present with claim_url: one sentence on keeping the page online, written to be passed on to the person the page was made for.", + "type": "string" +}
2 tool updates
- Changed
deploy_files1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.run/"New value: +"Drop slug; the site is live at https://<slug>.ship.place/"
- Changed
deploy_html1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.run/"New value: +"Drop slug; the site is live at https://<slug>.ship.place/"
2 tool updates
- Changed
deploy_files1 field changed- added
Input schema / properties / agentAdded value: +{ + "description": "Name of the AI agent or app publishing this drop, e.g. 'chatgpt', 'claude', 'cursor'. AI agents: always set this.", + "maxLength": 64, + "type": "string" +}
- Changed
deploy_html1 field changed- added
Input schema / properties / agentAdded value: +{ + "description": "Name of the AI agent or app publishing this drop, e.g. 'chatgpt', 'claude', 'cursor'. AI agents: always set this.", + "maxLength": 64, + "type": "string" +}
2 tool updates
- Changed
deploy_files1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.cloud/"New value: +"Drop slug; the site is live at https://<slug>.shipped.run/"
- Changed
deploy_html1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.cloud/"New value: +"Drop slug; the site is live at https://<slug>.shipped.run/"
2 tool updates
- Changed
deploy_files1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.run/"New value: +"Drop slug; the site is live at https://<slug>.shipped.cloud/"
- Changed
deploy_html1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.run/"New value: +"Drop slug; the site is live at https://<slug>.shipped.cloud/"
2 tool updates
- Changed
deploy_files1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.page/"New value: +"Drop slug; the site is live at https://<slug>.shipped.run/"
- Changed
deploy_html1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.page/"New value: +"Drop slug; the site is live at https://<slug>.shipped.run/"
6 tool updates
- Changed
append_files1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"The drop slug (the subdomain part of its shipped.run URL)."New value: +"The drop slug (the subdomain part of its ${domain} URL)."
- Changed
claim_drop1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"The drop slug (the subdomain part of its shipped.run URL)."New value: +"The drop slug (the subdomain part of its ${domain} URL)."
- Changed
delete_drop1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"The drop slug (the subdomain part of its shipped.run URL)."New value: +"The drop slug (the subdomain part of its ${domain} URL)."
- Changed
deploy_files1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.run/"New value: +"Drop slug; the site is live at https://<slug>.shipped.page/"
- Changed
deploy_html1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.run/"New value: +"Drop slug; the site is live at https://<slug>.shipped.page/"
- Changed
restore_drop1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"The drop slug (the subdomain part of its shipped.run URL)."New value: +"The drop slug (the subdomain part of its ${domain} URL)."
5 tool updates
- Changed
deploy_files3 fields changed- added
Input schema / properties / passwordAdded value: +{ + "description": "Shared password: 8-128 Unicode characters, at most 512 UTF-8 bytes. Requires active paid Pro/Team. Sent privately, never in the URL or response. Omit on a live named redeploy to preserve protection. Recreating an expired or purged name is a new drop: send the password again.", + "maxLength": 128, + "minLength": 8, + "type": "string", + "writeOnly": true +} - added
Output schema / properties / password_protectedAdded value: +{ + "type": "boolean" +} - changed
Output schema / requiredPrevious value: -[ - "slug", - "url", - "files", - "plan", - "expires_at" -]New value: +[ + "slug", + "url", + "files", + "plan", + "expires_at", + "password_protected" +]
- Changed
deploy_html3 fields changed- added
Input schema / properties / passwordAdded value: +{ + "description": "Shared password: 8-128 Unicode characters, at most 512 UTF-8 bytes. Requires active paid Pro/Team. Sent privately, never in the URL or response. Omit on a live named redeploy to preserve protection. Recreating an expired or purged name is a new drop: send the password again.", + "maxLength": 128, + "minLength": 8, + "type": "string", + "writeOnly": true +} - added
Output schema / properties / password_protectedAdded value: +{ + "type": "boolean" +} - changed
Output schema / requiredPrevious value: -[ - "slug", - "url", - "files", - "plan", - "expires_at" -]New value: +[ + "slug", + "url", + "files", + "plan", + "expires_at", + "password_protected" +]
- Changed
list_drops2 fields changed- added
Output schema / properties / drops / items / properties / password_protectedAdded value: +{ + "type": "boolean" +} - changed
Output schema / properties / drops / items / requiredPrevious value: -[ - "slug", - "url" -]New value: +[ + "slug", + "url", + "password_protected" +]
- Added
remove_drop_password - Added
set_drop_password
2 tool updates
- Changed
deploy_files1 field changed- changed
Input schema / properties / ttl / descriptionPrevious value: -"Lifetime in seconds (min 60). Anonymous: max 604800 (7 days), default 7 days. Signed-in free: max 2592000 (30 days), default 30 days. Paid: any value, omit for no expiry."New value: +"Lifetime in seconds (min 60). Anonymous: max 2592000 (30 days), default 30 days. Signed-in free: max 7776000 (90 days), default 90 days. Paid: any value, omit for no expiry."
- Changed
deploy_html1 field changed- changed
Input schema / properties / ttl / descriptionPrevious value: -"Lifetime in seconds (min 60). Anonymous: max 604800 (7 days), default 7 days. Signed-in free: max 2592000 (30 days), default 30 days. Paid: any value, omit for no expiry."New value: +"Lifetime in seconds (min 60). Anonymous: max 2592000 (30 days), default 30 days. Signed-in free: max 7776000 (90 days), default 90 days. Paid: any value, omit for no expiry."
6 tool updates
- Changed
append_files1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"The drop slug (the subdomain part of its shipped.page URL)."New value: +"The drop slug (the subdomain part of its shipped.run URL)."
- Changed
claim_drop1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"The drop slug (the subdomain part of its shipped.page URL)."New value: +"The drop slug (the subdomain part of its shipped.run URL)."
- Changed
delete_drop1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"The drop slug (the subdomain part of its shipped.page URL)."New value: +"The drop slug (the subdomain part of its shipped.run URL)."
- Changed
deploy_files1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.page/"New value: +"Drop slug; the site is live at https://<slug>.shipped.run/"
- Changed
deploy_html1 field changed- changed
Output schema / properties / slug / descriptionPrevious value: -"Drop slug; the site is live at https://<slug>.shipped.page/"New value: +"Drop slug; the site is live at https://<slug>.shipped.run/"
- Changed
restore_drop1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"The drop slug (the subdomain part of its shipped.page URL)."New value: +"The drop slug (the subdomain part of its shipped.run URL)."
2 tool updates
- Changed
deploy_files1 field changed- added
Input schema / properties / emailAdded value: +{ + "description": "Contact email for an anonymous deploy: the one-time claim link is mailed to it, so the drop stays recoverable even if the claim_token from the response is lost. Pass it whenever the deploy is for a human. Ignored for authenticated deploys (those are owned already).", + "type": "string" +}
- Changed
deploy_html1 field changed- added
Input schema / properties / emailAdded value: +{ + "description": "Contact email for an anonymous deploy: the one-time claim link is mailed to it, so the drop stays recoverable even if the claim_token from the response is lost. Pass it whenever the deploy is for a human. Ignored for authenticated deploys (those are owned already).", + "type": "string" +}
2 tool updates
- Added
append_files - Added
restore_drop
3 tool updates
- Changed
claim_drop2 fields changed- added
Output schema / properties / expires_atAdded value: +{ + "description": "ISO timestamp after the claim's lifetime extension, or null", + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / restoredAdded value: +{ + "description": "True when the drop had already expired and was revived by the claim", + "type": "boolean" +}
- Changed
deploy_files1 field changed- changed
Input schema / properties / ttl / descriptionPrevious value: -"Lifetime in seconds (min 60). Free: max 604800 (7 days), default 7 days. Paid: any value, omit for no expiry."New value: +"Lifetime in seconds (min 60). Anonymous: max 604800 (7 days), default 7 days. Signed-in free: max 2592000 (30 days), default 30 days. Paid: any value, omit for no expiry."
- Changed
deploy_html1 field changed- changed
Input schema / properties / ttl / descriptionPrevious value: -"Lifetime in seconds (min 60). Free: max 604800 (7 days), default 7 days. Paid: any value, omit for no expiry."New value: +"Lifetime in seconds (min 60). Anonymous: max 604800 (7 days), default 7 days. Signed-in free: max 2592000 (30 days), default 30 days. Paid: any value, omit for no expiry."
3 tool updates
- Added
claim_drop - Changed
deploy_files1 field changed- added
Output schema / properties / claim_tokenAdded value: +{ + "description": "One-time claim token (spc_...), present only on anonymous deploys and shown once. Anyone holding it can attach the drop to an account via claim_drop.", + "type": "string" +}
- Changed
deploy_html1 field changed- added
Output schema / properties / claim_tokenAdded value: +{ + "description": "One-time claim token (spc_...), present only on anonymous deploys and shown once. Anyone holding it can attach the drop to an account via claim_drop.", + "type": "string" +}
Related MCP Connectors
Deploy AI-generated HTML/CSS/JS to instant public HTTPS URLs from any MCP-compatible agent.
Instant web publishing for AI agents. POST HTML, get a live URL. No account needed.
Publish HTML, Markdown, and multi-file sites as shareable URLs instantly via MCP.
Publish permanent static sites via MCP/REST. 28 tools. No account or claim link.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceOne-call static page/site deploys for AI agents — POST HTML, a files map, or a zip and get back a live unguessable URL. Remote endpoint at https://ship.page/mcp, free tier needs no account or API key.MIT
- FlicenseNot gradedqualityDmaintenanceDeploys HTML pages to an online preview platform and returns a shareable URL via MCP protocol.1-
- AlicenseAqualityBmaintenanceEnables publishing sanitized static HTML pages from an MCP agent and receiving shareable URLs, with tools for updating, listing, publishing, and deleting pages.1217 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to publish HTML pages and small sites over MCP, returning a stable link and keeping every version, with access limited to specific people, an organization, or anyone with the link.1AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.