Publish webpages and documents, send private review links, and collect comments and approvals.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Read recipient comments, page paths, pointed-at elements (selector and visible text), and approval or change-request decisions. The status filter selects open, resolved, or all feedback.
Page id (siteId) returned by a publish tool or list_pages.
Which feedback to return (default all).
Read recipient comments, page paths, pointed-at elements (selector and visible text), and approval or change-request decisions. The status filter selects open, resolved, or all feedback.
| Argument | Type | Description |
|---|---|---|
| siteId* | string | Page id (siteId) returned by a publish tool or list_pages. |
| status | string | Which feedback to return (default all). |
{
"type": "object",
"required": [
"siteId"
],
"properties": {
"siteId": {
"type": "string",
"description": "Page id (siteId) returned by a publish tool or list_pages."
},
"status": {
"enum": [
"open",
"resolved",
"all"
],
"type": "string",
"description": "Which feedback to return (default all)."
}
}
}Details for one page: address, visibility, recipients and who opened it. Optional filePaths reads exact uploaded source files from that version, up to 20 files and 256 KB total, with text or base64 encoding. An empty filePaths array returns a bounded manifest without file contents.
| Argument | Type | Description |
|---|---|---|
| siteId* | string | Page id (siteId) returned by a publish tool or list_pages. |
| filePaths | array | Source files to read from the current version; [] returns only the file list. |
{
"type": "object",
"required": [
"siteId"
],
"properties": {
"siteId": {
"type": "string",
"description": "Page id (siteId) returned by a publish tool or list_pages."
},
"filePaths": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "Source files to read from the current version; [] returns only the file list."
}
}
}Identify the AttachPage account connected to this agent.
No arguments.
{
"type": "object",
"properties": {}
}List the user's pages with recipient and open counts.
No arguments.
{
"type": "object",
"properties": {}
}Email existing active recipients that a page has been updated, with an optional note. Each recipient receives a fresh personal link. Sends email immediately; sent email cannot be recalled.
| Argument | Type | Description |
|---|---|---|
| note | string | Optional note about what changed, up to 1,000 characters. |
| siteId* | string | Page id (siteId) returned by a publish tool or list_pages. |
{
"type": "object",
"required": [
"siteId"
],
"properties": {
"note": {
"type": "string",
"description": "Optional note about what changed, up to 1,000 characters."
},
"siteId": {
"type": "string",
"description": "Page id (siteId) returned by a publish tool or list_pages."
}
}
}Publish a public web page without an account or API key. It expires in 48 hours. Returns the page URL and a personal claimUrl; opening that link while signed in makes the page permanent.
| Argument | Type | Description |
|---|---|---|
| slug | string | Optional address label, 3-40 lowercase letters, digits or hyphens. Random when omitted. |
| files* | array | Files of the page. The complete resulting page includes index.html at the top level. |
| siteName | string | Name shown to the user and recipients, e.g. "Q3 report". |
{
"type": "object",
"required": [
"files"
],
"properties": {
"slug": {
"type": "string",
"description": "Optional address label, 3-40 lowercase letters, digits or hyphens. Random when omitted."
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"content"
],
"properties": {
"path": {
"type": "string",
"description": "Path inside the page, e.g. index.html or assets/logo.png."
},
"content": {
"type": "string",
"description": "File contents: text, or base64 when encoding is base64."
},
"encoding": {
"enum": [
"utf8",
"base64"
],
"type": "string",
"description": "utf8 (default) for text files, base64 for images and other binary files."
}
}
},
"description": "Files of the page. The complete resulting page includes index.html at the top level."
},
"siteName": {
"type": "string",
"description": "Name shown to the user and recipients, e.g. \"Q3 report\"."
}
}
}Publish a PDF, Word (.docx), PowerPoint (.pptx), Excel (.xlsx/.xls), or CSV file as a browser-viewable page, private by default. Accepts filename and base64 content, up to 4 MB decoded. Documents become readable PDFs, slides have presentation controls, and spreadsheets have searchable sheet tabs. Preserves the original for download. A siteId replaces the page at the same address. Does not send invitations.
| Argument | Type | Description |
|---|---|---|
| slug | string | Optional address label, 3-40 lowercase letters, digits or hyphens. Random when omitted. |
| siteId | string | Replace this existing page at the same address. |
| content* | string | Base64 file bytes, not a local path or URL. |
| filename* | string | Original file name with extension, e.g. proposal.docx. |
| siteName | string | Name shown to the user and recipients, e.g. "Q3 report". |
| visibility | string | private (invitation-only, default) or public (anyone with the link). |
{
"type": "object",
"required": [
"filename",
"content"
],
"properties": {
"slug": {
"type": "string",
"description": "Optional address label, 3-40 lowercase letters, digits or hyphens. Random when omitted."
},
"siteId": {
"type": "string",
"description": "Replace this existing page at the same address."
},
"content": {
"type": "string",
"description": "Base64 file bytes, not a local path or URL."
},
"filename": {
"type": "string",
"description": "Original file name with extension, e.g. proposal.docx."
},
"siteName": {
"type": "string",
"description": "Name shown to the user and recipients, e.g. \"Q3 report\"."
},
"visibility": {
"enum": [
"private",
"public"
],
"type": "string",
"description": "private (invitation-only, default) or public (anyone with the link)."
}
}
}Publish a web page as the connected user. A siteId replaces an existing page at the same address. preserveFiles retains omitted assets and requires the baseDeploymentId of that version; stale edits are refused. Visibility is private (invitation-only, default) or public. Requires an authenticated AttachPage connection.
| Argument | Type | Description |
|---|---|---|
| slug | string | Optional address label, 3-40 lowercase letters, digits or hyphens. Random when omitted. |
| files* | array | Files of the page. The complete resulting page includes index.html at the top level. |
| siteId | string | Replace this existing page at the same address. |
| siteName | string | Name shown to the user and recipients, e.g. "Q3 report". |
| visibility | string | private (invitation-only, default) or public (anyone with the link). |
| preserveFiles | boolean | Retain files not included in this edit. Requires siteId and baseDeploymentId. |
| baseDeploymentId | string | Expected current version. A changed page is refused rather than overwritten. |
Mark recipient feedback as resolved, or reopen it with resolved: false. The recipient sees the updated resolution status.
| Argument | Type | Description |
|---|---|---|
| resolved | boolean | true (default) marks it resolved; false reopens it. |
| feedbackId* | string | Feedback id from get_feedback. |
{
"type": "object",
"required": [
"feedbackId"
],
"properties": {
"resolved": {
"type": "boolean",
"description": "true (default) marks it resolved; false reopens it."
},
"feedbackId": {
"type": "string",
"description": "Feedback id from get_feedback."
}
}
}Email personal invitations for a page to the specified recipient addresses, with an optional message and access expiry. Sends email immediately; sent email cannot be recalled.
| Argument | Type | Description |
|---|---|---|
| siteId* | string | Page id (siteId) returned by a publish tool or list_pages. |
| message | string | Optional note included in the invitation email. |
| recipients* | array | Email addresses; each person gets their own personal link. |
| expiresInDays | integer | Days the links work (default 7). 0 means they never expire. |
{
"type": "object",
"required": [
"siteId",
"recipients"
],
"properties": {
"siteId": {
"type": "string",
"description": "Page id (siteId) returned by a publish tool or list_pages."
},
"message": {
"type": "string",
"description": "Optional note included in the invitation email."
},
"recipients": {
"type": "array",
"items": {
"type": "string"
},
"description": "Email addresses; each person gets their own personal link."
},
"expiresInDays": {
"type": "integer",
"description": "Days the links work (default 7). 0 means they never expire."
}
}
}Rename a page, change its address label (slug), or switch private/public.
| Argument | Type | Description |
|---|---|---|
| name | string | New page name. |
| slug | string | New address label, 3-40 lowercase letters, digits or hyphens. |
| siteId* | string | Page id (siteId) returned by a publish tool or list_pages. |
| visibility | string | private (invitation-only, default) or public (anyone with the link). |
{
"type": "object",
"required": [
"siteId"
],
"properties": {
"name": {
"type": "string",
"description": "New page name."
},
"slug": {
"type": "string",
"description": "New address label, 3-40 lowercase letters, digits or hyphens."
},
"siteId": {
"type": "string",
"description": "Page id (siteId) returned by a publish tool or list_pages."
},
"visibility": {
"enum": [
"private",
"public"
],
"type": "string",
"description": "private (invitation-only, default) or public (anyone with the link)."
}
}
}{
"type": "object",
"required": [
"files"
],
"properties": {
"slug": {
"type": "string",
"description": "Optional address label, 3-40 lowercase letters, digits or hyphens. Random when omitted."
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"content"
],
"properties": {
"path": {
"type": "string",
"description": "Path inside the page, e.g. index.html or assets/logo.png."
},
"content": {
"type": "string",
"description": "File contents: text, or base64 when encoding is base64."
},
"encoding": {
"enum": [
"utf8",
"base64"
],
"type": "string",
"description": "utf8 (default) for text files, base64 for images and other binary files."
}
}
},
"description": "Files of the page. The complete resulting page includes index.html at the top level."
},
"siteId": {
"type": "string",
"description": "Replace this existing page at the same address."
},
"siteName": {
"type": "string",
"description": "Name shown to the user and recipients, e.g. \"Q3 report\"."
},
"visibility": {
"enum": [
"private",
"public"
],
"type": "string",
"description": "private (invitation-only, default) or public (anyone with the link)."
},
"preserveFiles": {
"type": "boolean",
"description": "Retain files not included in this edit. Requires siteId and baseDeploymentId."
},
"baseDeploymentId": {
"type": "string",
"description": "Expected current version. A changed page is refused rather than overwritten."
}
}
}