MarkLayer

Product

MarkLayer featuresConnect MarkLayer to your coding agentWhat's new in MarkLayerPricingSupport the projectAbout MarkLayerPrivacy

Guides

All guidesHow MarkLayer works, in plain EnglishWebsite feedback tools in 2026, twenty-one comparedHow to annotate a website, four waysHow to annotate a PDF for freeHow to annotate an image or screenshotThe best free website annotation tools in 2026, auditedCollecting website feedback without making anyone log inThe Markup.io price hike: what changed and what it costs nowMCP servers for bug reports and visual feedback, comparedGive your AI coding agent visual feedback from a live webpageSending MarkLayer annotations to Jira, Linear, Slack and moreOpen-source website annotation tools in 2026

Use cases

All use casesHow to get client feedback on a staging site without asking them to install anythingPoint an AI coding agent at a UI element on your local dev serverMarkLayer for Design ReviewMarkLayer for QA Bug ReportingMarkLayer for Client FeedbackMarkLayer for Remote TeamsMarkLayer for StudentsMarkLayer for EducatorsMarkLayer for ResearchersMarkLayer for Content CreatorsMarkLayer for MarketersMarkLayer for AgenciesMarkLayer for Freelance Web DesignersMarkLayer for Product Teams

Compare

All comparisonsMarkup.io review: MarkLayer is a free Markup.io alternativePastel vs MarkLayer: a free Pastel alternativeBugHerd vs MarkLayer: a free BugHerd alternativeAnnotateWeb vs MarkLayer: a free AnnotateWeb alternativeJam.dev vs MarkLayer: a free Jam.dev alternativeMarker.io vs MarkLayer: a free Marker.io alternativeUserback vs MarkLayer: a free Userback alternativeRuttl vs MarkLayer: a free Ruttl alternativeLoom vs MarkLayer: a free Loom alternativeHypothesis vs MarkLayer: a free Hypothesis alternativeUsersnap vs MarkLayer: a free Usersnap alternativestagewise vs MarkLayer: a free stagewise alternativeVolley vs MarkLayer: a free Volley alternativeSuperflow vs MarkLayer: a free Superflow alternativeFeedbucket vs MarkLayer: a free Feedbucket alternativeFigma vs MarkLayerHuddlekit vs MarkLayer: a free Huddlekit alternativeAtarim vs MarkLayer: a free Atarim alternativezipBoard vs MarkLayer: a free zipBoard alternativeWebvizio vs MarkLayer: a free Webvizio alternativeBugSmash vs MarkLayer: a free BugSmash alternativeYbug vs MarkLayer: a free Ybug alternativeSureFeedback vs MarkLayer: a free SureFeedback alternativeSimpleCommenter vs MarkLayer: a free SimpleCommenter alternativePageProofer vs MarkLayer: a free PageProofer alternativeInflight vs MarkLayer: a free Inflight alternative

Alternatives

All alternativesFree Markup.io alternative: 5 tools comparedFree Pastel alternativesFree AnnotateWeb alternativesFree Jam.dev alternativesThe best free Marker.io alternative, plus 3 more picksFree Userback alternativesFree Hypothesis alternativesBugHerd free alternative: 4 picks, 3 that cost nothingFree Ruttl alternativesFree Usersnap alternativesFree stagewise alternativesFree Loom alternativesThe closest free Huddlekit alternative, plus 3 more picksThe closest free SureFeedback alternative, plus 3 more picksThe closest free Atarim alternative, plus 3 more picksThe closest free Feedbucket alternative, plus 3 more picksThe closest free PageProofer alternative, plus 3 more picksThe closest free Superflow alternative, plus 3 more picksThe closest free Ybug alternative, plus 3 more picksThe closest free SimpleCommenter alternative, plus 3 more picks

Give the review to your agent.

Every MarkLayer link is an MCP server. Your coding agent reads what reviewers marked on the page, fixes it, and ticks each comment off while they watch.

Terminal
claude mcp add --transport http \
  marklayer https://marklayer.app/s/<id>/mcp

Run /mcp and check marklayer is listed. A session opened before this will not see the tools; start a new one.

The address is any share link plus /mcp; the Details panel on the link shows it filled in. Add?agent=cursor, or any name, so reviewers see who picked their comment up.

One comment, start to finish. The reviewer never leaves the page. The agent never asks what was clicked.

Priya · hero button

This still says “Submit”. It should say “Start trial” like the pricing page.

buttonmain > section.hero button.cta
  1. Open
  2. In progress · claude
  3. Resolved

claude · reply

Renamed the CTA in Hero.tsx:42 and the matching test. Deployed to the preview.

  1. watch_annotationsnew comment 3, with target selector and markup
  2. acknowledgepin flips to in progress on Priya’s screen
  3. edits src/Hero.tsx, runs the tests
  4. resolvesummary posted as the reply above
  5. watch_annotationswaiting for the next one

