{"server":{"name":"com.attachpage/attachpage","icons":[{"src":"https://attachpage.com/favicon.svg","sizes":["any"],"mimeType":"image/svg+xml"},{"src":"https://attachpage.com/apple-touch-icon.png","sizes":["180x180"],"mimeType":"image/png"}],"title":"AttachPage","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://attachpage.com/mcp","type":"streamable-http"}],"version":"1.0.1","websiteUrl":"https://attachpage.com/agents","description":"Publish webpages and documents, send private review links, and collect comments and approvals."},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-10-12T21:36:47.511493Z","publishedAt":"2026-10-12T21:36:47.511493Z","statusChangedAt":"2026-10-12T21:36:47.511493Z"},"dev.protogrid/connectability":{"class":"unknown","autonomous":false,"human_steps":["unknown"],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://attachpage.com/mcp","transport":"streamable-http","templated":false,"headers":[],"auth":{"type":"none","location":null,"secret_name":null,"oauth":null},"protocol":{"supported_versions":["2025-06-18"],"stateless":true},"health":{"reachable":false,"uptime_30d":0.88,"latency_ms_p50":416,"consecutive_failures":2,"last_probe_at":"2026-10-19T09:05:10.318Z","last_ok_at":"2026-10-18T16:42:36.958Z"}}],"packages":[]},"dev.protogrid/tools":[{"name":"get_feedback","title":"Get feedback","description":"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.","annotations":{"title":"Get feedback","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false,"untrustedContentHint":true},"source":"probe","observed_at":"2026-10-18T16:42:36.958Z"},{"name":"get_page","title":"Get page","description":"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.","annotations":{"title":"Get page","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false,"untrustedContentHint":true},"source":"probe","observed_at":"2026-10-18T16:42:36.958Z"},{"name":"get_profile","title":"Get profile","description":"Identify the AttachPage account connected to this agent.","annotations":{"title":"Get profile","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false,"untrustedContentHint":false},"source":"probe","observed_at":"2026-10-18T16:42:36.958Z"},{"name":"list_pages","title":"List pages","description":"List the user's pages with recipient and open counts.","annotations":{"title":"List pages","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false,"untrustedContentHint":true},"source":"probe","observed_at":"2026-10-18T16:42:36.958Z"},{"name":"notify_recipients","title":"Notify recipients","description":"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.","annotations":{"title":"Notify recipients","readOnlyHint":false,"openWorldHint":true,"destructiveHint":true,"untrustedContentHint":false},"source":"probe","observed_at":"2026-10-18T16:42:36.958Z"},{"name":"publish_anonymous_page","title":"Publish anonymous page","description":"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.","annotations":{"title":"Publish anonymous page","readOnlyHint":false,"openWorldHint":true,"destructiveHint":false,"untrustedContentHint":false},"source":"probe","observed_at":"2026-10-18T16:42:36.958Z"},{"name":"publish_document","title":"Publish document","description":"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.","annotations":{"title":"Publish document","readOnlyHint":false,"openWorldHint":true,"destructiveHint":true,"untrustedContentHint":false},"source":"probe","observed_at":"2026-10-18T16:42:36.958Z"},{"name":"publish_page","title":"Publish page","description":"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.","annotations":{"title":"Publish page","readOnlyHint":false,"openWorldHint":true,"destructiveHint":true,"untrustedContentHint":false},"source":"probe","observed_at":"2026-10-18T16:42:36.958Z"},{"name":"resolve_feedback","title":"Resolve feedback","description":"Mark recipient feedback as resolved, or reopen it with resolved: false. The recipient sees the updated resolution status.","annotations":{"title":"Resolve feedback","readOnlyHint":false,"openWorldHint":true,"destructiveHint":true,"untrustedContentHint":false},"source":"probe","observed_at":"2026-10-18T16:42:36.958Z"},{"name":"send_page","title":"Send page","description":"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.","annotations":{"title":"Send page","readOnlyHint":false,"openWorldHint":true,"destructiveHint":true,"untrustedContentHint":false},"source":"probe","observed_at":"2026-10-18T16:42:36.958Z"},{"name":"update_page","title":"Update page","description":"Rename a page, change its address label (slug), or switch private/public.","annotations":{"title":"Update page","readOnlyHint":false,"openWorldHint":true,"destructiveHint":true,"untrustedContentHint":false},"source":"probe","observed_at":"2026-10-18T16:42:36.958Z"}],"dev.protogrid/trust":{"score":57,"components":{"hygiene":80,"liveness":15,"freshness":100,"provenance":55},"drivers":["+dns-namespace","+website","-unreachable(2 failures)","+updated-7d-ago","-no-repository"],"flags":["no-repository"],"blocked":false,"computed_at":"2026-10-19T21:35:43.161Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":81,"label":"good","components":{"auth":null,"hygiene":86,"protocol":75,"stability":null,"dependencies":null},"checks":[{"id":"protocol.modern","detail":"newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28","status":"warn","category":"protocol"},{"id":"protocol.stateless","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"protocol.transport","detail":"streamable HTTP","status":"pass","category":"protocol"},{"id":"protocol.list_ttl","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"auth.prm","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.as_metadata","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.cimd","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"descriptions are concise","status":"pass","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"11 of 11 tools declare readOnlyHint or destructiveHint","status":"pass","category":"hygiene"},{"id":"tools.directory_hints","detail":"no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_page (idempotentHint); publish_document (idempotentHint); publish_anonymous_page (idempotentHint); …","status":"fail","category":"hygiene"},{"id":"tools.token_cost","detail":"about 2,120 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"tool history recorded for 6 of the 7 days needed","status":"na","category":"stability"},{"id":"stability.rug_pull","detail":"tool history recorded for 6 of the 7 days needed","status":"na","category":"stability"},{"id":"deps.known_vulns","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.resolvable","detail":"no npm or PyPI package","status":"na","category":"dependencies"}],"drivers":["-tools.directory_hints","~protocol.modern"],"flags":[],"tool_count":11,"token_estimate":2120,"tools_hash":"ac533145d4368545517067c11bd64134","tools_changed_at":"2026-10-14T16:40:13.435Z","computed_at":"2026-10-19T21:42:09.986Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"com.attachpage/attachpage","aliases":[],"alias_count":0,"repository_key":null,"owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/com.attachpage%2Fattachpage/tools","arguments":{"name":"com.attachpage/attachpage"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/com.attachpage%2Fattachpage/connection?target=mcpServers","arguments":{"name":"com.attachpage/attachpage","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}