← rudycanshoot

rudycanshoot 1.3.1

npm · rudycanshoot · current release

13
Tools
0
Resources
0
Templates
0
Prompts

Observation

Observed 2026-08-15T22:47:33.098Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.

Server capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools 13

ToolCategoryAnnotationsRisk
annotate_screenshotAdd a text label to an existing screenshot. Returns the annotated image path.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Input image path"
    },
    "text": {
      "type": "string",
      "description": "Text to add"
    },
    "outputPath": {
      "description": "Where to write annotated image (default: replaces input)",
      "type": "string"
    },
    "position": {
      "default": "bottom",
      "type": "string",
      "enum": [
        "top",
        "bottom",
        "center"
      ]
    },
    "color": {
      "default": "#00ff88",
      "description": "Text color as hex, e.g. #ff0000",
      "type": "string"
    },
    "fontSize": {
      "default": 18,
      "type": "integer",
      "minimum": 8,
      "maximum": 72
    }
  },
  "required": [
    "path",
    "text"
  ]
}
— · —
capture_commandRun a shell command and render its output as a styled terminal screenshot PNG. Works without a display — uses Python/Pillow to render text on a dark terminal background. Returns the file path.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "command": {
      "type": "string",
      "description": "Shell command to run (passed to sh -c)"
    },
    "title": {
      "description": "Title bar label (default: the command itself)",
      "type": "string"
    },
    "outputDir": {
      "description": "Directory to save into",
      "type": "string"
    },
    "filename": {
      "description": "Output filename (default: terminal-<timestamp>.png)",
      "type": "string"
    },
    "timeout": {
      "default": 30,
      "description": "Command timeout in seconds",
      "type": "integer",
      "minimum": 1,
      "maximum": 120
    },
    "fontSize": {
      "default": 13,
      "description": "Font size for rendering",
      "type": "integer",
      "minimum": 8,
      "maximum": 24
    }
  },
  "required": [
    "command"
  ]
}
— · —
capture_urlHeadlessly render a web page (no visible browser) and screenshot it. Supports auth via cookies, a custom viewport, full-page capture, and waiting for dynamic content (e.g. maps) to settle. Returns the saved file path.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The page URL to capture"
    },
    "width": {
      "default": 1600,
      "description": "Viewport width in px",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "height": {
      "default": 1000,
      "description": "Viewport height in px",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "fullPage": {
      "default": false,
      "description": "Capture the full scrollable page",
      "type": "boolean"
    },
    "waitMs": {
      "default": 4000,
      "description": "Settle delay after load (ms) for dynamic content",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "waitSelector": {
      "description": "Also wait until this CSS selector exists",
      "type": "string"
    },
    "cookies": {
      "description": "Auth cookies as {name: value} (sent as a Cookie header)",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "headers": {
      "description": "Extra HTTP headers as {name: value}",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "filename": {
      "description": "Output filename",
      "type": "string"
    },
    "outputDir": {
      "description": "Directory to save into",
      "type": "string"
    }
  },
  "required": [
    "url"
  ]
}
— · —
cleanup_videosDelete temporary screen recordings (default) or all recordings.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "all": {
      "default": false,
      "description": "If true, delete all videos not just tmp/",
      "type": "boolean"
    },
    "olderThanMinutes": {
      "default": 0,
      "description": "Only delete files older than this many minutes (0 = all matching)",
      "type": "number",
      "minimum": 0
    }
  }
}
— · —
compare_screenshotsGet pixel-level similarity metrics between two screenshots.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "before": {
      "type": "string",
      "description": "Path to first image"
    },
    "after": {
      "type": "string",
      "description": "Path to second image"
    }
  },
  "required": [
    "before",
    "after"
  ]
}
— · —
diff_screenshotsCompare two screenshots and render a difference image.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "before": {
      "type": "string",
      "description": "Path to 'before' image"
    },
    "after": {
      "type": "string",
      "description": "Path to 'after' image"
    },
    "outputPath": {
      "type": "string",
      "description": "Where to save the diff image"
    },
    "mode": {
      "default": "highlight",
      "type": "string",
      "enum": [
        "highlight",
        "heatmap",
        "side-by-side"
      ]
    }
  },
  "required": [
    "before",
    "after",
    "outputPath"
  ]
}
— · —
list_screenshotsList recent screenshots captured by this tool.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "limit": {
      "default": 20,
      "description": "Max number of results",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  }
}
— · —
list_videosList recent screen recordings (including temporary ones).
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  }
}
— · —
read_screenshotRead a previously captured screenshot as base64 so the AI can view it.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Absolute path to the screenshot file"
    }
  },
  "required": [
    "path"
  ]
}
— · —
read_videoExtract frames from a saved video/GIF and return them as images so the AI can watch and understand the recording.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Absolute path to the video or GIF"
    },
    "maxFrames": {
      "default": 12,
      "description": "Max evenly spaced frames to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    }
  },
  "required": [
    "path"
  ]
}
— · —
record_terminalRecord a TERMINAL SESSION: run a shell command and capture its terminal output over time as a GIF. Unlike record_video (which screen-captures the whole desktop, including private windows), this records ONLY the terminal — no desktop, no private info — and works headless (WSL, SSH, CI). Ideal for demoing CLI programs.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "command": {
      "type": "string",
      "description": "Shell command to run and record (e.g. './demo.sh')"
    },
    "output": {
      "description": "Output .gif path (default: ~/.rudycanshoot/videos/tmp/)",
      "type": "string"
    },
    "fontSize": {
      "default": 15,
      "description": "Font size",
      "type": "integer",
      "minimum": 8,
      "maximum": 40
    },
    "sampleMs": {
      "default": 400,
      "description": "Snapshot cadence (ms)",
      "type": "integer",
      "minimum": 100,
      "maximum": 2000
    },
    "idleCapMs": {
      "default": 1500,
      "description": "Cap long unchanged stretches (e.g. a model load) to this many ms so the GIF stays short",
      "type": "integer",
      "minimum": 200,
      "maximum": 10000
    },
    "rows": {
      "default": 32,
      "description": "Visible terminal rows (tail window)",
      "type": "integer",
      "minimum": 4,
      "maximum": 80
    },
    "cols": {
      "default": 110,
      "description": "Visible terminal columns",
      "type": "integer",
      "minimum": 20,
      "maximum": 240
    },
    "keep": {
      "default": false,
      "description": "Store in videos/ instead of videos/tmp/",
      "type": "boolean"
    },
    "returnFrames": {
      "default": true,
      "description": "Return sampled frames as images for AI review",
      "type": "boolean"
    },
    "maxFrames": {
      "default": 10,
      "description": "Max frames returned when returnFrames=true",
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    }
  },
  "required": [
    "command"
  ]
}
— · —
record_videoRecord a temporary screen video for visual monitoring. By default returns evenly spaced frames as images so the AI can watch/understand what happened, plus the saved video path.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "durationSec": {
      "default": 5,
      "description": "How long to record (seconds)",
      "type": "number",
      "minimum": 0.5,
      "maximum": 120
    },
    "fps": {
      "default": 4,
      "description": "Capture frame rate (frame-sampling backend)",
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "area": {
      "description": "Optional region as 'x,y,width,height'",
      "type": "string"
    },
    "temporary": {
      "default": true,
      "description": "Store under ~/.rudycanshoot/videos/tmp/ for easy cleanup",
      "type": "boolean"
    },
    "returnFrames": {
      "default": true,
      "description": "Include extracted frames as images the AI can view",
      "type": "boolean"
    },
    "maxFrames": {
      "default": 12,
      "description": "Max frames returned to the AI when returnFrames=true",
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "filename": {
      "description": "Output filename",
      "type": "string"
    },
    "outputDir": {
      "description": "Override output directory",
      "type": "string"
    }
  }
}
— · —
take_screenshotCapture a screenshot of the screen, active window, or a region. Returns the file path of the saved image.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "mode": {
      "default": "fullscreen",
      "description": "What to capture",
      "type": "string",
      "enum": [
        "fullscreen",
        "window",
        "area"
      ]
    },
    "area": {
      "description": "Region as 'x,y,width,height' — only used when mode=area",
      "type": "string"
    },
    "filename": {
      "description": "Output filename (default: screenshot-<timestamp>.png)",
      "type": "string"
    },
    "outputDir": {
      "description": "Directory to save into (default: ~/.rudycanshoot/captures/)",
      "type": "string"
    }
  }
}
— · —

Resources 0

Resource templates 0

Prompts 0

Let’s talk about MCP security.

Share your details and our security team will contact you.