Skip to main content
Glama

Publish to dochost

publish

Publish HTML or Markdown as a hosted web page and return a shareable URL. Use when the user asks to share an HTML quiz, calculator, report or Markdown document as a link. HTML JavaScript runs in a sandbox. Free links expire after seven days; paid link lifetime and options follow account entitlements. For revisions of an existing page, use update_page to keep the same link. Results report expiry and any ignored options; relay ignoredOptions/ignoredNote instead of claiming all requested settings were applied. New links use the account primary host; get_account reports it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyYesComplete HTML or Markdown source to publish, preserving scripts and styles. Pass the content itself, not a summary, file path, URL or surrounding Markdown code fence. Single-file HTML must inline assets or use publicly accessible asset URLs.
formatNoUse html for HTML source and markdown for Markdown. Omit only when you want automatic format detection.
publicNoWhether the page is discoverable on Explore (default true). False does not password-protect the link; readers with its URL can still access an unprotected page.
passwordNoRequested reader password, subject to plan entitlement. Omit unless requested; check ignoredOptions/ignoredNote before claiming password protection.
customSlugNoRequested custom URL slug, subject to plan entitlement and availability. Omit unless the user requests one.
noBrandingNoOmit to use the plan default: paid plans hide branding, free plans keep it. Set false if the user wants to keep the dochost mark.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesThe shareable page URL, on the account's primary host (custom domain, subdomain, or dochost.co/d). Relay it verbatim.
noteNoFree-tier only: expiry warning + upgrade link. Relay this to the user.
slugYes
formatYes
expiresAtNoISO timestamp, or null when the link is permanent.
permanentYes
ignoredNoteNoPlain-language consequence of ignoredOptions. Relay it instead of reporting plain success.
iterateHintNoHow to revise this page later. Follow it instead of publishing a second time.
ignoredOptionsNoPaid options this account does not have, which were dropped. Present only when non-empty — the publish still succeeded, but NOT as asked.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / body / description
      Added value: +"Complete HTML or Markdown source to publish, preserving scripts and styles. Pass the content itself, not a summary, file path, URL or surrounding Markdown code fence. Single-file HTML must inline assets or use publicly accessible asset URLs."
    • addedInput schema / properties / customSlug / description
      Added value: +"Requested custom URL slug, subject to plan entitlement and availability. Omit unless the user requests one."
    • addedInput schema / properties / format / description
      Added value: +"Use html for HTML source and markdown for Markdown. Omit only when you want automatic format detection."
    • addedInput schema / properties / noBranding / description
      Added value: +"Omit to use the plan default: paid plans hide branding, free plans keep it. Set false if the user wants to keep the dochost mark."
    • addedInput schema / properties / password / description
      Added value: +"Requested reader password, subject to plan entitlement. Omit unless requested; check ignoredOptions/ignoredNote before claiming password protection."
    • addedInput schema / properties / public / description
      Added value: +"Whether the page is discoverable on Explore (default true). False does not password-protect the link; readers with its URL can still access an unprotected page."
  2. Changed2 schema fields changed
    • addedOutput schema / properties / ignoredNote
      Added value: +{
      +  "description": "Plain-language consequence of ignoredOptions. Relay it instead of reporting plain success.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / ignoredOptions
      Added value: +{
      +  "description": "Paid options this account does not have, which were dropped. Present only when non-empty — the publish still succeeded, but NOT as asked.",
      +  "items": {
      +    "enum": [
      +      "noBranding",
      +      "password",
      +      "customSlug",
      +      "searchable"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / properties / url / description
      Previous value: -"The shareable dochost.co page URL."New value: +"The shareable page URL, on the account's primary host (custom domain, subdomain, or dochost.co/d). Relay it verbatim."
  4. Changed1 schema field changed
    • addedOutput schema / properties / iterateHint
      Added value: +{
      +  "description": "How to revise this page later. Follow it instead of publishing a second time.",
      +  "type": "string"
      +}
  5. Changed1 schema field changed
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "Free-tier only: expiry warning + upgrade link. Relay this to the user.",
      +  "type": "string"
      +}
  6. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "expiresAt": {
      +      "description": "ISO timestamp, or null when the link is permanent.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "format": {
      +      "enum": [
      +        "markdown",
      +        "html"
      +      ],
      +      "type": "string"
      +    },
      +    "permanent": {
      +      "type": "boolean"
      +    },
      +    "slug": {
      +      "type": "string"
      +    },
      +    "url": {
      +      "description": "The shareable dochost.co page URL.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "url",
      +    "slug",
      +    "format",
      +    "permanent"
      +  ],
      +  "type": "object"
      +}
  7. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare a non-read-only, open-world, non-destructive operation; the description adds substantial context beyond that: HTML JavaScript runs in a sandbox, free links expire after seven days, paid lifetime follows entitlements, results report expiry and ignored options, and the agent must relay ignoredOptions/ignoredNote rather than overclaim. It also pins the host source (account primary host, visible via get_account).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and activation condition, then capability/limitation detail; sentences are dense and mostly earn their place. Slightly long for a 6-param tool, and the trailing get_account sentence is marginally tangential, keeping it below a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety and an output schema covering return shape, the description still supplies the operational caveats an agent needs: sandbox execution, expiry model, entitlement-gated options, and the ignoredOptions relay obligation. Nothing essential for a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema only implies: password/customSlug are 'subject to plan entitlement', free vs. paid expiry behavior, and the instruction to check ignoredOptions before claiming settings were applied. That meaningfully improves how an agent sets and trusts these fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Publish HTML or Markdown as a hosted web page') plus the concrete artifact (shareable URL), and explicitly distinguishes itself from update_page for revisions. An agent can route publish vs. update_page 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit activation condition ('Use when the user asks to share an HTML quiz, calculator, report or Markdown document as a link') and names the alternative tool with the condition that selects it ('For revisions of an existing page, use update_page to keep the same link'). No exclusions are left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.