Skip to main content
Glama

stacktree-mcp

MCP server for stacktr.ee. Publish HTML artifacts from any MCP client (Claude Desktop, Claude Code, Cursor, Continue, etc).

Set up with an agent

If you have a coding agent open, hand it this line and it does the rest — installs, verifies the connection, and learns the tool surface:

Fetch and follow the setup instructions at https://stacktr.ee/prompt.md

Works in any agent that can fetch a URL. The instructions are plain Markdown; read them first if you like.

Related MCP server: sentou

Install

Add to your MCP client config:

{
  "mcpServers": {
    "stacktree": {
      "command": "npx",
      "args": ["-y", "stacktree-mcp"],
      "env": { "STACKTREE_API_KEY": "stk_live_..." }
    }
  }
}

Generate an API key at https://app.stacktr.ee.

You may not need this package

This is the stdio bridge, for clients that cannot speak streamable HTTP. If yours can, connect straight to the hosted server at https://api.stacktr.ee/mcp — it exposes the same 25 tools and takes the same key:

curl -sS -X POST https://api.stacktr.ee/mcp \
  -H "Authorization: Bearer $STACKTREE_API_KEY" \
  -H 'accept: application/json, text/event-stream' \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

No browser and no OAuth flow is required to do that: an stk_live_ key is a valid credential on the MCP endpoint, exactly as it is on the REST API. OAuth 2.1 with Dynamic Client Registration is also accepted, for connectors acting on behalf of a signed-in human; session cookies are refused. Send one credential.

No key, and no human to ask? POST https://api.stacktr.ee/provision buys one over x402. A human nearby but no browser? POST https://api.stacktr.ee/api-keys/device-code, print the returned verification_url_complete for them, and poll /api-keys/device-code/poll until it returns the key (RFC 8628).

Tools (25)

Tool

What it does

publish_html

Publish HTML; returns { url, id, expires_at, ... }. Pass client to file it under a client space.

update_site

Replace the HTML of an existing site in place; URL is preserved.

get_site

Read a site's current HTML source — edit it, then update_site.

set_password

Add or clear a passcode gate. Works on every plan.

set_expiry

Set hours-from-now expiry, or null for never. Clamped to the plan ceiling.

set_email_gate

Restrict viewers to an email domain (one-time magic-link verify). Paid plans only.

set_agentation

Toggle the on-page Agentation feedback toolbar.

list_sites

List sites owned by this API key. Paged (has_more + cursor); filter with client.

delete_site

Take a page down. The link dies at once; the content is kept 30 days, then destroyed.

restore_site

Put a deleted or expired page back at the same URL, inside those 30 days.

claim_site

Adopt a page published without an account, using its claim_token. Same URL; a claim counts as a publish.

get_content

Read a page back as html (exact stored source, editable) or text (stripped, cheap to read).

get_me

This key's account, plan, counts and enforced limits. Read limits from here, never from a description.

link_wallet

Link your wallet so pages you publish are owned by your account.

list_feedback

Read viewer annotations left via the Agentation toolbar; unresolved first.

create_share_link

Mint a link addressed to one person — every open through it is attributed to that name.

list_share_links

The links on a page, with attributed opens and when each was last opened.

revoke_share_link

Kill one link; the page and every other link keep working.

resolve_feedback

Mark a feedback item addressed, with an optional note.

set_client

File a page under a client space by name or slug (auto-created), or null to detach.

list_client_spaces

The client spaces on the account: page counts, bound hostname, portal state.

create_client_space

Create a space up front. Rarely needed — publishing with client creates one.

update_client_space

Rename, archive, or set the space-wide viewer gate every page under it inherits.

delete_client_space

Remove a space. Its pages detach and keep their URLs.

get_design_guide

The house design guide — read it before generating or restyling a page.

Linking a wallet

If your agent pays for publishes from its own wallet (x402 / MPP), link that wallet to your Stacktree account so every page it publishes — past and future — is owned there:

  1. Your human generates a link code at https://app.stacktr.ee/wallets.

  2. link_wallet({ code }) → returns the exact message to sign.

  3. Sign it with your wallet (personal_sign).

  4. link_wallet({ code, wallet, signature }) → links the wallet and adopts the pages it already published.

Reading feedback

Turn on the on-page toolbar with set_agentation and viewers can annotate the page; their comments are stored with the site. list_feedback returns them, unresolved first (comment, annotated element, selected text, intent, severity). Fix the page in place with update_site (same URL), then resolve_feedback to mark each item addressed, with an optional note.

Privacy defaults

Every site gets an unguessable https://stacktr.ee/p/{token}/ URL. Pass public_slug to opt into https://{slug}.stacktr.ee/.

pii_check defaults to block — uploads matching common secrets and PII shapes (emails, SSNs, credit cards, OpenAI/GitHub/Stripe API-key prefixes) are refused. Pass warn to publish anyway (matches are flagged in the response), or off to skip the scan.

What the free plan gives you

A key on the free plan publishes 3 pages in total, and each one expires 7 days after it is published. The count is lifetime, not concurrent: deleting a page or letting it expire does not give the slot back.

expires_in_hours: "never" is refused on a plan that caps page lifetime, not quietly shortened: 409 expiry_clamped, nothing published, and the body carries the date the page would have got. Pass accept_clamp: true to take the ceiling, or tell the user the plan cannot make the link permanent. A number longer than the ceiling is shortened rather than refused, with expiry_clamped: true in the response. Either way, read expires_at_iso off the response and quote that, never the value you asked for.

Passcodes (set_password) work on every plan, free included. Email gates (set_email_gate) and viewer numbers are on paid plans. Hitting a ceiling returns HTTP 402 with a stable plan_* code in error:

Code

Means

plan_lifetime_limit_exceeded

All 3 free pages used. Deleting one does not help.

plan_site_limit_exceeded

Active-page cap reached.

plan_password_not_available

Passcodes are not on this plan (they are on Free; a plan can still be without them).

plan_viewer_gate_not_available

Email gates are not on this plan.

plan_domain_not_available

Custom domains are not on this plan.

