Porou · API, CLI and MCP
Everything you can do in the browser you can do from a terminal or from your own AI assistant. Screenshots become artboards, findings become pinned threads, and you get a share link back.
1. In the browser
Open a board, upload a screenshot with the image button, click anywhere on it to drop a pin and write a thread (type, optional Nielsen heuristic, text). Present in the top bar steps through every finding; add ?present=1 to a board link to open the presentation directly.
2. REST API
Plain JSON with a session cookie. Log in once, then call the routes below with the cookie.
POST /api/auth/login {email, password} → session cookie
GET /api/clients → clients with projects
POST /api/clients {name}
POST /api/projects {client_id, name}
POST /api/boards {project_id, name}
GET /api/boards/:id → board, nodes, threads, comments, assets
POST /api/assets multipart field "file" (PNG) → {assets:[{id}]}
POST /api/boards/:id/nodes {kind:"image", title, asset_id, x, y, w, h}
POST /api/boards/:id/threads {node_id, x, y, type, title, heuristic, body}
POST /api/threads/:id/comments {body}
POST /api/boards/:id/links {role:"viewer|commenter|editor", label} → share URL
type is issue | opportunity | question | heuristic. x/y are percent of the artboard. heuristic is one of the ten Nielsen labels exactly as the UI shows them in Swedish, e.g. 8. Estetisk och minimalistisk design.
3. CLI
A small Node script in the Porou repo wraps the API (scripts/porou.mjs):
POROU_EMAIL=you@example.com POROU_PASSWORD=… node scripts/porou.mjs board "Asteria" "Overview 2026" "Iteration 2" node scripts/porou.mjs image <board-id> screenshot.png "Overview v2" node scripts/porou.mjs import <board-id> <node-id> findings.json node scripts/porou.mjs share <board-id> "Sixten" commenter
findings.json is a list of {x, y, type, title, heuristic, body}.
4. MCP for Claude Code and other assistants
The MCP server in integrations/porou-mcp gives your assistant the same tools, plus the review guidance Porou itself uses (Nielsen heuristics, Laws of UX, accessibility, and the Observation / Hypothesis / Recommendation format).
| Tool | Does |
|---|---|
porou_review_guidance | the review profile and the thread contract, sv or en |
porou_ensure_board | client → project → board, reused by name |
porou_add_artboard | PNG as artboard at natural size |
porou_add_threads | findings as pins, validated, duplicates skipped |
porou_add_note | a text note on the canvas, e.g. "read me first" |
porou_share_link | share link per role and label |
porou_list_boards, porou_list_threads, porou_me | read-only helpers |
cd integrations/porou-mcp && npm ci claude mcp add porou -s user -e POROU_EMAIL=you@example.com -- node "$PWD/src/mcp.mjs" # password: macOS Keychain → security add-generic-password -s porou.io -a you@example.com -w # or POROU_PASSWORD in the environment
Then paste a screenshot into Claude Code and say "review this against the Asteria board". The skill porou-review (in the same folder) gives the assistant the whole workflow.
Accounts
Create an account at porou.io or ask the board owner for an invitation or a test login. Access is per client, project or board. Nothing in the API or MCP deletes; writes are idempotent on title.