dittuDocs44

Getting started

MCP server

dittu mcp runs a Model Context Protocol server over stdio.

dittu mcp runs a Model Context Protocol server over stdio. dittu setup registers it with your agents; to add it by hand:

{
  "mcpServers": {
    "dittu": { "command": "npx", "args": ["-y", "@manishtamang/dittu", "mcp"] }
  }
}

Logs go to stderr; stdout carries only the protocol.

Tool calls are long-running: clone_website takes about a minute per page, several minutes with build: true. If your client has a tool timeout, raise it (Claude Code: MCP_TOOL_TIMEOUT=900000).

Tools

clone_website

Clone a page (or crawl a site) and score the result.

Input Type Default
url string required scheme optional
outDir string ./dittu-out/<host>
frameworks ("next" | "astro")[] both projects to generate
styling "css" | "tailwind" "css" Tailwind utilities where lossless, rest stays CSS
pages int 1–50 1 same-site crawl (robots.txt respected)
verify boolean true score preview vs original
build boolean false also npm install + build + score generated apps
remove string[] CSS selectors to drop
waitMs int 1500 extra wait after load

Returns (structuredContent):

{
  "outDir": "/abs/dittu-out/gole.codes",
  "outputs": { "preview": "…/preview", "next": "…/next", "astro": "…/astro" },
  "pages": [{ "route": "/", "url": "https://gole.codes/" }],
  "scores": [{ "target": "preview", "route": "/", "width": 1440, "score": 99.89, "worstBandsY": [], "diffImage": "…" }],
  "lowest": 99.89,
  "passed": true, // lowest ≥ 95
  "errors": [],
  "warnings": { "/": [] },
  "failedAssets": 0,
}

verify_clone

Re-score an existing clone, typically after refactoring generated components.

Input Type Default
outDir string required
targets ("preview" | "next" | "astro")[] ["preview"]
widths int[] [1440, 390]

Returns { outDir, scores, lowest, passed, errors }. A drop after a refactor means rendering changed.

read_report

{ outDir } → manifest plus the latest scores (no browser work).

Esc