GET /me — or the get_me tool — returns the calling key's own limits object. Read caps from there rather than hard-coding them. Current plans and prices: https://stacktr.ee/pricing.md.

Available Tools

25 tools
claim_siteAInspect

Adopt a page that was published without an account into the account this key belongs to. Pass the claim_token from the anonymous publish response. Do this whenever you published anonymously and a key is now available: an unclaimed free page dies at 24 hours, and claiming gives it the longest life the plan allows, never a shorter one, with the same URL, id, token and read history. A claim IS a publish: on a free key it spends one of the three lifetime pages and can return 402 plan_lifetime_limit_exceeded or 429 plan_site_limit_exceeded, and the claim link stays valid until the page expires, so report the wall rather than retrying. A wallet-paid page is the exception: it spends no quota and keeps the permanence it paid for. Claiming SPENDS the claim_token — it stops being the page's keyless update credential and update_site takes over. Re-claiming a page this account owns answers already: true; 409 already_claimed, 403 invalid_claim_token and 410 are all final.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_slugYesThe site id from the anonymous publish response.
claim_tokenYesThe secret claim_token from that same response. Sensitive: anyone holding it can adopt the page.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden of behavioral disclosure, and it does so thoroughly. It reveals quota consumption, 402/429 failure modes, finality of 409/403/410 errors, claim_token consumption, and the fact that a claim is effectively a publish.

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 definition is long but dense; nearly every clause carries operational information. It front-loads the core action and token requirement, then layers in side effects, exceptions, and terminal error semantics with no filler.

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?

The description thoroughly covers invocation context, side effects, error codes, and credential lifecycle. Without an output schema, it stops just short of explicitly describing the successful claim response shape, though the mention of re-claiming returning true offers some signal.

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 a baseline of 3 applies, but the description adds meaningful context beyond the schema. It establishes that both parameters come from the same anonymous publish response, emphasizes that claim_token is sensitive, and explains what claiming does to the token's role.

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 specific verb and resource: 'Adopt a page that was published without an account into the account this key belongs to.' It clearly differentiates claim_site from siblings like publish_html and update_site by tying it to anonymous publish responses and the claim_token.

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 this tool: 'Do this whenever you published anonymously and a key is now available.' It also covers exclusions and alternatives, noting that wallet-paid pages are an exception and that update_site takes over after claiming.

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

create_client_spaceAInspect

Create a client space before anything is published into it. Rarely needed: publish_html with a client argument auto-creates the space under the same casing and slug rules, so use this only when the user is setting a client up ahead of the work. Idempotent with that auto-create — an existing space matching the name or slug, in any casing, comes back instead of a duplicate. The returned slug is the space’s permanent address segment; a later rename changes the display name only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name, e.g. "Acme Co". Casing is kept for display; identity is case-insensitive.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and handles it well: it discloses idempotency (existing space by name/slug in any casing returns instead of duplicating), the permanence of the returned slug, and that later renames affect display name only. It also conveys the safe create-once side-effect model.

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 with no filler; the main action and rare-use caveat are front-loaded, and every subsequent sentence adds either behavioral or usage information that earns its place.

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 single-parameter creation tool with no output schema, the description is complete enough to guide invocation: it explains return significance (permanent slug), duplicate behavior, and the auto-create alternative. An agent has what it needs to call correctly without further clarification.

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% and the schema already describes the display name and case-insensitive identity, so the baseline is 3. The description adds value by clarifying that matching can occur by slug as well as name, any casing, and that the same casing/slug rules as publish_html apply, which goes beyond the schema.

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 and resource ('Create a client space') and distinguishes it from publish_html, which auto-creates the space with a client argument. It also clarifies that the tool is rarely needed, so an agent can differentiate it from sibling tools without opening schemas.

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 tells the agent when to use: only when setting a client up ahead of the published work, and when not to: publish_html with a client argument already auto-creates the space. This is a direct when/when-not guideline with a named alternative.

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

delete_client_spaceAInspect

Delete a client space. The pages filed under it are NOT deleted: they detach to floating pages and keep working on their existing URLs, so delivered work stays reachable. The space itself goes, and with it the generated portal page and any address connected to it, which stop resolving. A space-level viewer gate goes with the space too: a page that was protected only by the space passcode or email domain, and carries no gate of its own, becomes reachable by anyone holding its link. Warn the user, and set_password on the pages that have to stay private before deleting. When the user means a client is simply finished, prefer update_client_space with archived: true — archiving keeps the portal and the address live, frees the plan slot, and can be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_slugYesSpace id or slug from list_client_spaces. Not the display name.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations present, the description carries the full behavioral burden, and it delivers: it discloses that pages survive as floating pages, the portal/address stop resolving, viewer gates are removed, and unprotected pages can become accessible to anyone with the link. This level of side-effect and security disclosure is exemplary.

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 long but every sentence earns its place: the critical 'NOT deleted' caveat is front-loaded, destructive consequences are enumerated, and the archiving alternative is introduced exactly where it is needed. There is no filler or redundancy.

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 tool with one parameter, no annotations, and no output schema, the description is remarkably complete. It covers survival of pages, loss of portal/address, security implications of gate removal, pre-deletion safety steps, and the preferred non-destructive alternative. An agent has enough context to invoke the tool correctly and warn the user appropriately.

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?

The lone parameter id_or_slug is already fully documented in the schema, including the source (list_client_spaces) and the 'not the display name' caveat. The tool description does not add further parameter-level semantics, so the baseline 3 for high schema coverage 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 opens with a specific verb and resource — 'Delete a client space' — and then sharply distinguishes it from update_client_space by describing the archiving alternative. The extensive side-effect inventory makes it unmistakable what operation this is and how it differs from its sibling.

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 gives explicit when-not-to-use guidance: for a finished client, prefer update_client_space with archived: true, with the trade-offs spelled out (keeps portal/address live, frees plan slot, undoable). It also provides actionable preconditions — warn the user and set_password on pages that must stay private — which directly informs safe invocation.

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

delete_siteAInspect

