Skip to main content
Glama

Server Details

Publish Markdown or HTML to a shareable link from your AI assistant. OAuth, no API keys.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 63 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
zyli5313/dochost-mcp
GitHub Stars
1
Server Listing
dochost

TDQS

A4.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a clearly distinct action and resource: publishing vs updating content, reading metadata vs body, listing vs deleting, and account vs page settings. The descriptions explicitly clarify boundaries, such as get_page vs get_page_content and publish vs update_page.

Naming Consistency4/5

Most tools follow a consistent snake_case verb_noun pattern (delete_page, get_page, update_page, set_page_options, list_my_pages). The single verb 'publish' deviates slightly, but the overall naming remains predictable and readable.

Tool Count5/5

Eight tools are well-scoped for a page hosting API, covering creation, reading, updating, listing, deletion, account info, and settings without redundancy or bloat.

Completeness5/5

The surface covers the full page lifecycle: create (publish), read metadata and body (get_page, get_page_content, list_my_pages), update content (update_page), update settings (set_page_options), delete (delete_page), and account entitlements (get_account). No obvious dead ends for the stated domain.

Available Tools

8 tools
delete_pageDelete a dochost pageA
Destructive
Inspect

Permanently delete one of your pages by slug. The link stops working immediately and the slug is freed. Deleting an already-deleted page is a safe no-op.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
slugYes
alreadyDeletedNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description adds details: the deletion is permanent, the link stops working immediately, the slug is freed, and deleting an already-deleted page is a safe no-op. This fully discloses the behavior.

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

Conciseness5/5

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

The description is three concise sentences with no redundant words. It is well-structured and front-loads the primary action, then explains consequences and edge-case behavior.

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?

For a simple delete operation with one parameter and an output schema, the description covers the effect, the idempotency, and the side effect on the slug. No additional information is needed for correct invocation.

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

Parameters3/5

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

Schema coverage is 0% for the slug parameter. The description says 'by slug' which conveys it is the page identifier, but offers no explanation of format, length constraints, or how to obtain the slug. Minimal compensation for the lack of schema description.

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?

The description clearly states the action (delete), the resource (page), and the identifier (slug). It is distinct from sibling tools such as update_page, publish, and list_my_pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The context is clear: use this tool to permanently delete a page. It does not explicitly exclude other tools, but the deletion intent is unambiguous and no competing tool serves the same purpose.

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

get_accountGet my dochost accountA
Read-only
Inspect

Get your plan, page-quota usage, entitlement flags (size cap, custom slug, password, branding, subdomain, custom domain), and the primary host new links publish on. Call when you need plan limits, domain details or paid-option availability; a basic publish can use defaults without this extra call. The primary host is chosen in the dashboard (manageDomainsUrl), not through this API.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
planYes
passwordNo
analyticsNo
pageQuotaNo
pagesUsedNo
sizeCapMbNo
customSlugNo
noBrandingNo
primaryHostNoHost new links publish on: a custom domain, `{sub}.dochost.co`, or `dochost.co/d`.
customDomainNoWhether this plan may point a hostname the user owns at their pages (set it at manageDomainsUrl).
pagesRemainingNo
permanentLinksNo
customSubdomainNoWhether this plan may claim a {name}.dochost.co subdomain (set it at manageDomainsUrl).
manageDomainsUrlNoDashboard page where the user adds domains and picks the primary one. Send them here to change it.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already establish this as a read-only, non-destructive, closed-world operation, so the bar is lower. The description still adds real value by disclosing the returned entitlement categories and the important constraint that the primary host is configured in the dashboard, not through this API.

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?

Three sentences, front-loaded with the return contents and followed by usage guidance and one caveat. The entitlement list is long but each item is informative, and there is no filler.

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?

Although an output schema exists and the description need not explain return values, it covers purpose, when/when-not to call, and a behavioral constraint. Nothing an agent needs in order to decide whether to invoke this parameterless read 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?

The tool takes zero parameters, so the schema-based baseline of 4 applies. The description correctly implies no input is needed, describing only the information returned rather than any arguments.

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?