A worked example. The reviewer, the page and the file are made up; the calls are the real ones.

Any MCP client.

17 tools. Everything the room can tell an agent, and everything an agent can do back.

Read

marklayer_read_page
The page's headings, text, links and controls, each with the selector that finds it.
marklayer_room_info
The URL under review, the viewport it was annotated at, and timestamps.
marklayer_list_annotations
Everything left on the page, filtered by status.
marklayer_get_annotation
One annotation in full, with its reply thread and any attached images.
marklayer_get_feedback
One read of the room: counts by status, open items, checklist progress, poll tallies.

Work

marklayer_watch_annotations
Wait for new comments, and for anything assigned to the agent by name.
marklayer_acknowledge
Flip a comment to in progress so the reviewer sees it was picked up.
marklayer_resolve
Close a comment and post what changed as a reply.
marklayer_dismiss
Decline a comment. The reason is required, and the reviewer reads it.
marklayer_reply
Ask a question on the thread without moving its status.

Review

marklayer_create_annotation
Leave its own comment, pinned to an element, one per finding.
marklayer_suggest_edit
Propose exact replacement text, shown to the reviewer as a diff to accept.

Hand off

marklayer_share_preview
Open a review room on a preview URL and return the link to send a human.
marklayer_set_next_steps
Publish a checklist of planned changes, each tied to the comments it answers.
marklayer_complete_next_step
Tick a step off while the reviewers watch.
marklayer_ask
Put a multiple-choice question to the room and read the votes back.

npm only

marklayer_connect_room
Switch to another share link by URL or id.

It works the other way too. When the agent has built something, it hands you a room instead of a paragraph.

share_preview opens a review room on the preview URL and returns the link. A later preview of the same repository and branch becomes the next version of that room, so reviewers step between them. The agent posts its plan as a checklist that ticks off as the work lands, and when it needs a decision rather than an opinion, it asks the room to vote.

Agents forget a tool exists unless something reminds them. Paste this into CLAUDE.md orAGENTS.md and yours will reach for MarkLayer on its own:

CLAUDE.md / AGENTS.md
## Visual review

When I share a marklayer.app/s/... link, connect to it over MCP and work the
annotations: acknowledge each one before you start, resolve it with a one-line
summary of what changed, and dismiss it with a reason if you cannot act on it.

When you have built something for me to look at, open a review room on the
preview URL with marklayer_share_preview and send me that link instead of
describing the change.

Or just say it:

Watch my MarkLayer annotations. For each one, acknowledge it, make the fix, then resolve it with a one-line summary of what changed.
Read the page in my MarkLayer room and review it for broken copy, accessibility gaps and layout bugs. Leave one comment per finding, and use a suggested edit for any exact text fix.

Pointing an agent at the setup itself? Plain-text instructions for agents.

Frequently asked questions

Does MarkLayer have an MCP server?
Yes, two ways in to the same 17 tools. Every share link answers MCP over Streamable HTTP at its own address plus /mcp, so a client that supports remote servers connects with one command and nothing installed. For clients that only run local servers, the same tools ship on npm as marklayer-mcp.
Do I need an API key or an account to connect an agent?
No. A MarkLayer share link is its own access token: whoever holds the link can open it, and the MCP endpoint follows the same rule. There is no OAuth step and no key to paste. If the owner has locked the link with a password, send it as a header (Authorization: Bearer <password>; in Claude Code, --header) or use the npm package with MARKLAYER_PASSWORD.
Which coding agents work with MarkLayer?
Any MCP client. This page has setup for Claude Code, Claude, Codex, Cursor and VS Code. Windsurf, Zed, Cline, Gemini CLI and anything else that reads an mcpServers config work through either the remote URL or the npm package.
Can the agent change the website I annotated?
Not through MarkLayer. MarkLayer never touches the page’s source. The agent reads the comments, edits your code with its own tools, and reports back in the room. What it can change in MarkLayer is the review itself: statuses, replies, its own comments, suggested edits, a checklist and polls.
Why connect over the remote URL instead of npm?
You have nothing to install or update, because the endpoint ships with the site. What you give up is scope. The remote URL is bound to one share link, so a new link means a new connection. The npm package is installed once and switches between links with marklayer_connect_room.
How do I know the connection worked?
Seeing the server listed is not proof. Ask the agent to call marklayer_room_info: it should answer with the URL the link annotates. A 401 means the link’s owner has locked it, and it wants the password. If the agent says it has no MarkLayer tools, the session predates the config; start a new one.

Free, with no account, for everyone on the link.

Annotate a page · Every feature ·How other tools’ MCP servers compare