Take a page down. The link goes dead immediately for everyone holding it, and the content is kept for 30 days: restore_site puts it back at the same URL, with the same id, token, slug and read history, any time in that window. After the 30 days the content is destroyed and cannot be recovered by anyone. So this is undoable, but it is not a preview: tell the user their link stops working now. On the free plan deleting does not hand back a lifetime page slot, because that cap counts publishes rather than live pages. Deleting a page that is already down is not an error: the response comes back with already_deleted: true and the same restorable_until. Read restorable_until (unix seconds) off the response before promising a restore: it is absent when the delete was not recoverable.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_slugYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral disclosure burden, and it does so thoroughly. It reveals immediate link death, 30-day retention, permanent destruction after that, non-recoverability, already_deleted idempotency, and the restorable_until field semantics. This is exemplary transparency for a destructive tool.

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 dense but every sentence carries critical operational information: consequences, restore behavior, free-plan implications, idempotency, and response handling. It is front-loaded with the primary action and then layers necessary caveats. No filler is present.

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?

Despite having no annotations and no output schema, the description covers the key context an agent needs: what happens to the URL, what happens to the content, restore semantics, plan-specific behavior, already-deleted handling, and how to read the response. It is unusually complete for a mutation tool and leaves little room for dangerous assumptions.

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 does not directly explain the id_or_slug parameter. It mentions 'id' and 'slug' in the context of restore_site, which offers some indirect signal, but it never states that the parameter accepts either a page ID or slug or how to obtain them. Given the low coverage, the description should compensate but largely leaves parameter semantics to the property name.

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 clear, specific action: 'Take a page down.' It unambiguously names the resource (a page/site) and the operation (delete/unpublish), and it differentiates delete_site from the sibling restore_site by describing the delete-and-restore lifecycle. An agent can immediately tell this tool exists to make a page unavailable.

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 gives strong usage direction: it explicitly mentions restore_site as the recovery alternative, emphasizes that this is not a preview, and instructs the agent to tell the user the link stops working now. It also explains the 30-day restore window and the free-plan slot consequence, so an agent knows when deletion is appropriate and what caveats to communicate.

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

get_contentAInspect

Read a page's content back. format "html" (the default) returns the exact stored index.html, byte for byte, which is the only form you can edit and hand to update_site; format "text" returns the same page stripped to plain text — no markup, CSS, scripts or SVG — for when you only need to read, summarise or quote it and the markup would be most of the tokens. Only pages this key owns, gated ones included. A page that expired or was deleted still reads back until its restore window closes; one taken down for abuse does not. Never edit the text form and publish it: that throws the page's design away.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo
id_or_slugYesSite id, slug, or unlisted token.

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and handles it well. It reveals that html is returned byte-for-byte, that text strips markup/CSS/scripts/SVG, that deleted or expired pages may still be readable until the restore window closes, and that abuse-taken-down pages are not readable.

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?

Although the description is longer than average, every sentence carries operational value: default behavior, format differences, access scope, edge cases, and a critical warning. The main purpose is front-loaded, and the rest is dense but not padded.

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 that there is no output schema and no annotations, the description covers the essential context: input formats, ownership restrictions, lifecycle edge cases, and a dangerous misuse to avoid. An agent has enough information to select and invoke this tool correctly.

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

Parameters5/5

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

The schema describes id_or_slug but leaves format's meaning undocumented. The description compensates thoroughly: it defines both enum values, states the default, and explains the concrete behavioral difference between html and text, adding meaning far beyond the bare enum.

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 clear verb and object: 'Read a page's content back.' It also distinguishes the two output formats and relates them to editing via update_site, making the tool's purpose and differentiation from sibling tools 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?

The description explicitly states when to use each format: html is for the exact editable content to pass to update_site, while text is for reading, summarising, or quoting without token waste. It also gives a strong when-not instruction: never edit and publish the text form.

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

get_design_guideAInspect

Fetch the Stacktree house design guide for improving a published page. Call this BEFORE any request to make a page look better, more polished, more professional, or "beautiful" — it contains the assess-first workflow (including when NOT to restyle a page that already has a deliberate design), the quality floor, and the CSP constraints published pages run under. Then follow it: get_site → assess → rebuild or elevate → update_site.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it does so well. It clearly indicates a non-mutating fetch operation ('Fetch'), discloses the guide's internal contents (assess-first workflow, quality floor, CSP constraints), and explains how the tool should influence subsequent behavior. There is no hidden side effect or ambiguous mutation.

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 front-loaded with the core purpose, then adds the critical usage precondition, a summary of the guide's contents, and an explicit workflow. Every sentence contributes actionable information and none is filler or redundant with the schema.

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 zero-parameter, no-output-schema documentation fetcher, the description is complete. It tells the agent what the tool returns conceptually, when to invoke it, what constraints it reveals, and how to apply its output to the broader site improvement workflow.

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 has zero parameters and the schema is trivially complete, so there is nothing for the description to add about parameter meanings. Per the baseline for zero-parameter tools, a score of 4 is appropriate because the description handles the no-parameter case cleanly without needing to invent semantics.

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 specific verb and resource: 'Fetch the Stacktree house design guide for improving a published page.' It clearly identifies the tool as a read operation that supplies design guidance, and it distinguishes its role from sibling tools like update_site or get_site by framing it as the guide that precedes and drives those actions.

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 states when to call it: 'Call this BEFORE any request to make a page look better, more polished, more professional, or beautiful.' It also tells the agent what the guide contains, including when NOT to restyle, and provides the exact follow-up workflow: get_site → assess → rebuild or elevate → update_site.

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

get_meAInspect

