{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_j9q9wyxghpb9","handle":"dittu","url":"https://wellknown.network/agents/dittu","links":{"self":"https://wellknown.network/agents/dittu/record.json","html":"https://wellknown.network/agents/dittu","markdown":"https://wellknown.network/agents/dittu/record.md","api":"https://wellknown.network/api/v1/agents/dittu","status":"https://wellknown.network/api/v1/agents/dittu/status","claim":"https://wellknown.network/agents/dittu/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/dittu/claim.json","badge":"https://wellknown.network/agents/dittu/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/dittu/history","tools":"https://wellknown.network/api/v1/agents/dittu/tools"},"ard":{"identifier":"urn:air:app.dittu.org:server:dittu","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"dittu","summary":"Turns a phone into a camera+Bluetooth remote so AI assistants can see and control any PC.","description":"Turns a phone into a camera+Bluetooth remote so AI assistants can see and control any PC.","publisher":{"name":"BorisGujvin","url":null},"homepage":"https://dittu.org","repository":"https://github.com/borisgujvin/dittu-mcp","version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://app.dittu.org/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-09T10:30:25.929798Z","publishedAt":"2026-07-09T10:30:25.929798Z","registryName":"io.github.BorisGujvin/dittu"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"infra.desktop","name":"Desktop Control","confidence":1,"provenance":"derived"},{"slug":"communication.sms-voice","name":"SMS & Voice","confidence":0.859,"provenance":"derived"}],"categories":["communication","infra"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-11T12:26:02.845Z","lastProbedAt":"2026-10-11T12:26:02.845Z","statusComputedAt":"2026-10-11T12:27:42.010Z","reliability30d":{"probes":111,"successRate":1,"p50Ms":61,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":109,"ok":109,"authBoundaryOk":0,"serviceOk":109,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-11T12:26:02.845Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":112,"error":null,"detail":{"tools":[{"name":"take_screenshot","description":"\n    Capture the current screen via the Dittu phone camera.\n    Returns a JPEG image. Call this to see what's on screen before acting.\n    "},{"name":"take_screenshot_with_grid","description":"\n    Capture the screen and overlay a coordinate grid.\n    step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements).\n    Returns a JPEG im"},{"name":"take_screenshot_with_crosshair","description":"\n    Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair\n    at exactly that expected position.\n\n    Use this for screen-corner cali"},{"name":"get_raw_screenshot","description":"\n    Capture the RAW camera frame — no perspective warp, no crop to the calibrated\n    screen quad. Use this to see exactly what the camera sees before any corr"},{"name":"get_corners","description":"\n    Get the phone's current screen-corner calibration.\n    Returns {\"tl\": [nx,ny], \"tr\": [nx,ny], \"br\": [nx,ny], \"bl\": [nx,ny]} — each corner\n    is a normaliz"},{"name":"set_corners","description":"\n    Update the phone's screen-corner calibration.\n    Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame.\n    tl/tr/br/bl = top-left/top-right/"},{"name":"move_mouse","description":"\n    Move mouse cursor to normalized coordinates WITHOUT clicking.\n    nx, ny: float 0.0000–1.0000.\n    "},{"name":"click","description":"\n    Click at normalized screen coordinates.\n    nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.\n    "},{"name":"double_click","description":"Double-click at normalized screen coordinates."},{"name":"type_text","description":"Type text on the computer keyboard."},{"name":"key","description":"\n    Press a key combination.\n    modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8\n    Common keycodes: Enter=40, Escape=41, Tab=43, Space=44,\n      F4=61, "},{"name":"scroll","description":"\n    Scroll the mouse wheel.\n    delta: number of ticks. Positive = scroll down, negative = scroll up.\n    "}],"toolCount":12,"toolsHash":"310f3bf7c78a70c394c0b2ea8bff0912c3112f681c5ef5ccd68340f2008843fd","serverName":"Dittu","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T06:23:49.406Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":66,"error":null,"detail":{"tools":[{"name":"take_screenshot","description":"\n    Capture the current screen via the Dittu phone camera.\n    Returns a JPEG image. Call this to see what's on screen before acting.\n    "},{"name":"take_screenshot_with_grid","description":"\n    Capture the screen and overlay a coordinate grid.\n    step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements).\n    Returns a JPEG im"},{"name":"take_screenshot_with_crosshair","description":"\n    Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair\n    at exactly that expected position.\n\n    Use this for screen-corner cali"},{"name":"get_raw_screenshot","description":"\n    Capture the RAW camera frame — no perspective warp, no crop to the calibrated\n    screen quad. Use this to see exactly what the camera sees before any corr"},{"name":"get_corners","description":"\n    Get the phone's current screen-corner calibration.\n    Returns {\"tl\": [nx,ny], \"tr\": [nx,ny], \"br\": [nx,ny], \"bl\": [nx,ny]} — each corner\n    is a normaliz"},{"name":"set_corners","description":"\n    Update the phone's screen-corner calibration.\n    Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame.\n    tl/tr/br/bl = top-left/top-right/"},{"name":"move_mouse","description":"\n    Move mouse cursor to normalized coordinates WITHOUT clicking.\n    nx, ny: float 0.0000–1.0000.\n    "},{"name":"click","description":"\n    Click at normalized screen coordinates.\n    nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.\n    "},{"name":"double_click","description":"Double-click at normalized screen coordinates."},{"name":"type_text","description":"Type text on the computer keyboard."},{"name":"key","description":"\n    Press a key combination.\n    modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8\n    Common keycodes: Enter=40, Escape=41, Tab=43, Space=44,\n      F4=61, "},{"name":"scroll","description":"\n    Scroll the mouse wheel.\n    delta: number of ticks. Positive = scroll down, negative = scroll up.\n    "}],"toolCount":12,"toolsHash":"310f3bf7c78a70c394c0b2ea8bff0912c3112f681c5ef5ccd68340f2008843fd","serverName":"Dittu","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T00:26:58.964Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":62,"error":null,"detail":{"tools":[{"name":"take_screenshot","description":"\n    Capture the current screen via the Dittu phone camera.\n    Returns a JPEG image. Call this to see what's on screen before acting.\n    "},{"name":"take_screenshot_with_grid","description":"\n    Capture the screen and overlay a coordinate grid.\n    step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements).\n    Returns a JPEG im"},{"name":"take_screenshot_with_crosshair","description":"\n    Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair\n    at exactly that expected position.\n\n    Use this for screen-corner cali"},{"name":"get_raw_screenshot","description":"\n    Capture the RAW camera frame — no perspective warp, no crop to the calibrated\n    screen quad. Use this to see exactly what the camera sees before any corr"},{"name":"get_corners","description":"\n    Get the phone's current screen-corner calibration.\n    Returns {\"tl\": [nx,ny], \"tr\": [nx,ny], \"br\": [nx,ny], \"bl\": [nx,ny]} — each corner\n    is a normaliz"},{"name":"set_corners","description":"\n    Update the phone's screen-corner calibration.\n    Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame.\n    tl/tr/br/bl = top-left/top-right/"},{"name":"move_mouse","description":"\n    Move mouse cursor to normalized coordinates WITHOUT clicking.\n    nx, ny: float 0.0000–1.0000.\n    "},{"name":"click","description":"\n    Click at normalized screen coordinates.\n    nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.\n    "},{"name":"double_click","description":"Double-click at normalized screen coordinates."},{"name":"type_text","description":"Type text on the computer keyboard."},{"name":"key","description":"\n    Press a key combination.\n    modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8\n    Common keycodes: Enter=40, Escape=41, Tab=43, Space=44,\n      F4=61, "},{"name":"scroll","description":"\n    Scroll the mouse wheel.\n    delta: number of ticks. Positive = scroll down, negative = scroll up.\n    "}],"toolCount":12,"toolsHash":"310f3bf7c78a70c394c0b2ea8bff0912c3112f681c5ef5ccd68340f2008843fd","serverName":"Dittu","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T17:29:19.183Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":65,"error":null,"detail":{"tools":[{"name":"take_screenshot","description":"\n    Capture the current screen via the Dittu phone camera.\n    Returns a JPEG image. Call this to see what's on screen before acting.\n    "},{"name":"take_screenshot_with_grid","description":"\n    Capture the screen and overlay a coordinate grid.\n    step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements).\n    Returns a JPEG im"},{"name":"take_screenshot_with_crosshair","description":"\n    Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair\n    at exactly that expected position.\n\n    Use this for screen-corner cali"},{"name":"get_raw_screenshot","description":"\n    Capture the RAW camera frame — no perspective warp, no crop to the calibrated\n    screen quad. Use this to see exactly what the camera sees before any corr"},{"name":"get_corners","description":"\n    Get the phone's current screen-corner calibration.\n    Returns {\"tl\": [nx,ny], \"tr\": [nx,ny], \"br\": [nx,ny], \"bl\": [nx,ny]} — each corner\n    is a normaliz"},{"name":"set_corners","description":"\n    Update the phone's screen-corner calibration.\n    Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame.\n    tl/tr/br/bl = top-left/top-right/"},{"name":"move_mouse","description":"\n    Move mouse cursor to normalized coordinates WITHOUT clicking.\n    nx, ny: float 0.0000–1.0000.\n    "},{"name":"click","description":"\n    Click at normalized screen coordinates.\n    nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.\n    "},{"name":"double_click","description":"Double-click at normalized screen coordinates."},{"name":"type_text","description":"Type text on the computer keyboard."},{"name":"key","description":"\n    Press a key combination.\n    modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8\n    Common keycodes: Enter=40, Escape=41, Tab=43, Space=44,\n      F4=61, "},{"name":"scroll","description":"\n    Scroll the mouse wheel.\n    delta: number of ticks. Positive = scroll down, negative = scroll up.\n    "}],"toolCount":12,"toolsHash":"310f3bf7c78a70c394c0b2ea8bff0912c3112f681c5ef5ccd68340f2008843fd","serverName":"Dittu","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T11:26:09.533Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":48,"error":null,"detail":{"tools":[{"name":"take_screenshot","description":"\n    Capture the current screen via the Dittu phone camera.\n    Returns a JPEG image. Call this to see what's on screen before acting.\n    "},{"name":"take_screenshot_with_grid","description":"\n    Capture the screen and overlay a coordinate grid.\n    step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements).\n    Returns a JPEG im"},{"name":"take_screenshot_with_crosshair","description":"\n    Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair\n    at exactly that expected position.\n\n    Use this for screen-corner cali"},{"name":"get_raw_screenshot","description":"\n    Capture the RAW camera frame — no perspective warp, no crop to the calibrated\n    screen quad. Use this to see exactly what the camera sees before any corr"},{"name":"get_corners","description":"\n    Get the phone's current screen-corner calibration.\n    Returns {\"tl\": [nx,ny], \"tr\": [nx,ny], \"br\": [nx,ny], \"bl\": [nx,ny]} — each corner\n    is a normaliz"},{"name":"set_corners","description":"\n    Update the phone's screen-corner calibration.\n    Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame.\n    tl/tr/br/bl = top-left/top-right/"},{"name":"move_mouse","description":"\n    Move mouse cursor to normalized coordinates WITHOUT clicking.\n    nx, ny: float 0.0000–1.0000.\n    "},{"name":"click","description":"\n    Click at normalized screen coordinates.\n    nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.\n    "},{"name":"double_click","description":"Double-click at normalized screen coordinates."},{"name":"type_text","description":"Type text on the computer keyboard."},{"name":"key","description":"\n    Press a key combination.\n    modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8\n    Common keycodes: Enter=40, Escape=41, Tab=43, Space=44,\n      F4=61, "},{"name":"scroll","description":"\n    Scroll the mouse wheel.\n    delta: number of ticks. Positive = scroll down, negative = scroll up.\n    "}],"toolCount":12,"toolsHash":"310f3bf7c78a70c394c0b2ea8bff0912c3112f681c5ef5ccd68340f2008843fd","serverName":"Dittu","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T05:28:11.753Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":65,"error":null,"detail":{"tools":[{"name":"take_screenshot","description":"\n    Capture the current screen via the Dittu phone camera.\n    Returns a JPEG image. Call this to see what's on screen before acting.\n    "},{"name":"take_screenshot_with_grid","description":"\n    Capture the screen and overlay a coordinate grid.\n    step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements).\n    Returns a JPEG im"},{"name":"take_screenshot_with_crosshair","description":"\n    Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair\n    at exactly that expected position.\n\n    Use this for screen-corner cali"},{"name":"get_raw_screenshot","description":"\n    Capture the RAW camera frame — no perspective warp, no crop to the calibrated\n    screen quad. Use this to see exactly what the camera sees before any corr"},{"name":"get_corners","description":"\n    Get the phone's current screen-corner calibration.\n    Returns {\"tl\": [nx,ny], \"tr\": [nx,ny], \"br\": [nx,ny], \"bl\": [nx,ny]} — each corner\n    is a normaliz"},{"name":"set_corners","description":"\n    Update the phone's screen-corner calibration.\n    Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame.\n    tl/tr/br/bl = top-left/top-right/"},{"name":"move_mouse","description":"\n    Move mouse cursor to normalized coordinates WITHOUT clicking.\n    nx, ny: float 0.0000–1.0000.\n    "},{"name":"click","description":"\n    Click at normalized screen coordinates.\n    nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.\n    "},{"name":"double_click","description":"Double-click at normalized screen coordinates."},{"name":"type_text","description":"Type text on the computer keyboard."},{"name":"key","description":"\n    Press a key combination.\n    modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8\n    Common keycodes: Enter=40, Escape=41, Tab=43, Space=44,\n      F4=61, "},{"name":"scroll","description":"\n    Scroll the mouse wheel.\n    delta: number of ticks. Positive = scroll down, negative = scroll up.\n    "}],"toolCount":12,"toolsHash":"310f3bf7c78a70c394c0b2ea8bff0912c3112f681c5ef5ccd68340f2008843fd","serverName":"Dittu","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T22:27:55.147Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":56,"error":null,"detail":{"tools":[{"name":"take_screenshot","description":"\n    Capture the current screen via the Dittu phone camera.\n    Returns a JPEG image. Call this to see what's on screen before acting.\n    "},{"name":"take_screenshot_with_grid","description":"\n    Capture the screen and overlay a coordinate grid.\n    step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements).\n    Returns a JPEG im"},{"name":"take_screenshot_with_crosshair","description":"\n    Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair\n    at exactly that expected position.\n\n    Use this for screen-corner cali"},{"name":"get_raw_screenshot","description":"\n    Capture the RAW camera frame — no perspective warp, no crop to the calibrated\n    screen quad. Use this to see exactly what the camera sees before any corr"},{"name":"get_corners","description":"\n    Get the phone's current screen-corner calibration.\n    Returns {\"tl\": [nx,ny], \"tr\": [nx,ny], \"br\": [nx,ny], \"bl\": [nx,ny]} — each corner\n    is a normaliz"},{"name":"set_corners","description":"\n    Update the phone's screen-corner calibration.\n    Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame.\n    tl/tr/br/bl = top-left/top-right/"},{"name":"move_mouse","description":"\n    Move mouse cursor to normalized coordinates WITHOUT clicking.\n    nx, ny: float 0.0000–1.0000.\n    "},{"name":"click","description":"\n    Click at normalized screen coordinates.\n    nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.\n    "},{"name":"double_click","description":"Double-click at normalized screen coordinates."},{"name":"type_text","description":"Type text on the computer keyboard."},{"name":"key","description":"\n    Press a key combination.\n    modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8\n    Common keycodes: Enter=40, Escape=41, Tab=43, Space=44,\n      F4=61, "},{"name":"scroll","description":"\n    Scroll the mouse wheel.\n    delta: number of ticks. Positive = scroll down, negative = scroll up.\n    "}],"toolCount":12,"toolsHash":"310f3bf7c78a70c394c0b2ea8bff0912c3112f681c5ef5ccd68340f2008843fd","serverName":"Dittu","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T15:31:10.254Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":59,"error":null,"detail":{"tools":[{"name":"take_screenshot","description":"\n    Capture the current screen via the Dittu phone camera.\n    Returns a JPEG image. Call this to see what's on screen before acting.\n    "},{"name":"take_screenshot_with_grid","description":"\n    Capture the screen and overlay a coordinate grid.\n    step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements).\n    Returns a JPEG im"},{"name":"take_screenshot_with_crosshair","description":"\n    Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair\n    at exactly that expected position.\n\n    Use this for screen-corner cali"},{"name":"get_raw_screenshot","description":"\n    Capture the RAW camera frame — no perspective warp, no crop to the calibrated\n    screen quad. Use this to see exactly what the camera sees before any corr"},{"name":"get_corners","description":"\n    Get the phone's current screen-corner calibration.\n    Returns {\"tl\": [nx,ny], \"tr\": [nx,ny], \"br\": [nx,ny], \"bl\": [nx,ny]} — each corner\n    is a normaliz"},{"name":"set_corners","description":"\n    Update the phone's screen-corner calibration.\n    Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame.\n    tl/tr/br/bl = top-left/top-right/"},{"name":"move_mouse","description":"\n    Move mouse cursor to normalized coordinates WITHOUT clicking.\n    nx, ny: float 0.0000–1.0000.\n    "},{"name":"click","description":"\n    Click at normalized screen coordinates.\n    nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.\n    "},{"name":"double_click","description":"Double-click at normalized screen coordinates."},{"name":"type_text","description":"Type text on the computer keyboard."},{"name":"key","description":"\n    Press a key combination.\n    modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8\n    Common keycodes: Enter=40, Escape=41, Tab=43, Space=44,\n      F4=61, "},{"name":"scroll","description":"\n    Scroll the mouse wheel.\n    delta: number of ticks. Positive = scroll down, negative = scroll up.\n    "}],"toolCount":12,"toolsHash":"310f3bf7c78a70c394c0b2ea8bff0912c3112f681c5ef5ccd68340f2008843fd","serverName":"Dittu","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T08:28:13.258Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":63,"error":null,"detail":{"tools":[{"name":"take_screenshot","description":"\n    Capture the current screen via the Dittu phone camera.\n    Returns a JPEG image. Call this to see what's on screen before acting.\n    "},{"name":"take_screenshot_with_grid","description":"\n    Capture the screen and overlay a coordinate grid.\n    step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements).\n    Returns a JPEG im"},{"name":"take_screenshot_with_crosshair","description":"\n    Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair\n    at exactly that expected position.\n\n    Use this for screen-corner cali"},{"name":"get_raw_screenshot","description":"\n    Capture the RAW camera frame — no perspective warp, no crop to the calibrated\n    screen quad. Use this to see exactly what the camera sees before any corr"},{"name":"get_corners","description":"\n    Get the phone's current screen-corner calibration.\n    Returns {\"tl\": [nx,ny], \"tr\": [nx,ny], \"br\": [nx,ny], \"bl\": [nx,ny]} — each corner\n    is a normaliz"},{"name":"set_corners","description":"\n    Update the phone's screen-corner calibration.\n    Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame.\n    tl/tr/br/bl = top-left/top-right/"},{"name":"move_mouse","description":"\n    Move mouse cursor to normalized coordinates WITHOUT clicking.\n    nx, ny: float 0.0000–1.0000.\n    "},{"name":"click","description":"\n    Click at normalized screen coordinates.\n    nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.\n    "},{"name":"double_click","description":"Double-click at normalized screen coordinates."},{"name":"type_text","description":"Type text on the computer keyboard."},{"name":"key","description":"\n    Press a key combination.\n    modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8\n    Common keycodes: Enter=40, Escape=41, Tab=43, Space=44,\n      F4=61, "},{"name":"scroll","description":"\n    Scroll the mouse wheel.\n    delta: number of ticks. Positive = scroll down, negative = scroll up.\n    "}],"toolCount":12,"toolsHash":"310f3bf7c78a70c394c0b2ea8bff0912c3112f681c5ef5ccd68340f2008843fd","serverName":"Dittu","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T02:25:49.642Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":54,"error":null,"detail":{"tools":[{"name":"take_screenshot","description":"\n    Capture the current screen via the Dittu phone camera.\n    Returns a JPEG image. Call this to see what's on screen before acting.\n    "},{"name":"take_screenshot_with_grid","description":"\n    Capture the screen and overlay a coordinate grid.\n    step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements).\n    Returns a JPEG im"},{"name":"take_screenshot_with_crosshair","description":"\n    Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair\n    at exactly that expected position.\n\n    Use this for screen-corner cali"},{"name":"get_raw_screenshot","description":"\n    Capture the RAW camera frame — no perspective warp, no crop to the calibrated\n    screen quad. Use this to see exactly what the camera sees before any corr"},{"name":"get_corners","description":"\n    Get the phone's current screen-corner calibration.\n    Returns {\"tl\": [nx,ny], \"tr\": [nx,ny], \"br\": [nx,ny], \"bl\": [nx,ny]} — each corner\n    is a normaliz"},{"name":"set_corners","description":"\n    Update the phone's screen-corner calibration.\n    Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame.\n    tl/tr/br/bl = top-left/top-right/"},{"name":"move_mouse","description":"\n    Move mouse cursor to normalized coordinates WITHOUT clicking.\n    nx, ny: float 0.0000–1.0000.\n    "},{"name":"click","description":"\n    Click at normalized screen coordinates.\n    nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.\n    "},{"name":"double_click","description":"Double-click at normalized screen coordinates."},{"name":"type_text","description":"Type text on the computer keyboard."},{"name":"key","description":"\n    Press a key combination.\n    modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8\n    Common keycodes: Enter=40, Escape=41, Tab=43, Space=44,\n      F4=61, "},{"name":"scroll","description":"\n    Scroll the mouse wheel.\n    delta: number of ticks. Positive = scroll down, negative = scroll up.\n    "}],"toolCount":12,"toolsHash":"310f3bf7c78a70c394c0b2ea8bff0912c3112f681c5ef5ccd68340f2008843fd","serverName":"Dittu","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"take_screenshot","description":"\n    Capture the current screen via the Dittu phone camera.\n    Returns a JPEG image. Call this to see what's on screen before acting.\n    "},{"name":"take_screenshot_with_grid","description":"\n    Capture the screen and overlay a coordinate grid.\n    step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements).\n    Returns a JPEG im"},{"name":"take_screenshot_with_crosshair","description":"\n    Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair\n    at exactly that expected position.\n\n    Use this for screen-corner cali"},{"name":"get_raw_screenshot","description":"\n    Capture the RAW camera frame — no perspective warp, no crop to the calibrated\n    screen quad. Use this to see exactly what the camera sees before any corr"},{"name":"get_corners","description":"\n    Get the phone's current screen-corner calibration.\n    Returns {\"tl\": [nx,ny], \"tr\": [nx,ny], \"br\": [nx,ny], \"bl\": [nx,ny]} — each corner\n    is a normaliz"},{"name":"set_corners","description":"\n    Update the phone's screen-corner calibration.\n    Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame.\n    tl/tr/br/bl = top-left/top-right/"},{"name":"move_mouse","description":"\n    Move mouse cursor to normalized coordinates WITHOUT clicking.\n    nx, ny: float 0.0000–1.0000.\n    "},{"name":"click","description":"\n    Click at normalized screen coordinates.\n    nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.\n    "},{"name":"double_click","description":"Double-click at normalized screen coordinates."},{"name":"type_text","description":"Type text on the computer keyboard."},{"name":"key","description":"\n    Press a key combination.\n    modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8\n    Common keycodes: Enter=40, Escape=41, Tab=43, Space=44,\n      F4=61, "},{"name":"scroll","description":"\n    Scroll the mouse wheel.\n    delta: number of ticks. Positive = scroll down, negative = scroll up.\n    "}],"package":null,"toolSurface":{"id":"ts_bryqmkxp3rqf","endpointId":"ep_z5vzw6x46r9u","hash":"310f3bf7c78a70c394c0b2ea8bff0912c3112f681c5ef5ccd68340f2008843fd","toolCount":12,"serverName":"Dittu","serverVersion":"1.29.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-12T09:28:12.804Z","lastSeenAt":"2026-10-11T12:26:02.855Z","observations":107,"toolNames":["take_screenshot","take_screenshot_with_grid","take_screenshot_with_crosshair","get_raw_screenshot","get_corners","set_corners","move_mouse","click","double_click","type_text","key","scroll"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_z5vzw6x46r9u","url":"https://app.dittu.org/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-10T05:28:11.752Z","auth":{"observedAt":"2026-10-10T05:28:11.838Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-10T05:28:11.887Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"dittu.org","issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validFrom":"2026-08-22T07:43:33.000Z","validTo":"2026-11-20T07:43:32.000Z","daysToExpiry":39,"sanCount":2,"fingerprint256":"A2:76:13:05:98:38:02:DB:ED:EE:90:7E:33:AD:50:8E:0C:CB:A3:C8:23:E6:C0:0A:38:4D:9F:45:EF:4C:47:7A"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.BorisGujvin/dittu","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.BorisGujvin%2Fdittu","firstSeenAt":"2026-09-06T01:18:21.708Z","fetchedAt":"2026-10-09T17:20:34.854Z","normalizedAt":"2026-10-09T17:20:34.854Z"}]},"firstSeenAt":"2026-09-06T01:18:21.708Z","updatedAt":"2026-10-11T12:28:44.555Z"}