The description names a specific verb and resource and then enumerates exactly what is retrieved: plan, page-quota usage, entitlement flags, and the primary publish host. That level of detail clearly separates it from siblings like get_page, get_page_content, and publish.

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?

It states both when to call (need plan limits, domain details, paid-option availability) and when not to (a basic publish can use defaults without this extra call). It also flags that the primary host is set in the dashboard rather than via the API, removing a likely mis-invocation path.

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

get_pageGet one of my dochost pagesA
Read-only
Inspect

Get one of your pages by slug: title, format, status, view/like counts, expiry, whether it is password-protected, and its current visibility / indexing / branding state. Never returns the page body or the password — call get_page_content when you need the source itself, and set_page_options to change any of the settings it reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
urlYes
slugYes
likesNo
titleNo
viewsNo
formatNo
publicNo
statusNo
createdAtNo
expiresAtNo
permanentNo
searchableNo
hasPasswordNo
brandingHiddenNoWhether the RENDERED page hides the dochost mark, resolved from the live plan — not a per-page setting. Read-only.

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that it never returns the page body or password, which is useful. However, it doesn't mention potential errors (e.g., slug not found, permission issues) or pagination (not relevant here). 3 is appropriate given annotations already cover the read-only behavior.

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

Conciseness5/5

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

The description is concise and well-structured. It front-loads the purpose and the key information (what fields are returned), then adds the important exclusions and alternatives. Every sentence contributes to the agent's decision-making. No fluff.

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

Completeness4/5

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

Given the tool is simple (1 param), has an output schema (which presumably explains return structure), and annotations cover safety, the description is quite complete. It lists the returned fields and clarifies it does not return the body or password. Slight gap: it doesn't mention the output schema's content or possible error behavior, but the output schema likely covers that. Overall, a very effective description for its complexity.

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 0%, so the description must compensate. The description explains that the single parameter 'slug' is used to identify the page, and it implies the format and constraints (max length 64, min length 1) from the schema. The description adds the meaning of the parameter (page identifier) and its role in retrieving the specific page.

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?

The description clearly states the tool retrieves a page by slug and enumerates the specific fields it returns (title, format, status, counts, expiry, password-protection, visibility/indexing/branding). It explicitly distinguishes from siblings by mentioning get_page_content and set_page_options.

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?

The description provides strong usage guidance: it tells the agent when to use this tool (to get page metadata/state) and when to use alternatives (get_page_content for the body, set_page_options to change settings). This explicit routing is exemplary.

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

get_page_contentRead one of my dochost pagesA
Read-only
Inspect

Read back the CURRENT Markdown or HTML of one of your pages. Call this before update_page whenever you did not write the live content yourself in this same conversation — update_page replaces the body wholesale, so editing from memory silently discards anything you cannot see, including edits the user made in the browser. Returns version and sha256; pass them to update_page as ifVersion / ifSha so the write is refused instead of overwriting a change you did not read. Expired pages are readable, and updating one republishes it on the same URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
bodyYesThe raw Markdown or HTML exactly as published.
noteNoPresent when the page is expired or under review. Relay it before editing.
slugYes
bytesYes
titleNo
formatYes
sha256NoPass to update_page as ifSha to guard the write.
statusYes
versionYesPass to update_page as ifVersion to guard the write.
editableYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already mark readOnlyHint true and destructiveHint false, and the description adds meaningful behavioral context: update_page replaces content wholesale, version/sha can be passed as ifVersion/ifSha to avoid overwriting unseen changes, and expired pages remain readable and republish on the same URL. This goes well beyond the annotations.

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

Conciseness5/5

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

Three sentences with no filler: the primary read action comes first, the critical update_page caveat follows, and the expired-page note finishes. Every sentence earns its place and the structure is skimmable.

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?

The tool is simple with one required slug parameter, has an output schema, and carries read-only annotations, so the description only needed to add write-safety and concurrency behavior, which it does thoroughly. Nothing an agent needs to call it correctly is missing.

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