Who this key publishes as, and what its plan actually allows: plan, signed-in email, pages held, lifetime publishes spent, and a limits object. READ limits RATHER THAN QUOTING NUMBERS FROM ANY OTHER TOOL DESCRIPTION — those describe the free plan and this key may be on any plan. Worth calling before promising a permanent link (max_expiry_hours), before promising a passcode or email gate (passwords, email_gates), and after a 402 or 429 so you can say which wall was hit. The email also answers "where did my page go": pages live in one account, and the commonest cause of a missing page is a second one.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It explains this is a read-only introspection call, enumerates what it returns, and notes that limits are plan-dependent. It does not explicitly state side-effect-freedom, but the 'READ' framing and account-inspection purpose make that clear.

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 compact yet information-dense. It front-loads the core purpose, then provides a critical warning, and then lists concrete decision points for when to call. Every sentence earns its place.

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 and no output schema, the description still tells the agent what fields to expect, why plan discrepancies matter, and how to use this tool to answer common questions. It is fully adequate for an agent to decide when to invoke it.

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 has zero parameters and the input schema already fully covers this with 100% coverage. The description therefore has no parameter semantics to add, and the baseline of 4 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 clearly states this tool reports identity and plan information: 'Who this key publishes as, and what its plan actually allows: plan, signed-in email, pages held, lifetime publishes spent, and a limits object.' This is specific and distinguishes get_me from sibling tools that manage sites, publishing, or client spaces.

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 gives explicit when-to-use guidance: call before promising a permanent link, before promising a passcode or email gate, after a 402 or 429, and to diagnose missing pages. It also warns not to quote limits from other tool descriptions, which prevents a common mistake.

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

get_siteAInspect

Read the current HTML source of a site you own, so you can edit it and update_site in place. Returns the exact stored index.html (not rendered or text-stripped), preserving CSS and inline charts.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_slugYesSite id, slug, or unlisted token.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It meaningfully reveals that the tool returns the exact stored index.html, not rendered or text-stripped, and preserves CSS and inline charts. It does not cover authentication failures or ownership edge cases, but the key return behavior is well disclosed.

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 sentences with no wasted words. The core read behavior and return format are front-loaded, and the workflow context is included without padding.

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?

This is a simple one-parameter read tool with no output schema, and the description covers the return value, the exact format, what is preserved, and the intended edit workflow. Nothing critical is missing for an agent to invoke it correctly.

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?

The input schema already provides 100% coverage for id_or_slug, including its type and description. The tool description does not add parameter-specific semantics beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Read') and resource ('current HTML source of a site you own'), and clarifies that it returns the exact stored index.html, not a rendered or text-stripped version. This clearly distinguishes it from siblings like get_content or list_sites.

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 explicitly frames the tool as the read step before editing: 'so you can edit it and update_site in place.' It names update_site as the paired write tool, providing clear workflow context, though it does not explicitly discuss when to prefer related read tools like get_content.

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

list_client_spacesAInspect

List the client spaces on this account: slug, name, page_count, last activity, hostname (the space’s own address, e.g. acme.theiragency.com, when one is connected) and portal_enabled (whether the space serves a generated client portal at that address). Spaces group published pages per client ("file this under Acme"). publish_html auto-creates spaces, so an empty list just means nothing has been filed yet — publish with a client to start one. Connecting an address and enabling the portal are done in the dashboard (DNS is involved).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and it delivers useful behavioral detail: it is an account-level list, empty results have a specific meaning, spaces are auto-created by publish_html, and hostname/portal configuration is external. It does not spell out read-only status or pagination, but 'List' plus the semantic explanation covers the main expectations.

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 front-loaded with the core action and fields, then uses two short follow-up sentences to clarify empty-list meaning and out-of-band portal setup. Every sentence carries useful information without repetition or filler.

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 zero-parameter list tool with no output schema, the description covers the domain concept, the returned fields, empty-list behavior, how spaces come into existence, and where related configuration happens. Minor omissions such as output formatting or ordering are not critical for invoking the tool correctly.

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 has zero parameters and 100% schema description coverage, so the baseline is 4; there are no parameter semantics for the description to add. The field-level detail in the description addresses what the output contains instead, which is appropriate for a no-input list tool.

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 leads with a specific verb and resource ('List the client spaces on this account') and enumerates the exact fields returned, which clearly identifies what the tool does. The definition also distinguishes the concept from related resources by explaining spaces group published pages per client, so it is not confusable with list_sites or the create/update/delete siblings.

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 clear contextual guidance: an empty list means nothing has been filed yet, publish_html auto-creates spaces, and portal/address setup happens in the dashboard. It does not explicitly name alternatives or state when not to use the tool, but the context makes the appropriate use apparent.

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

list_feedbackAInspect

Read viewer feedback left on a site via the Agentation toolbar. Each item has a comment plus the annotated element, selected text, intent and severity; unresolved items first. The loop: list_feedback → get_site/update_site → resolve_feedback.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_slugYesSite id, slug, or unlisted token.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It does reveal that the tool is read-only and that unresolved items are returned first. However, it does not mention pagination, authentication, or failure behavior, leaving some behavioral uncertainty.

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 two concise sentences with no wasted words. It front-loads the core action and resource, then adds item details, ordering behavior, and the orchestration loop, all of which earn their place.

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 one-parameter read tool, the description covers the key output fields, the unresolved-first ordering, and the relevant workflow with sibling tools. It omits pagination and error behavior, but those are not glaring gaps given the simple input schema and read-only nature.

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 100% and already documents id_or_slug as 'Site id, slug, or unlisted token.' The description adds only contextual framing about the site and workflow, so it is adequate but does not meaningfully improve parameter understanding beyond the schema.

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 'Read viewer feedback left on a site via the Agentation toolbar', clearly stating the verb, resource, and source context. It also enumerates what each item contains and distinguishes this read operation from the sibling resolve_feedback tool.

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 provides a clear workflow: list_feedback → get_site/update_site → resolve_feedback, which signals when this tool is appropriate in a broader process. It does not explicitly state when not to use it or name alternatives directly, but the loop makes the intended usage fairly clear.

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

list_sitesAInspect

