Your AI assistant, connected to your client feedback
doby AI is the dotts MCP server. Connect Claude Code, Cursor or Codex to a project and your assistant reads the open comments itself, fixes the code, and writes the status back, live, where your client can see it.
Client feedback, handled from your editor
The assistant pulls open comments straight from the project, each with its page, element selector and screenshot.
As it works, it marks comments in progress and resolved. Your client sees the change live in dotts.
The assistant can post replies, tagged "(doby AI)", so your client knows an agent answered.
Connect with a personal API key. Works with Claude Code, Cursor and Codex over MCP.
Connected in three steps
In your dotts settings, generate a doby AI key. Keep up to five, and revoke any of them anytime.
One command in Claude Code, or a config snippet in Cursor or Codex.
Ask your assistant to fetch the open comments for a project and work through them.
Connect it to Claude Code
# 1. Create a doby AI key in your dotts settings, then:
claude mcp add doby-ai --transport http \
https://app.dotts.se/api/mcp \
--header "Authorization: Bearer dotts_sk_…"
# 2. Then just ask your assistant:
"Get my open dotts comments for project X and work through them."One key, one command. Your assistant does the rest.
From client comment to merged fix
This is the loop as it actually runs, with the tools your assistant calls. Everything below comes from a real run: only the comment itself has to come from a human, because dotts deliberately has no tool that writes comments on your client's behalf.
-
Create the project, or find it
create_projecttakes a name and a URL and returns the project id and the share link you send to your client. If the project already exists,list_projectsreturns id, URL, status and comment count for every project you own.create_project({ name: "Acme relaunch", url: "https://acme-staging.example/" }) → { projectId: "pjYmdjly0wNoeoN75OmV", shareUrl: "https://app.dotts.se/share/cc04ce08-…", passwordProtected: false } -
Your client comments, you read the comments
get_commentsreturns the open and in-progress comments by default, each with the page URL, the CSS selector or position, the viewport, the screenshot link, replies and attachments. That is the context your assistant needs to find the element in your code.get_comments({ projectId: "pjYmdjly0wNoeoN75OmV" }) → { count: 0, comments: [] } // nobody had commented yet on the test project -
Mark what you are working on
set_comment_statusmoves a comment toin_progresswhen the assistant starts and toresolvedwhen the change is in. Your client sees the status change on the same share link, without an email.set_comment_status({ commentId: "…", status: "in_progress" }) -
Answer in the thread
reply_to_commentposts a reply of up to 2000 characters. Replies from an agent are labelled "(doby AI)", so your client can always see that an assistant answered rather than you.reply_to_comment({ commentId: "…", content: "Fixed, the header is smaller on mobile now. Please take a look." }) -
Check the page before you hand it back
run_preflight_checkruns the server-side half of the pre-flight: SEO basics, mixed content and the HTTP status of every outgoing link. Long link lists come back in slices, so the assistant calls it again with the cursor until it is done.get_preflight_reportreads the latest report including the diff to the previous run.run_preflight_check({ projectId: "pjYmdjly0wNoeoN75OmV" }) → { pagesChecked: 1, linksChecked: 40, linksTotal: 47, done: false, cursor: "…:40" } run_preflight_check({ projectId: "…", cursor: "…:40" }) → { linksChecked: 47, linksTotal: 47, done: true, summary: { errors: 0, warnings: 0, notices: 0 } }
What the assistant cannot do: write a comment in your client's name, or run the in-app checks. Accessibility, placeholder text and the responsive checks happen inside the dotts preview and can be read through MCP but not started. doby AI is part of the Pro plan; Copy for AI works on every plan.
doby AI (MCP), answered
Create a doby AI API key in your dotts settings, then run the `claude mcp add doby-ai …` command in Claude Code, or paste the config snippet into Cursor or Codex.
Any MCP client over HTTP. Claude Code, Cursor and Codex connect with an API key; the claude.ai custom connector signs in with OAuth instead.
Auth is a personal API key you can revoke anytime, and it only reaches your own projects. Keys are stored hashed, never in plain text.
List your projects, read open comments with their full context, set a comment's status, reply to a comment, and create a new project with a share link.
No. doby AI is part of the Pro plan. Copy for AI, the one-click Markdown export, is available on every plan including Free.
Copy for AI is a manual, universal copy-paste into any tool. doby AI is the live connection: your assistant reads and writes by itself. Use doby AI inside your editor, Copy for AI everywhere else.
Turn client comments into resolved issues
Connect your assistant to dotts and work through client feedback without leaving your editor. Free plan, one simple price.