Parameters2/5

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

Schema description coverage is 0% and the description never mentions slug, its format, or how it identifies the page. The tool name and schema imply slug is a page identifier, but the description does not add meaning beyond the schema to compensate for the low coverage.

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?

Description opens with the exact action and resource: 'Read back the CURRENT Markdown or HTML of one of your pages.' It also frames itself against update_page and clarifies it returns content plus version/sha, distinguishing it from siblings like get_page or list_my_pages.

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?

It explicitly states when to use: 'Call this before update_page whenever you did not write the live content yourself in this same conversation.' It also explains why, and notes expired pages are readable and can be republished, giving clear context for when this read tool is appropriate.

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

list_my_pagesList my dochost pagesA
Read-only
Inspect

List the pages you have published to dochost, newest first. Paginated; returns compact records (no page bodies).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
limitYes
pagesYes
totalYes
offsetYes
hasMoreYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description adds genuinely useful behavioral traits: ordering ('newest first'), pagination behavior ('Paginated'), and output shape ('compact records, no page bodies'). This tells the agent what it will and won't get back without contradicting any annotation.

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

Conciseness5/5

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

Two short sentences totaling about 18 words, with zero filler. The verb and resource are front-loaded, and every clause earns its place: scope, ordering, pagination, and output-shape caveat.

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

Completeness4/5

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

For a simple listing tool, this is nearly complete: scope, order, pagination, and record content are all disclosed, and the annotations plus existing output schema cover safety and return structure. The only gap is not explicitly routing the agent to get_page when a page body is needed, which is a minor omission given the sibling list is visible.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds the concept of pagination, which gives semantic context for limit/offset, but it does not explicitly say limit controls page size and offset controls the starting position. The compensation is partial, so a middle score is appropriate.

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?

The description states a specific verb ('List'), a resource ('the pages you have published to dochost'), and an ordering guarantee ('newest first'). It naturally distinguishes from siblings: it is a list/scoping operation, whereas get_page presumably fetches a single page, and publish/update/delete_page are mutations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description gives clear context: it is scoped to the caller's own published pages and is suitable for browsing/list operations. The 'no page bodies' note implies that content retrieval belongs elsewhere, but it never explicitly names get_page as the alternative for full bodies, so it stops short of a 5.

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

publishPublish to dochostAInspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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.

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.

set_page_optionsChange a published page’s settingsAInspect

Change a published page's visibility, search-engine indexing or password WITHOUT republishing it — the URL, view count and content all stay the same. Use this instead of deleting and publishing again, which changes the link the user already shared. Send only the fields you want to change. Turning a paid capability off never needs an entitlement; turning one on is checked against the current plan. A password always forces the page private, so asking for both public: true and a password is refused rather than silently resolved. dochost branding is NOT settable here: it is resolved from the account's live plan at render time, so there is nothing per-page to flip — read brandingHidden from get_page for the rendered answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
publicNoDiscoverable on Explore. Cannot be true while a password is set.
passwordNoSet or replace the page password (paid plans).
searchableNoOpt in to search-engine indexing. Turning it on requires a permanent page.
removePasswordNoClear the password. Always allowed, on any plan.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
urlNo
slugYes
publicNo
changedNoFalse when the page already had exactly these settings.
searchableNo
hasPasswordNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark this as mutating (readOnlyHint=false) and non-destructive, but the description adds plan-check semantics for paid capabilities, the forced-private behavior of passwords, the refusal of public+password rather than silent resolution, and the invariance of URL/view count/content. This is rich behavior context that aligns with openWorldHint.

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

Conciseness5/5

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

Five sentences, each adding a distinct, necessary piece of information: core behavior, alternative, partial-update semantics, entitlement rule, conflict rule, and an exclusion with a pointer to the alternative. No fluff or repetition.

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?