List sites owned by this API key. Viewer numbers are plan-gated: when metrics_locked is true, view_count, unique_viewers and last_viewed_at are null and only the boolean opened is meaningful. Report "someone opened this" in that case; do not guess or infer a count. Each site carries its client space (or null); filter with the client argument. Pages that expired or were deleted stay in this list rather than disappearing: check deleted_at before handing anyone a url, because a row with deleted_at set is a dead link, and restore_site puts it back until restorable_until passes. delete_reason says which it was: "expired", "owner", or "abuse", and an abuse takedown is never restorable, so do not offer to put one back. Those three fields are absent rather than null against a worker that predates them, so treat a missing deleted_at as live. Paged: when has_more is true, call again passing next_before and next_before_id as before and before_id, and repeat until has_more is false.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
beforeNo
clientNo
before_idNo

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden, and it delivers extensively: plan-gated viewer fields, the meaning of deleted_at, delete_reason semantics including non-restorable abuse takedowns, the old-worker missing-field quirk, and exact pagination behavior. This goes well beyond a typical description.

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 dense but every sentence carries a specific operational instruction or caveat. It front-loads the core purpose and then logically proceeds through gating, deletion semantics, legacy-worker behavior, and pagination without 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?

Given the tool's complexity, the absence of annotations, and the absence of an output schema, the description is remarkably complete. It tells the agent how to interpret returned fields, avoid dead links, handle non-restorable sites, and paginate correctly, leaving little to guesswork.

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, and it does for client, before, and before_id by explaining their roles in filtering and pagination. The limit parameter is not explained, but it is self-evident as a page size; overall the gap is minor.

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

Purpose4/5

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

The description opens with a specific verb and resource: "List sites owned by this API key," which clearly states what the tool does. It does not explicitly name sibling tools like get_site or list_client_spaces, so it stops short of full sibling differentiation, but the scope is unambiguous.

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 provides rich usage context: filtering by client, pagination loop mechanics, and how to handle deleted or expired sites. It does not explicitly state when to prefer this tool over siblings or when not to use it, but the operational guidance is clear and actionable.

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

publish_htmlAInspect

Turn HTML into a link a person can open in a browser. Reach for this whenever a page you produced has to be seen by someone who is not in this conversation — a client, a teammate, a reviewer, a channel — or when the user says "publish this", "share this", "send it to X", or asks for a preview link to something you built. A rendered preview inside a tool is not a link: if it has to travel, publish it. Returns { url, id, expires_at, ... }; hand the url back. Privacy-first defaults: unlisted token URL, plan-aware expiry (permanent on paid plans, 7 days on free — its ceiling), PII scan in block mode, strict CSP, X-Robots-Tag: noai. Pass expires_in_hours: "never" for a permanent link, which paid plans honour and a capped plan REFUSES with 409 expiry_clamped rather than silently shortening: either resend with accept_clamp: true to take the ceiling, or tell the user the plan cannot make a link permanent, and never report a page as permanent unless expires_at is null. Read expires_at_iso off the response and say that date. Retrying? Pass idempotency_key (any unique string) and a retry returns the SAME page instead of publishing a second one. pii_check: "warn" publishes despite detected sensitive data. A free key allows 3 pages in total and deleting one does not free the slot, so past the third this returns 402 plan_lifetime_limit_exceeded; report that to the user rather than retrying.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientNo
contentYesFull HTML to publish.
filenameNo
passwordNo
pii_checkNo
agentationNo
client_pathNo
public_slugNo
accept_clampNo
burn_after_readNo
idempotency_keyNo
expires_in_hoursNo

TDQS

A4.8/5.0
Behavior5/5

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

With zero annotations, the description carries the full burden and delivers extensively: return shape { url, id, expires_at }, unlisted token URL, plan-aware expiry (permanent on paid, 7-day ceiling on free), 409 expiry_clamped with accept_clamp semantics, idempotent retries via idempotency_key, PII scan modes, strict CSP, X-Robots-Tag: noai, and the free-plan 3-page lifetime cap with 402 error. It even instructs never to report a page as permanent unless expires_at is null.

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?

Long but information-dense: nearly every sentence carries an operational fact, from error codes to plan limits to idempotency guarantees. The structure is logical and front-loaded (purpose first, usage triggers second, operational details after). It borders on heavy, but the length is justified by the tool's plan-dependent and error-rich 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?

With no output schema and no annotations, the description supplies the return format, both documented error modes with explicit user-facing instructions (report 402 rather than retry; explain the plan cannot make a permanent link), plan ceilings, and retry semantics. For a 12-param tool with plan-dependent behavior, this is about as complete as a description can be; only the minor self-evident params lack explicit semantics.

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 8%, so the description must compensate — and it does for the riskiest params: expires_in_hours ('never' semantics, clamping, 409 refusal), idempotency_key (same-page retry guarantee), pii_check ('warn' publishes despite sensitive data), and accept_clamp (take the ceiling). However, client, filename, password, agentation, client_path, public_slug, and burn_after_read get no semantic detail in either the schema or description; their names hint at meaning but the semantics are not stated.

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 opening sentence states the transformation precisely: 'Turn HTML into a link a person can open in a browser.' It names a specific verb (publish) and resource (HTML→URL), and the output artifact (a browser-openable link) is distinct from sibling tools that manage sites, set expiry, or create share links for existing resources.

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 explicit trigger conditions: any page produced for someone outside the conversation, user phrases like 'publish this', 'share this', 'send it to X', or preview-link requests. It also states the when-not explicitly: 'A rendered preview inside a tool is not a link: if it has to travel, publish it.' This is direct routing guidance an agent can act on without inference.

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

resolve_feedbackAInspect

Mark a feedback item as addressed after fixing the page. Optionally include a note describing the change.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
feedback_idYesFeedback item id from list_feedback.

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavior. It states the state change but does not say whether the action is reversible, whether permissions are required, what status transitions occur, or whether any side effects (e.g., notifications) are triggered. This is a notable gap for a write operation.

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 concise sentences, front-loaded with the core action, with no filler. The note option is mentioned efficiently.

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

Completeness3/5

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

The tool is simple with only two parameters, and the description covers the primary action and the optional note. However, without annotations or an output schema, the lack of information about return values, reversibility, and side effects leaves some uncertainty for an agent deciding whether and how to invoke it.

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 schema describes feedback_id as coming from list_feedback, and the description explains the note parameter as 'a note describing the change.' Together, both parameters receive meaningful semantic guidance despite the schema-only coverage being 50%.

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

Purpose4/5

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

