Developer Tools
dittu.org
Capture and analyze mobile phone screen images with calibration and coordinate overlays for automation testing.
ENDPOINT 1
https://app.dittu.org/mcp
MCP server metadata
- Name
- Dittu
- Version
- 1.29.0
Dittu controls a real computer through a phone camera + Bluetooth mouse/keyboard. The camera view can be imperfectly aligned, and clicks land at normalized (nx, ny) coordinates that may drift slightly from what you'd expect. Follow this workflow: 1. Call take_screenshot (or take_screenshot_with_grid for fine targets) BEFORE acting, to see the current state — never act blind on stale information. 2. Before clicking a small or important target, call move_mouse(nx, ny) first, then take_screenshot to confirm the cursor landed where you intended. Only call click() once you've visually confirmed the position. 3. After any action (click, type_text, key, scroll), take a fresh screenshot before deciding the next step — the screen state may have changed in ways you didn't expect. 4. If a click seems to have missed, don't repeat blindly — re-screenshot, re-locate the target, and re-move the mouse before retrying. Fixing screen-corner calibration (use if clicks are consistently off in one area, or if the visible screen looks cropped/has black margins): 1. get_corners() — read the current tl/tr/br/bl quadrilateral. These four points are an arbitrary trapezoid (perspective), NOT a rectangle — never assume symmetry. 2. Pick the edge that looks wrong. Call move_mouse(nx, ny) near that edge (e.g. nx=0.02 for the left edge, nx=0.98 for the right edge, keeping ny mid-screen-ish). 3. Call take_screenshot_with_crosshair(nx, ny) — it crops tightly around that point, zooms in, and draws a red crosshair at exactly where the cursor SHOULD be. 4. Compare: if the real cursor is missing from frame entirely, that edge is cropped — move the two corners on that edge further outward (away from screen center) in raw-camera-space. If the cursor appears offset from the crosshair, the corners need a small nudge in the direction of the offset, scaled by how far you are from that corner along each edge. 5. Call set_corners(...) with the adjusted quadrilateral, then repeat steps 2-4 to verify. 2-3 iterations is usually enough; don't over-correct on a single step.
Known tools 12
take_screenshot_with_crosshairCapture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair at exactly that expected position.
Inferred read-onlyget_raw_screenshotCapture the RAW camera frame — no perspective warp, no crop to the calibrated screen quad.
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.dittu]
url = "https://app.dittu.org/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"dittu": {
"type": "http",
"url": "https://app.dittu.org/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: dittu
Remote MCP URL: https://app.dittu.org/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"dittu": {
"url": "https://app.dittu.org/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"dittu": {
"type": "http",
"url": "https://app.dittu.org/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "dittu",
"transport": "streamable-http",
"url": "https://app.dittu.org/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Trust Data Available
BuiltWith Trust API v2 evidence for dittu.org was fetched 2026-07-28T05:25:47.223Z and is being refreshed.
dittu.org is assessed as Neutral: No suspicious signals found, but no strong positive signal either
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.