# AttachPage

> Publish webpages and documents, send private review links, and collect comments and approvals.

- name: com.attachpage/attachpage
- version: 1.0.1
- connection class: unknown (unknown)
- trust: 57/100 flags: no-repository
- quality: 81/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.attachpage%2Fattachpage
- tools: https://api.protogrid.dev/v1/servers/com.attachpage%2Fattachpage/tools

**Not classified yet.** The remote endpoints have not been probed successfully, or the listing has nothing to connect to.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "attachpage": {
      "type": "http",
      "url": "https://attachpage.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 15
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website -unreachable(2 failures) +updated-7d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 81/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 11 of 11 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_page (idempotentHint); publish_document (idempotentHint); publish_anonymous_page (idempotentHint); …
- pass `tools.token_cost`: about 2,120 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 6 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 11, about 2,120 tokens to load them all
- tool set hash: ac533145d4368545517067c11bd64134
- tools last changed: 2026-10-14T16:40:13.435Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.attachpage/attachpage.svg)](https://protogrid.dev/servers/com.attachpage/attachpage)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-14 `notify_recipients` changed (inputSchema, outputSchema)
- 2026-10-14 `resolve_feedback` changed (inputSchema, outputSchema)
- 2026-10-14 `get_feedback` changed (inputSchema, outputSchema)
- 2026-10-14 `update_page` changed (inputSchema, outputSchema)
- 2026-10-14 `get_page` changed (inputSchema, outputSchema)
- 2026-10-14 `list_pages` changed (outputSchema)
- 2026-10-14 `send_page` changed (inputSchema, outputSchema)
- 2026-10-14 `publish_page` changed (inputSchema, outputSchema)
- 2026-10-14 `publish_anonymous_page` changed (inputSchema, outputSchema)
- 2026-10-14 `publish_document` changed (inputSchema, outputSchema)

Full history: https://api.protogrid.dev/v1/servers/com.attachpage%2Fattachpage/changes

## Remotes

- https://attachpage.com/mcp (streamable-http, auth none, reachable false, uptime30d 0.88)

## Packages

_none_

## Tools (11)

- `get_feedback`: 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.
- `get_page`: 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.
- `get_profile`: Identify the AttachPage account connected to this agent.
- `list_pages`: List the user's pages with recipient and open counts.
- `notify_recipients`: 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.
- `publish_anonymous_page`: 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.
- `publish_document`: 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.
- `publish_page`: 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.
- `resolve_feedback`: Mark recipient feedback as resolved, or reopen it with resolved: false. The recipient sees the updated resolution status.
- `send_page`: 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.
- `update_page`: Rename a page, change its address label (slug), or switch private/public.