The description clearly states the action ('mark as addressed') and the resource ('feedback item'), and the context 'after fixing the page' provides situational framing. It is not explicitly differentiated from sibling tools like list_feedback, but the mutation intent is unmistakable.

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 provides a clear condition for use ('after fixing the page'), which is a meaningful usage guideline. It does not mention alternatives or exclusions, but for this simple mutation the context is sufficient.

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

restore_siteAInspect

Put a page back at the same URL after it was deleted or ran out of time. Same id, same token, same slug, same read history, so every link already sent starts working again. Call this, and never publish_html, whenever update_site, set_expiry, set_password or another settings call answers 409 site_deleted: publishing the page again mints a different URL, strands everyone holding the old one, and spends another of the free plan's three lifetime pages, while a restore spends none of them. Works only inside the 30 days after the page stopped serving, and only for a page its owner deleted or one that expired. A page taken down for abuse is not restorable, and neither is one past its window: both answer 404 with the same body, deliberately. IT IS A RESCUE, NOT A RENEWAL. Read expires_at and restored_for off the response and tell the user that date: restored_for "grace" means the page had run out of time and comes back for 48 hours rather than a fresh full lifetime, while "plan" means it got the normal window for the plan. A 402 plan_site_limit_exceeded means the account is at its live-page limit: take another page down or upgrade, and this one stays restorable until its deadline either way. If a retry answers 404, do not assume the page is gone: call get_site first, because the earlier attempt may have succeeded and a restored page is no longer restorable.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_slugYesSite id, slug, or unlisted token. All three still resolve while the page is down.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries full disclosure burden and fully delivers: it reveals that abuse takedowns and past-window pages both answer 404 with the same body deliberately, explains restored_for 'grace' vs 'plan' semantics, clarifies what 402 plan_site_limit_exceeded means for the account, and warns that a retry answering 404 may actually mean the earlier restore succeeded because a restored page is no longer restorable.

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?

Core behavior is front-loaded in the first sentence, and the error-code and retry guidance that follows is dense but each sentence carries distinct operational value. Slightly verbose with minor redundancy in restating the 30-day window and the non-restorable cases twice, but nothing is 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?

For a single-parameter tool with no annotations and no output schema, this is exhaustive: it covers 404/402/409 handling, names the response fields to read (expires_at, restored_for), specifies the 48-hour grace behavior, gives user-facing messaging guidance, and provides retry fallback logic. 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.

Parameters3/5

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

Schema coverage is 100% — id_or_slug is already documented as accepting a site id, slug, or unlisted token that still resolves while the page is down. The description reinforces this ('Same id, same token') but adds no parameter detail beyond the schema, so the baseline 3 applies.

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?

Opens with an action verb and precise resource: 'Put a page back at the same URL after it was deleted or ran out of time.' It establishes the distinguishing invariants — same id, token, slug, and read history — so every existing link works again, which clearly separates it from publish_html.

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 trigger condition ('whenever update_site, set_expiry, set_password or another settings call answers 409 site_deleted'), an explicit excluded alternative ('Call this, and never publish_html'), and a reason why publishing is wrong: it mints a different URL, strands link holders, and spends a lifetime page while restore spends none. It also names eligibility boundaries (30-day window, owner-deleted or expired only).

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

set_agentationAInspect

Toggle the on-page Agentation feedback toolbar. When on, viewer annotations are collected — read them with list_feedback, fix the page with update_site, then resolve_feedback.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYes
id_or_slugYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It does disclose the key conditional behavior: when on, viewer annotations are collected and can later be read. But it does not mention whether toggling off preserves or deletes existing feedback, what permissions are required, or whether enabling the toolbar affects the live page experience.

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 just two short sentences with no filler. The primary action is front-loaded, and the follow-up workflow is compactly appended. Every clause earns its place.

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

Completeness3/5

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

For a simple boolean toggle on a resource, the description conveys the main purpose and workflow. However, because there is no output schema, no annotations, and 0% param coverage, the missing id_or_slug semantics and lack of persistence/side-effect details make it only minimally complete.

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%, so the description must clarify both parameters. It only implicitly explains 'enabled' via 'When on'; it never defines what 'id_or_slug' refers to, leaving a required parameter ambiguous. This is a meaningful gap for an agent selecting or invoking the tool.

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 ('Toggle') and a specific resource ('the on-page Agentation feedback toolbar'), immediately stating what the tool does. It also distinguishes itself from feedback-related siblings by framing it as the tool that starts/stops collection, while list_feedback, update_site, and resolve_feedback are the downstream steps.

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 provides clear context: enable the toolbar to collect viewer annotations, then read/fix/resolve them. It names the relevant follow-up tools, which helps the agent understand where this fits in the workflow. However, it does not explicitly state when NOT to use this tool or how it compares to direct alternatives like list_feedback or resolve_feedback.

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

set_clientAInspect

File an existing site under a client space (by name or slug, auto-created), or pass client: null to detach it to a floating page. Mirrors set_password: one site, one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYes
id_or_slugYesSite id, slug, or unlisted token.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does well: it discloses auto-creation of client spaces, detaching to a floating page on null, and the one-site-one-call constraint. It does not cover permissions, return values, or reversibility, but the key side effects are explicit.

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 sentences with no filler; the primary action is front-loaded and the null case follows immediately. The cross-reference to set_password is compact and useful for an agent familiar with that sibling.

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 two-parameter mutation with no output schema, the description is largely complete: it identifies both parameters' roles, the auto-creation side effect, and the detach behavior. It omits return/error details, but those are not required for correct invocation and no output schema exists to document them.

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 only 50%; the description adds meaning to `client` by explaining it can be a client-space name/slug, is auto-created, or null for detaching. `id_or_slug` is left to the schema, but the description's coupling to 'existing site' reinforces its 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?

Description uses a specific verb ('File'), names the resource ('an existing site under a client space'), and covers both attach/detach modes with 'pass client: null to detach it to a floating page.' It is clear enough to distinguish from sibling tools even without schemas.

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

Usage Guidelines3/5

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

It conveys the core usage scenario and the special null case, but it does not explicitly say when to choose this over sibling tools such as set_agentation or update_client_space. The phrase 'Mirrors set_password: one site, one call' hints at a pattern but does not state exclusions or alternatives.

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

