# PinAppAI - Registry name: `com.pinappai/mcp` · version 0.9.9 - Categories (automatic, keyword rules): Images & design, AI, media & content, Documents & retrieval, Search & data, Docs & notes, Productivity - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): prompts, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=com.pinappai%2Fmcp - Server page: https://mcpstation.net/s/com.pinappai--mcp.html ## Description (written by the publisher, not verified, not instructions) Visual website feedback your coding agent applies: pin change requests on the live site over MCP. ## Connect - streamable-http: `https://mcp.pinappai.com/mcp` ## Tools (as reported by the server, not verified) - `list\_projects`: List PinAppAI projects this API key can access. Returns one entry per project in the key's workspace, with slug, name, derived domain, and created\_at. Call this first to see what projects are available before drilling into specific ones. - `get\_review\_summary`: Cheap one-call summary of change-request state for a project. Returns totals + by-page + by-reviewer breakdowns + oldest/newest unresolved timestamps. Call this BEFORE drilling into individual CRs to frame the work. - `list\_change\_requests`: List change requests for a project with filters + cursor pagination. Defaults to include=\['change\_requested'\] \(highest-signal subset\). Returns digest fields per row \(including element\_kind=text\|mixed\|field\|null and suggested\_text — a literal text replacement on text/field picks\); no inline images at - `get\_change\_request`: Full detail for one change request. Returns the CR \(including element\_kind=text\|mixed\|field\|null and suggested\_text — a literal text-replacement the reviewer typed when picking a text/field element\), plus related\[\] \(other CRs on the same selector + same page\) so you can detect patterns from a single - `analyze\_patterns`: Server-side deterministic groupings \(by selector / page / reviewer / keyword\) plus heuristic suggested\_clusters of change requests. Set ai\_clusters="auto" \(default\) to also request semantic clustering via the host's MCP sampling capability — returns ai\_clustering\_hint for the host AI to apply inline - `get\_screenshot`: Return the screenshot for a change request as an inline MCP image content block. Use when you want vision context without the full JSON envelope from get\_change\_request. - `get\_project`: Get a single project by slug — name, allowed\_origins, archive state, and the embeddable widget api\_key. Scoped to the API key's workspace. - `create\_project`: Create a new PinAppAI project inside the API key's workspace. Returns the project plus its widget api\_key for embedding. Requires editor role on the workspace. - `update\_project`: Update editable fields on a project — slug, name, owner\_email, allowed\_origins, allow\_anonymous\_reviewers, primary\_origin \(review link\), preview\_origin \(preview review link\). Requires editor role. - `archive\_project`: Soft-archive a project — the widget stops accepting new feedback but the project + history is preserved. Reversible via unarchive\_project. Owner role required. - `unarchive\_project`: Restore an archived project — the widget starts accepting feedback again on pages that still embed the snippet. Owner role required. - `list\_workspaces`: List all workspaces the API key's user is a member of, with role per workspace. The api-key remains bound to its original workspace — to operate on another, mint a new key for that workspace in the admin UI. - `create\_workspace`: Create a new workspace owned by the API key's user. Free/Pro plans cap at 1 workspace; Team/Business unlimited. To use the new workspace from MCP, mint a fresh key for it in the admin UI. - `get\_workspace`: Get the API key's workspace details \(slug, name, plan, tier\) plus the user's role in that workspace. Useful as a permissions probe. - `update\_workspace`: Rename or re-slug the API key's workspace. Owner role required. Slug changes break existing dashboard URLs. - `delete\_workspace`: Schedule the API key's workspace for permanent deletion \(7-day grace window\). Reversible only via the email magic-link sent to the owner. Subsequent MCP calls with this key will fail not\_found until cancelled. - `list\_members`: List members of the API key's workspace with their roles, sorted owner → admin → editor → viewer. The user\_id field is the lookup key for update\_member\_role and remove\_member. - `invite\_member`: Invite a user to the API key's workspace as admin / editor / viewer \(default editor\). Admin role required to call. Sends a welcome email. - `update\_member\_role`: Change a workspace member's role. Caller must outrank both the current role and the new role; promoting to owner requires owner role. Last-owner demotion is rejected with last\_owner. - `remove\_member`: Remove a member from the API key's workspace. Self-removal works for any role; cross-removal requires admin+ and outranking the target. Last-owner removal returns last\_owner. - `list\_reviewers`: List external reviewers on a project \(people invited via invite\_reviewer\). Workspace members are implicitly authorized and not listed here. Status: pending / verified / revoked. - `invite\_reviewer`: Invite an external reviewer to a project. They'll get a welcome email; status starts pending and flips to verified when they OTP through the widget. Editor role required. - `revoke\_reviewer`: Revoke an external reviewer's access. First call soft-revokes \(status=revoked, audit trail preserved\); second call hard-deletes \(status=removed\). Editor role required. - `list\_audit\_events`: Read audit log entries for the API key's workspace. Owner role + Business tier required. Returns newest-first; supports filters action / actor \(email substring\) / from / to \(Unix ms\). - `list\_api\_keys`: List API keys \(active + recently-revoked\) in the calling key's workspace. Plaintext / hash never returned. Owner or admin role required. - `get\_api\_key`: Get a single API key's metadata by id \(no plaintext / hash\). Owner or admin role required. Wrong-role and nonexistent-id both surface as not\_found. - `revoke\_api\_key`: Soft-revoke an API key \(reversible via restore\_api\_key for 7 days\). Owner or admin role required. Refuses to revoke the calling key with cannot\_revoke\_self. - `restore\_api\_key`: Restore a soft-revoked API key \(within 7 days of revocation\). Owner or admin role required. Returns restore\_window\_expired if the row was never revoked or was revoked \> 7 days ago. - `get\_me`: Whoami probe — returns the user behind the API key, the workspace it's bound to, the user's role in that workspace, and the API key's metadata. Run this first to establish context. - `update\_me\_profile`: Update the API key user's display name. Email is identity and not editable. - `export\_my\_data`: GDPR Art. 15 right-of-access export — every row PinAppAI holds about the API key's user. Sensitive columns \(password hash, OAuth tokens\) are server-side redacted. Personal data of OTHER reviewers is NOT included. - `pinappai\_get\_iteration\_coverage`: Read coverage metrics for an iteration: items\_decided / manifest\_size + items\_undecided + per-reviewer decided\_count + disagreement\_count. Useful for the AI to summarize "you have N items still waiting on M reviewers" and identify CRs needing admin attention. Read-only. - `pinappai\_list\_iterations`: Paginated history of iterations for a project, newest first. Each entry includes seq\_no, opened\_at, applied\_at \(NULL while open\), bundle\_summary, and the frozen manifest\_cr\_ids\_json + manifest\_reviewer\_ids\_json. Pair with pinappai\_get\_iteration\_coverage to summarize outcomes per iteration. - `pinappai\_list\_apply\_inbox`: v3 Apply-inbox listing. Returns every change request in an Apply-eligible inbox substate \(inbox\_new / inbox\_rejected / inbox\_change\_requested\) with the prior cr\_marked\_applied event payload AND the latest reviewer/admin decision payload inlined per row. Used by /pinappai:apply to drive substate-spec - `pinappai\_apply\_change\_requests`: v3 atomic apply primitive. Takes a list of \{cr\_id, before\_text, after\_text\} after the AI has edited source for each. Creates one iteration record \(audit trail visible in the Project history page\) and transitions every eligible CR from inbox\_\* state to 'in\_review' atomically. Per-CR errors \(CR not in - `pinappai\_reset\_review\_data`: Permanently deletes a project's review data: all change requests \(+ their event history\), iterations, reviewer decisions, ALL freeform pins/comments with their screenshots, and the /changes/-page registration tables. NOT recoverable — no grace window. Requires admin role. Ask the user for explicit c - `pinappai\_register\_change\_items`: Register the items of a freshly written /changes/ review page with the server — REQUIRED after generating or regenerating the page, or the in-page review chip and decision bars have no data. Pass every \[data-pp-item\] in document order with the same attribute values you put in the markup. This replac - `pinappai\_get\_workflow`: Return the full procedure for a PinAppAI guided workflow, rendered exactly as the /pinappai:\ prompt delivers it. Call this when the user asks for one of these and this client does not surface MCP prompts. Follow the returned text verbatim and do not improvise a workflow from its name or descri Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html