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 43 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
zyli5313/dochost-mcp
GitHub Stars
1
Server Listing
dochost

TDQS

A4.7/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a clearly distinct concern: account info, page metadata, page body, list, publish, content update, option update, and delete. Potential pairs like get_page/get_page_content and update_page/set_page_options are carefully separated by what each returns or changes.

Naming Consistency5/5

Tool names follow a consistent snake_case verb_noun pattern: get_, update_, delete_, list_, set_, publish. The one bare verb, publish, is still an obvious domain action and does not break the overall predictability.

Tool Count5/5

Eight tools is well-scoped for a hosted-pages service. Each tool covers a necessary operation without redundancy, and none feel like filler or unnecessary variants.

Completeness5/5

The set covers the full page lifecycle: publish, read metadata, read content, update content, update options, delete, list, and account entitlement lookup. It also handles concurrency safely through version/sha fields, so agents have no obvious dead ends.

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 before publishing so you know your limits up front. 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.5/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds value by revealing behavioral details beyond the annotations: the call should happen before publishing, and the primary host is set in the dashboard (manageDomainsUrl) rather than through this API. This helps an agent understand the tool's role and limitations.

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 tightly written sentences. The first sentence front-loads the returned data, and the second provides use-case timing and a key limitation. No filler or redundant phrasing—every clause adds practical guidance.

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?

Given zero parameters, the readOnly annotation, and an existing output schema, the description covers what an agent needs to know: what data is returned, when to call it, and one important caveat (host maintenance is in dashboard). There are no gaps in call prerequisites or expected behavior.

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?

With zero parameters and 100% schema coverage, the schema fully describes the empty input. Baseline for 0 params is 4, and the description appropriately focuses on what the returned data represents (plan, quotas, flags, host) rather than inventing parameter semantics. It adds no parameter detail, but none is needed.

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 uses a specific verb 'Get' and clearly enumerates the exact resources returned: plan, page-quota usage, entitlement flags, and primary host. This differentiates it from page-level siblings like get_page and list_my_pages by focusing on account-level data rather than individual 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?

It gives explicit timing guidance: 'Call before publishing so you know your limits up front.' It also clarifies that the primary host is chosen in the dashboard and not through this API, setting a boundary on what the tool cannot do. However, it doesn't explicitly contrast with sibling alternatives like list_my_pages or get_page, which would make the guidance stronger.

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 Markdown or HTML as a hosted dochost page and get a shareable URL. Respects your plan: link lifetime, password protection, custom slug, and branding all follow your account entitlements. Paid plans publish without dochost branding by default — pass noBranding: false to keep the mark. When the account cannot have an option you asked for, the publish still succeeds and the result carries ignoredOptions + ignoredNote — relay that instead of reporting plain success. The link is issued on the account's primary host (a custom domain or subdomain when one is set in Settings › Domains, otherwise dochost.co/d); get_account reports which.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
formatNo
publicNo
passwordNo
customSlugNo
noBrandingNo

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.7/5.0
Behavior5/5

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

Beyond annotations, the description discloses plan-sensitive behavior, branding defaults, partial success with ignoredOptions + ignoredNote, and host selection based on account settings. It also points to get_account for host confirmation. This is rich behavioral context and aligns with openWorldHint=true.

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?

Four dense sentences, each earning its place: core purpose, plan entitlements, branding caveat, partial-success behavior, and host resolution. Information is front-loaded 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?

The description covers the essential operational context: what content is accepted, how entitlements affect options, what happens when options are ignored, and where the link is hosted. An output schema exists, so return-value details do not need to be repeated. For a 6-parameter publish tool, this is complete.

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 0%, so the description must compensate. It explains format via 'Markdown or HTML', customSlug via 'custom slug', password via 'password protection', and noBranding explicitly with default behavior. The public parameter is not explained, and body is only implied as the content being published, leaving a small gap.

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 a specific verb and resource: 'Publish Markdown or HTML as a hosted dochost page and get a shareable URL.' This clearly differentiates publish from siblings like update_page, delete_page, and get_page by focusing on creation of a new hosted page with a shareable link.

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 clearly conveys the main use case: creating a new hosted page from Markdown or HTML. It also explains when plan limitations matter and tells the agent to relay ignoredOptions/ignoredNote instead of plain success, which is actionable usage guidance. It does not explicitly name alternative tools, but the creation-focused language makes the use case unambiguous.

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. 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
  2. 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"
        +}
  3. 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."
  4. 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"
        +}
  5. 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"
        +}
  6. 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"
        +}
  7. 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
    A
    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.
    2 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
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.