set_email_gateAInspect

Restrict viewer access to a specific email domain (strict-equal match). Viewers must verify via a one-time magic link. Mutually exclusive with set_password. Pass domain: null to clear. Email gates are a paid feature: on a free key, setting one returns 402 plan_viewer_gate_not_available.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
id_or_slugYes

TDQS

A4.7/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden of behavioral disclosure, and it does so richly. It explains the strict-equal matching, one-time magic link verification, the null value to clear the gate, mutual exclusivity with set_password, and the exact 402 error code for free keys. This gives the agent a complete picture of side effects and error 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?

Three tight sentences, each adding unique value: the core purpose and match semantics, the verification and exclusivity behavior, and the clearing mechanism plus error condition. The most important behavioral constraints are front-loaded and no sentence is wasted.

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 two-parameter tool with no annotations and no output schema, the description covers what the tool does, how the domain gate behaves, how to clear it, the interaction with set_password, and the free-tier error. Nothing essential for correct invocation is missing, and even error handling is specified.

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 add meaning. It thoroughly explains the 'domain' parameter: strict-equal matching and null-to-clear. It does not explain 'id_or_slug', but that name is self-descriptive and consistent with sibling tools. The core semantic parameter receives excellent treatment, leaving only a minor gap for id_or_slug.

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 specific verb and resource: 'Restrict viewer access to a specific email domain'. It immediately distinguishes itself from siblings by stating the strict-equal match condition and the mutual exclusivity with set_password. An agent can clearly understand what this tool does and how it differs from related tools.

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 for restricting access by email domain and is mutually exclusive with set_password. It also discloses the paid-feature requirement and the 402 error on free keys. However, it does not explicitly state 'use set_password for password-based gating' or list conditions for when not to use it beyond the mutual exclusivity note. Still, the guidance is strong.

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

set_expiryAInspect

Set hours-from-now expiry, or null for never. A NUMBER above the plan ceiling is shortened to it (free: 168 hours) and the response says so. null on a plan that caps page lifetime is REFUSED — 409 expiry_clamped, nothing changed — rather than quietly becoming 7 days, so a shortened page can never be reported as permanent: either resend with accept_clamp: true to take the ceiling, or tell the user the plan cannot make this link permanent. Quote expires_at_iso from the response, never the value you asked for.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_slugYes
accept_clampNo
expires_in_hoursYes

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it delivers: it discloses ceiling clamping with 409 expiry_clamped and 'nothing changed', the invariant that a shortened page can never be reported permanent, the acceptance of accept_clamp as the escape hatch, and the instruction to quote expires_at_iso rather than the requested value. This transforms a surprising, plan-dependent API into a predictable contract.

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?

Purpose is front-loaded in the first sentence and every subsequent clause conveys a load-bearing behavior or instruction; nothing is filler. However, it is one long monolithic paragraph mixing clamping, refusal, retry, and quoting rules, which could be clearer if split by scenario. Dense and efficient, but structurally improvable.

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 tool with no output schema and no annotations, the description covers the error contract, the retry flow, and the correct response field to use — remarkably complete for the tricky plan-dependent cases. The one real gap is id_or_slug, a required parameter whose target resource is never stated, forcing inference from the parameter name.

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. It does for two of three parameters: expires_in_hours ('hours-from-now' semantics, 'null for never', ceiling behavior) and accept_clamp ('take the ceiling'). However, id_or_slug — a required parameter — receives zero elaboration; the agent must infer from the name alone what resource it identifies.

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?

Opens with a specific verb+resource: 'Set hours-from-now expiry, or null for never.' This unambiguously states the operation, the resource, and the two allowed modes. No sibling handles expiry, so the tool is clearly differentiated from the site/client/share-link management tools around it.

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?

No sibling overlaps with expiry, so explicit exclusions are unnecessary. Instead the description gives scenario-based guidance: what to do when a number is clamped (response says so), what to do when null is refused (resend with accept_clamp: true or inform the user), and what value to quote. This is strong operational usage guidance, though it never states a generic 'when to use this tool' rule.

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

set_passwordAInspect

Set or clear (null) a passcode on a site. Works on every plan, free keys included. Clearing one always works.

ParametersJSON Schema
NameRequiredDescriptionDefault
passwordYes
id_or_slugYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It discloses plan compatibility and a guarantee about clearing, but it does not mention side effects, permission requirements, response behavior, or potential failure modes when setting a passcode.

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 sentences with no fluff. The main purpose is front-loaded and the important caveats are included efficiently.

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 two-parameter mutation tool with no output schema, the description covers the essential operation, parameter semantics, and a key condition (plan availability). It could be improved by noting return values or error behavior, but it is complete enough 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%, so the description must explain parameters beyond the schema. It clarifies that null clears the passcode and a string sets it, and id_or_slug implies the target site, though it does not explicitly define id_or_slug's format or constraints.

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 and resource: set or clear a passcode on a site. It also clarifies the null semantics, which directly distinguishes this tool from sibling tools like set_agentation or set_client.

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 provides clear context for when the tool is usable, noting it works on every plan and that clearing a passcode always works. It does not explicitly name alternatives, but no password-specific sibling exists, so the guidance is sufficient.

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

update_client_spaceAInspect