For a mutation tool with plan-dependent behavior, the description covers purpose, alternatives, edge cases, exclusions, and partial updates. The presence of an output schema means return-value description is unnecessary, and the only minor gap (permissions) is not critical given sibling context.

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 descriptions cover 80% of parameters, including rules for public, searchable, and removePassword. The description adds cross-parameter semantics: password forces private, public+password is refused, turning a paid capability off never requires entitlement, and only changed fields should be sent. This goes beyond the schema's per-property notes.

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 ('Change'), resource ('published page's settings'), and scope ('visibility, search-engine indexing or password'), and explicitly contrasts with deleting/republishing, which differentiates it from siblings like delete_page and publish. The title is equally clear.

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?

Explicitly instructs to use this instead of deleting and publishing again to preserve the shared link, and tells agents to send only changed fields. It also gives a when-not-to-use by declaring branding is not settable and points to get_page for brandingHidden.

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

update_pageUpdate a dochost pageA
Destructive
Inspect

Replace the content of one of your pages in place. The URL, view/like counts, and expiry stay the same; only the body, format, and title change. Resending identical content is a no-op. Prefer this over publishing again whenever the user is revising something you already published for them — a second publish creates a second link and strands the one they already shared. This replaces the WHOLE body, so unless you wrote the live content yourself in this conversation, call get_page_content first and pass its version/sha256 back as ifVersion/ifSha — the write is then refused with the current version instead of overwriting an edit you never saw.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
slugYes
ifShaNoWrite only if the live body still hashes to this (from get_page_content).
titleNo
formatNo
ifVersionNoWrite only if the page is still at this version (from get_page_content). Omit and the write always wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
slugYes
titleNo
formatNo
versionNo

TDQS

A4.9/5.0
Behavior5/5

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

The annotations already mark this as destructive and read-write, and the description builds on that by stating exactly what changes (body, format, title) and what stays the same (URL, counts, expiry). It also discloses the no-op behavior and the overwrite-protection semantics of ifVersion/ifSha, which goes well beyond the structured fields.

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

Conciseness5/5

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

The description is longer than average but every sentence earns its place: it front-loads the core action, then covers side-effect preservation, no-op behavior, selection over publish, and the overwrite warning. There is no filler or repetition of schema fields.

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?

For a destructive write operation with six parameters and no reference documentation, this description provides all necessary context: when to use it, what it changes, what it preserves, and how to avoid clobbering unseen edits. The presence of an output schema means return-value details do not need to be repeated.

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 description coverage is only 33%, so the description must compensate. It does for the riskiest parameters by explaining ifVersion/ifSha as conditional overwrite guards and warning that body replacement is whole-page. It adds less detail for slug, title, and format, though those are largely inferable from the schema and the tool's purpose.

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?

The description opens with a precise verb and resource: 'Replace the content of one of your pages in place.' It clearly distinguishes this tool from the sibling 'publish' by explaining that this edits an existing page rather than creating a second link, so an agent can instantly tell them apart.

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?

The description explicitly says to prefer this over publishing when revising already-published content, and explains why publishing again is worse. It also gives a concrete precondition: call get_page_content first and pass back the version/sha256 unless the agent wrote the live content itself.

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.

  1. 1 tool update
    • Changedpublish6 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. 2 tool updates
    • Changedget_page3 fields changed
      • addedOutput schema / properties / brandingHidden
        Added value: +{
        +  "description": "Whether the RENDERED page hides the dochost mark, resolved from the live plan — not a per-page setting. Read-only.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / public
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / searchable
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedset_page_options
  3. 4 tool updates
    • Changedget_account2 fields changed
      • addedOutput schema / properties / customDomain
        Added value: +{
        +  "description": "Whether this plan may point a hostname the user owns at their pages (set it at manageDomainsUrl).",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / customSubdomain
        Added value: +{
        +  "description": "Whether this plan may claim a {name}.dochost.co subdomain (set it at manageDomainsUrl).",
        +  "type": "boolean"
        +}
    • Addedget_page_content
    • Changedpublish2 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"
        +}
    • Changedupdate_page2 fields changed
      • addedInput schema / properties / ifSha
        Added value: +{
        +  "description": "Write only if the live body still hashes to this (from get_page_content).",
        +  "type": "string"
        +}
      • addedInput schema / properties / ifVersion
        Added value: +{
        +  "description": "Write only if the page is still at this version (from get_page_content). Omit and the write always wins.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
  4. 2 tool updates
    • Changedget_account2 fields changed
      • addedOutput schema / properties / manageDomainsUrl
        Added value: +{
        +  "description": "Dashboard page where the user adds domains and picks the primary one. Send them here to change it.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / primaryHost
        Added value: +{
        +  "description": "Host new links publish on: a custom domain, `{sub}.dochost.co`, or `dochost.co/d`.",
        +  "type": "string"
        +}
    • Changedpublish1 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."
  5. 1 tool update
    • Changedpublish1 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"
        +}
  6. 1 tool update
    • Changedpublish1 field changed
      • addedOutput schema / properties / note
        Added value: +{
        +  "description": "Free-tier only: expiry warning + upgrade link. Relay this to the user.",
        +  "type": "string"
        +}
  7. 6 tool updates
    • Changeddelete_page1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "alreadyDeleted": {
        +      "type": "boolean"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    },
        +    "slug": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "slug"
        +  ],
        +  "type": "object"
        +}
    • Changedget_account1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "analytics": {
        +      "enum": [
        +        "none",
        +        "totals",
        +        "full"
        +      ],
        +      "type": "string"
        +    },
        +    "customSlug": {
        +      "type": "boolean"
        +    },
        +    "noBranding": {
        +      "type": "boolean"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    },
        +    "pageQuota": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "pagesRemaining": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "pagesUsed": {
        +      "type": "integer"
        +    },
        +    "password": {
        +      "type": "boolean"
        +    },
        +    "permanentLinks": {
        +      "type": "boolean"
        +    },
        +    "plan": {
        +      "enum": [
        +        "free",
        +        "pro",
        +        "max"
        +      ],
        +      "type": "string"
        +    },
        +    "sizeCapMb": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "plan"
        +  ],
        +  "type": "object"
        +}
    • Changedget_page1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "expiresAt": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "format": {
        +      "enum": [
        +        "markdown",
        +        "html"
        +      ],
        +      "type": "string"
        +    },
        +    "hasPassword": {
        +      "type": "boolean"
        +    },
        +    "likes": {
        +      "type": "integer"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    },
        +    "permanent": {
        +      "type": "boolean"
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "url": {
        +      "type": "string"
        +    },
        +    "views": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "slug",
        +    "url"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_my_pages1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "type": "integer"
        +    },
        +    "offset": {
        +      "type": "integer"
        +    },
        +    "pages": {
        +      "items": {
        +        "properties": {
        +          "createdAt": {
        +            "type": "string"
        +          },
        +          "expiresAt": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "format": {
        +            "enum": [
        +              "markdown",
        +              "html"
        +            ],
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "status": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "url",
        +          "format",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "pages",
        +    "total",
        +    "limit",
        +    "offset",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedpublish1 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"
        +}
    • Changedupdate_page1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "format": {
        +      "enum": [
        +        "markdown",
        +        "html"
        +      ],
        +      "type": "string"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "version": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "slug"
        +  ],
        +  "type": "object"
        +}
  8. 6 tool updates
    • First observeddelete_page
    • First observedget_account
    • First observedget_page
    • First observedlist_my_pages
    • First observedpublish
    • First observedupdate_page

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to publish HTML or Markdown to a public URL with a single HTTP POST, automatically converting Markdown to a styled webpage, with no account or setup required.
    1 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Publishes HTML pages straight from your AI assistant to a shareable URL, then lets you manage them - update, list, search, fetch, and delete pages in a public or private workspace. Turns "share what I just made" into a single tool call from Claude, Cursor, or any MCP client.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Lets AI assistants share HTML they generate as a private, end-to-end encrypted link, and update the page later at the same link. The page is encrypted locally before upload, the key stays in the link, and no account is needed.
    2
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.