Rename a client space, archive or unarchive it, or set the viewer gate that covers every page in the space. Omit a field to leave it untouched. A rename changes the display name only — the slug is a permanent addressing contract and never moves. Archiving keeps everything serving (pages, portal, connected address) and frees the space’s plan slot; unarchiving takes a slot back and returns 402 when the plan is full. password and allowed_email_domain gate the whole space and are inherited by pages already filed under it as well as ones published later; pass null to remove either. Setting a gate is a paid feature: on a free key it returns 402 plan_password_not_available or plan_viewer_gate_not_available. Clearing a gate, or changing one the space already carries, always works. A 409 name_taken means another active space already answers to that name — report that rather than retrying with a variation, which would leave the user with two spaces for one client.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
archivedNo
passwordNo
id_or_slugYesSpace id or slug from list_client_spaces. Not the display name.
allowed_email_domainNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations present, the description carries the full burden of behavioral disclosure, and it delivers: slug permanence, archive side effects (keeps serving, frees plan slot), unarchive 402-on-full-plan, gate inheritance to existing and future pages, null-to-remove convention, paid-feature restrictions, and 409 name_taken semantics. No behavioral trait an agent needs is left to inference.

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 front-loads the three operations in sentence one, states patch semantics in sentence two, then systematically elaborates caveats per field. At roughly 140 words for a 5-parameter, three-operation tool with multiple error branches, every sentence earns its place.

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 no annotations, no output schema, and high operational complexity, the description covers all invocation-critical knowledge: error codes (402 plan_password_not_available, 402 plan_viewer_gate_not_available, 402 on full plan, 409 name_taken), side effects, paid-feature conditions, and required-parameter sourcing from list_client_spaces. The only omission — success-response shape — is minor for a mutation tool whose failure modes are fully enumerated.

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

Parameters5/5

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

Schema coverage is only 20% (id_or_slug alone), so the description must compensate for the other four parameters, and it does comprehensively: name (display-only, slug immutable), archived (serving/plan-slot semantics), password and allowed_email_domain (scope, inheritance, null removal, paywall). The description adds meaning far beyond the bare type declarations in the schema.

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 opening sentence names three concrete operations — rename, archive/unarchive, and viewer-gate setting — each bound to the client-space resource. This is specific enough to distinguish the tool from create_client_space, delete_client_space, and list_client_spaces without opening any schema.

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 for use: mutate an existing space's name, archive state, or access gates, with 'omit a field to leave it untouched' framing the patch-style semantics. It does not explicitly name sibling alternatives or state when not to use it, but the operation list makes the boundary obvious. The 409 directive ('report that rather than retrying with a variation') is actionable usage guidance.

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

update_siteAInspect

Replace the HTML of an existing site in place. The URL stays the same, so everyone you already sent it to sees the new version without being sent anything. Use this — not another publish_html — every time you revise a page you have already published: iterating with publish_html strands the link people are holding on the old version and burns a page slot. The PII pre-flight scan runs on the new content too (MCP default: block; pass pii_check: "warn" to override). A 409 managed_portal means this page is a generated client portal: it rebuilds itself from its space, so direct edits would be overwritten — the owner can "customize" it from the space settings in the dashboard, which stops regeneration for good. A 409 site_deleted means the page has stopped serving and is being kept for 30 days: call restore_site on the same id first, then update it. Do not publish it again, which mints a second page at a different URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesNew HTML content.
filenameNo
pii_checkNo
id_or_slugYesSite id, slug, or unlisted token.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly. It discloses in-place replacement, PII pre-flight scan behavior with a default and override, the two 409 error variants with distinct meanings, and that direct edits to a managed_portal would be overwritten. This goes beyond basic mutation expectations.

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 dense but every clause serves a purpose: core behavior, sibling distinction, PII behavior, and error recovery. The primary action is front-loaded, and the exception handling is organized clearly. No filler or tautology.

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 mutable update operation with no output schema and no annotations, this description covers the key decision points an agent needs: when to call it, which alternative to avoid, how parameter overrides work, and how to recover from both documented 409 states. Nothing crucial 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 50%, and the description significantly enriches the pii_check parameter by explaining its MCP default (block) and how to override with 'warn'. It also reinforces the content parameter's role. However, neither the schema nor description elaborates on filename, so compensation is good but not complete.

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 specific verb and resource: 'Replace the HTML of an existing site in place.' It clearly differentiates from the sibling publish_html by contrasting the URL behavior and slot consumption, so an agent can distinguish it without examining the 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?

It explicitly states when to use this tool over publish_html ('every time you revise a page you have already published') and why not to use the alternative. It also covers the restore_site prerequisite for the site_deleted 409 and warns against re-publishing, which would create a new URL.

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. 25 tool updatesv0.7.0
    • First observedclaim_site
    • First observedcreate_client_space
    • First observedcreate_share_link
    • First observeddelete_client_space
    • First observeddelete_site
    • First observedget_content
    • First observedget_design_guide
    • First observedget_me
    • First observedget_site
    • First observedlink_wallet
    • First observedlist_client_spaces
    • First observedlist_feedback
    • First observedlist_share_links
    • First observedlist_sites
    • First observedpublish_html
    • First observedresolve_feedback
    • First observedrestore_site
    • First observedrevoke_share_link
    • First observedset_agentation
    • First observedset_client
    • First observedset_email_gate
    • First observedset_expiry
    • First observedset_password
    • First observedupdate_client_space
    • First observedupdate_site

TDQS

A4.1/5.0

Scored across 25 tools

Disambiguation3/5

Most tools have clearly separated lifecycle roles, but get_site and get_content overlap almost exactly: both return the exact stored HTML of an owned page and both point to update_site. set_client and create_client_space also engage similar auto-create behavior, though their primary intents differ. The verbose descriptions rescue most boundaries, so this is partial overlap rather than chaos.

Naming Consistency5/5

Every tool follows a consistent lowercase snake_case verb_noun pattern: get_, list_, create_, update_, delete_, set_, publish_, restore_, revoke_, link_. The verbs are standard and the objects are predictable resources like site, client_space, share_link, feedback, password, and expiry. Minor semantic redundancy like get_site vs get_content does not break the naming convention.

Tool Count3/5

25 tools sits at the top of the heavy band, and the set includes a duplicate reader plus rarely-needed helpers like create_client_space that publish_html can auto-trigger. The broad platform scope justifies many of the tools, but the surface feels slightly over-provisioned for an agent to navigate. It is not egregious, but it is not a tight 3-15 tool set.

Completeness5/5

The page lifecycle is fully covered: publish, read, update, delete, restore, list, claim, expiry, access gates, and share links. Client spaces have create/list/update/delete plus assignment, and the feedback loop is complete with toggle, list, and resolve. Account/wallet and design-guidance tools round out the domain with no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • 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
    Not graded
    quality
    D
    maintenance
    Enables publishing and updating Claude artifacts or HTML to private, access-controlled links directly from Claude.
    1
    AGPL 3.0