shotkit
Screenshot any URL, HTML or Markdown in a real browser, and read web pages as Markdown.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"mcp": {
"url": "https://shotkit.net/mcp"
}
}
}リモートエンドポイント
https://shotkit.net/mcpstreamable-httpできること
ツール一覧
ツール(2)
🟢screenshot(url, html, markdown, format, selector, ...)
Render a URL, raw HTML or Markdown in a real Chrome and capture it as an image (returned inline), PDF, GIF or video (returned as a link). Set block_cookie_banners and block_ads for a clean capture. For a full_page capture to read, keep it small with image_width (e.g. 1024) and format jpg.
入力スキーマ
{
"type": "object",
"properties": {
"url": {
"description": "URL of the site to screenshot.",
"type": "string"
},
"html": {
"description": "HTML to render instead of a URL.",
"type": "string"
},
"markdown": {
"description": "Markdown to render instead of a URL.",
"type": "string"
},
"format": {
"description": "Output format. jpg, png and webp come back as an image; other formats as a link. Default: jpg.",
"type": "string",
"enum": [
"jpg",
"png",
"webp",
"avif",
"gif",
"tiff",
"pdf",
"mp4",
"webm"
]
},
"selector": {
"description": "CSS selector of the element to capture.",
"type": "string"
},
"selector_scroll_into_view": {
"description": "Scroll to the element to trigger lazy content. Default: true.",
"type": "boolean"
},
"capture_beyond_viewport": {
"description": "Capture parts outside the viewport (full page / selector).",
"type": "boolean"
},
"scroll_into_view": {
"description": "Scroll this selector to the top before capture.",
"type": "string"
},
"scroll_into_view_adjust_top": {
"description": "Pixel offset after scroll_into_view. Default: 0.",
"type": "number"
},
"include_shadow_dom": {
"description": "Include shadow roots in html/markdown output. Default: false.",
"type": "boolean"
},
"viewport_device": {
"description": "Emulate a device preset (sets size, DPR, UA, touch). E.g. ipad_pro, iphone_15_pro. All ids: https://shotkit.net/docs/options/viewport#viewport_device.",
"type": "string"
},
"viewport_width": {
"description": "Viewport width in px. Default: 1280.",
"type": "number",
"minimum": 1,
"maximum": 7680
},
"viewport_height": {
"description": "Viewport height in px. Default: 1024.",
"type": "number",
"minimum": 1,
"maximum": 7680
},
"device_scale_factor": {
"description": "Device pixel ratio (1–5). Animated formats record at 1×. Default: 1.",
"type": "number",
"minimum": 1,
"maximum": 5
},
"viewport_mobile": {
"description": "Respect the meta viewport tag. Default: false.",
"type": "boolean"
},
"viewport_has_touch": {
"description": "Enable touch events. Default: false.",
"type": "boolean"
},
"viewport_landscape": {
"description": "Landscape orientation. Default: false.",
"type": "boolean"
},
"image_quality": {
"description": "Quality for lossy formats and video (0–100). Default: 80.",
"type": "number",
"minimum": 0,
"maximum": 100
},
"image_width": {
"description": "Resize output to fit this width (keeps ratio).",
"type": "number",
"minimum": 1,
"maximum": 16000
},
"image_height": {
"description": "Resize output to fit this height (keeps ratio).",
"type": "number",
"minimum": 1,
"maximum": 16000
},
"omit_background": {
"description": "Transparent background (PNG only). Default: false.",
"type": "boolean"
},
"full_page": {
"description": "Capture the full scrollable page. Default: false.",
"type": "boolean"
},
"full_page_scroll": {
"description": "Scroll to bottom first to load lazy images (auto with full_page).",
"type": "boolean"
},
"full_page_scroll_delay": {
"description": "Delay between scroll steps (ms). Default: 400.",
"type": "number",
"minimum": 0,
"maximum": 5000
},
"full_page_scroll_by": {
"description": "Pixels per scroll step (default: viewport height).",
"type": "number",
"minimum": 50
},
"full_page_max_height": {
"description": "Cap the full-page height (px).",
"type": "number",
"minimum": 1
},
"clip_x": {
"description": "Clip area X.",
"type": "number",
"minimum": 0
},
"clip_y": {
"description": "Clip area Y.",
"type": "number",
"minimum": 0
},
"clip_width": {
"description": "Clip area width.",
"type": "number",
"minimum": 1
},
"clip_height": {
"description": "Clip area height.",
"type": "number",
"minimum": 1
},
"pdf_print_background": {
"description": "Print background graphics. Default: false.",
"type": "boolean"
},
"pdf_fit_one_page": {
"description": "Fit the whole page on one PDF page. Default: false.",
"type": "boolean"
},
"pdf_landscape": {
"description": "Landscape orientation. Default: false.",
"type": "boolean"
},
"pdf_paper_format": {
"description": "Paper size. Default: letter.",
"type": "string",
"enum": [
"a0",
"a1",
"a2",
"a3",
"a4",
"a5",
"a6",
"legal",
"letter",
"tabloid"
]
},
"pdf_margin": {
"description": "Margin for all sides (e.g. 20px, 1cm).",
"type": "string"
},
"pdf_margin_top": {
"description": "Top margin override.",
"type": "string"
},
"pdf_margin_right": {
"description": "Right margin override.",
"type": "string"
},
"pdf_margin_bottom": {
"description": "Bottom margin override.",
"type": "string"
},
"pdf_margin_left": {
"description": "Left margin override.",
"type": "string"
},
"animation_duration": {
"description": "Seconds to record. With format=webp, records an animated WebP. Default: 3.",
"type": "number",
"minimum": 0.5,
"maximum": 20
},
"animation_fps": {
"description": "Frames per second (default: 10 for gif/webp, 30 for video).",
"type": "number",
"minimum": 1,
"maximum": 30
},
"animation_scroll": {
"description": "Scroll smoothly from the current position to the bottom while recording. Default: false.",
"type": "boolean"
},
"dark_mode": {
"description": "Emulate prefers-color-scheme: dark. Otherwise pages render in light mode.",
"type": "boolean"
},
"reduce_motion": {
"description": "Actively finish/pause animations and videos. Default: false.",
"type": "boolean"
},
"reduced_motion": {
"description": "Emulate prefers-reduced-motion: reduce.",
"type": "boolean"
},
"media_type": {
"description": "CSS media type.",
"type": "string",
"enum": [
"screen",
"print"
]
},
"hide_selectors": {
"description": "Hide every element matching each selector.",
"type": "array",
"items": {
"type": "string"
}
},
"styles": {
"description": "CSS injected before capture.",
"type": "string"
},
"scripts": {
"description": "JavaScript executed before capture.",
"type": "string"
},
"scripts_wait_until": {
"description": "Wait for these events after scripts run.",
"type": "array",
"items": {
"type": "string",
"enum": [
"load",
"domcontentloaded",
"networkidle0",
"networkidle2"
]
}
},
"click": {
"description": "Click this selector before capture.",
"type": "string"
},
"hover": {
"description": "Hover this selector before capture.",
"type": "string"
},
"error_on_click_selector_not_found": {
"description": "Fail if the click target is missing. Default: true.",
"type": "boolean"
},
"error_on_hover_selector_not_found": {
"description": "Fail if the hover target is missing. Default: true.",
"type": "boolean"
},
"block_cookie_banners": {
"description": "Hide cookie / GDPR banners. Default: false.",
"type": "boolean"
},
"block_banners_by_heuristics": {
"description": "Aggressive heuristic banner removal. Default: false.",
"type": "boolean"
},
"block_chats": {
"description": "Hide chat widgets (Intercom, Crisp, Drift…). Default: false.",
"type": "boolean"
},
"block_ads": {
"description": "Block ad networks. Default: false.",
"type": "boolean"
},
"block_trackers": {
"description": "Block analytics / trackers. Default: false.",
"type": "boolean"
},
"block_requests": {
"description": "Block requests matching wildcard patterns.",
"type": "array",
"items": {
"type": "string"
}
},
"block_resources": {
"description": "Block resource types.",
"type": "array",
"items": {
"type": "string",
"enum": [
"document",
"stylesheet",
"image",
"media",
"font",
"script",
"texttrack",
"xhr",
"fetch",
"eventsource",
"websocket",
"manifest",
"other"
]
}
},
"wait_until": {
"description": "Navigation events to wait for. Default: load.",
"type": "array",
"items": {
"type": "string",
"enum": [
"load",
"domcontentloaded",
"networkidle0",
"networkidle2"
]
}
},
"delay": {
"description": "Extra seconds to wait before capture. Default: 0.",
"type": "number",
"minimum": 0,
"maximum": 30
},
"timeout": {
"description": "Total request timeout (s). Up to 90, or 600 with async (render time only). Default: 60.",
"type": "number",
"minimum": 5,
"maximum": 600
},
"navigation_timeout": {
"description": "Navigation timeout (s). Default: 30.",
"type": "number",
"minimum": 1,
"maximum": 30
},
"wait_for_selector": {
"description": "Wait for this selector to appear.",
"type": "string"
},
"wait_for_selector_algorithm": {
"description": "How comma-separated selectors are matched. Default: at_least_one.",
"type": "string",
"enum": [
"at_least_one",
"at_least_by_count"
]
},
"user_agent": {
"description": "Custom User-Agent.",
"type": "string"
},
"authorization": {
"description": "Authorization header for the target.",
"type": "string"
},
"headers": {
"description": "Extra headers, one per line.",
"type": "array",
"items": {
"type": "string"
}
},
"cookies": {
"description": "Cookies, one per line.",
"type": "array",
"items": {
"type": "string"
}
},
"time_zone": {
"description": "Browser time zone.",
"type": "string",
"enum": [
"America/Chicago",
"America/Denver",
"America/Los_Angeles",
"America/Mexico_City",
"America/New_York",
"America/Santiago",
"America/Toronto",
"America/Vancouver",
"Asia/Kuala_Lumpur",
"Asia/Shanghai",
"Asia/Tashkent",
"Asia/Tokyo",
"Europe/Berlin",
"Europe/Bucharest",
"Europe/Kyiv",
"Europe/Lisbon",
"Europe/London",
"Europe/Madrid",
"Europe/Paris",
"Pacific/Auckland",
"UTC"
]
},
"proxy": {
"description": "Your HTTP proxy (http://user:pass@host:port).",
"type": "string"
},
"bypass_csp": {
"description": "Bypass Content-Security-Policy. Default: false.",
"type": "boolean"
},
"geolocation_latitude": {
"description": "Latitude.",
"type": "number",
"minimum": -90,
"maximum": 90
},
"geolocation_longitude": {
"description": "Longitude.",
"type": "number",
"minimum": -180,
"maximum": 180
},
"geolocation_accuracy": {
"description": "Accuracy in meters.",
"type": "number",
"minimum": 0
},
"cache": {
"description": "Cache the result and return a CDN URL. Default: false.",
"type": "boolean"
},
"cache_ttl": {
"description": "Cache lifetime in seconds. Default: 14400.",
"type": "number",
"minimum": 14400,
"maximum": 2592000
},
"cache_key": {
"description": "Distinguish otherwise identical cached renders.",
"type": "string"
},
"metadata_image_size": {
"description": "Return image width/height. Default: false.",
"type": "boolean"
},
"metadata_page_title": {
"description": "Return the page title. Default: false.",
"type": "boolean"
},
"metadata_icon": {
"description": "Return the favicon URL. Default: false.",
"type": "boolean"
},
"metadata_open_graph": {
"description": "Return Open Graph tags. Default: false.",
"type": "boolean"
},
"metadata_fonts": {
"description": "Return fonts used by the page. Default: false.",
"type": "boolean"
},
"metadata_content": {
"description": "Also store page content and return its URL. Default: false.",
"type": "boolean"
},
"metadata_content_format": {
"description": "Content format. Default: html.",
"type": "string",
"enum": [
"html",
"markdown"
]
},
"metadata_http_response_status_code": {
"description": "Return the target's HTTP status. Default: false.",
"type": "boolean"
},
"metadata_http_response_headers": {
"description": "Return the target's HTTP headers. Default: false.",
"type": "boolean"
},
"ignore_host_errors": {
"description": "Capture even if the site returns 4xx/5xx. Default: false.",
"type": "boolean"
},
"error_on_selector_not_found": {
"description": "Fail if selector / scroll_into_view is missing. Default: false.",
"type": "boolean"
},
"fail_if_request_failed": {
"description": "Fail if a matching sub-request fails.",
"type": "array",
"items": {
"type": "string"
}
},
"fail_if_content_missing": {
"description": "Fail if this text is missing (case-insensitive).",
"type": "array",
"items": {
"type": "string"
}
},
"fail_if_content_contains": {
"description": "Fail if this text is present (case-insensitive).",
"type": "array",
"items": {
"type": "string"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢page_to_markdown(url, html, selector, include_shadow_dom, block_cookie_banners, ...)
Load a URL in a real browser (JavaScript runs) and return its content as Markdown, without scripts and styles. Use selector (e.g. main, article) to keep only the part that matters and save tokens.
入力スキーマ
{
"type": "object",
"properties": {
"url": {
"description": "URL of the site to screenshot.",
"type": "string"
},
"html": {
"description": "HTML to render instead of a URL.",
"type": "string"
},
"selector": {
"description": "CSS selector of the element to capture.",
"type": "string"
},
"include_shadow_dom": {
"description": "Include shadow roots in html/markdown output. Default: false.",
"type": "boolean"
},
"block_cookie_banners": {
"description": "Hide cookie / GDPR banners. Default: false.",
"type": "boolean"
},
"block_banners_by_heuristics": {
"description": "Aggressive heuristic banner removal. Default: false.",
"type": "boolean"
},
"block_chats": {
"description": "Hide chat widgets (Intercom, Crisp, Drift…). Default: false.",
"type": "boolean"
},
"click": {
"description": "Click this selector before capture.",
"type": "string"
},
"scripts": {
"description": "JavaScript executed before capture.",
"type": "string"
},
"wait_until": {
"description": "Navigation events to wait for. Default: load.",
"type": "array",
"items": {
"type": "string",
"enum": [
"load",
"domcontentloaded",
"networkidle0",
"networkidle2"
]
}
},
"wait_for_selector": {
"description": "Wait for this selector to appear.",
"type": "string"
},
"delay": {
"description": "Extra seconds to wait before capture. Default: 0.",
"type": "number",
"minimum": 0,
"maximum": 30
},
"timeout": {
"description": "Total request timeout (s). Up to 90, or 600 with async (render time only). Default: 60.",
"type": "number",
"minimum": 5,
"maximum": 600
},
"navigation_timeout": {
"description": "Navigation timeout (s). Default: 30.",
"type": "number",
"minimum": 1,
"maximum": 30
},
"user_agent": {
"description": "Custom User-Agent.",
"type": "string"
},
"authorization": {
"description": "Authorization header for the target.",
"type": "string"
},
"headers": {
"description": "Extra headers, one per line.",
"type": "array",
"items": {
"type": "string"
}
},
"cookies": {
"description": "Cookies, one per line.",
"type": "array",
"items": {
"type": "string"
}
},
"time_zone": {
"description": "Browser time zone.",
"type": "string",
"enum": [
"America/Chicago",
"America/Denver",
"America/Los_Angeles",
"America/Mexico_City",
"America/New_York",
"America/Santiago",
"America/Toronto",
"America/Vancouver",
"Asia/Kuala_Lumpur",
"Asia/Shanghai",
"Asia/Tashkent",
"Asia/Tokyo",
"Europe/Berlin",
"Europe/Bucharest",
"Europe/Kyiv",
"Europe/Lisbon",
"Europe/London",
"Europe/Madrid",
"Europe/Paris",
"Pacific/Auckland",
"UTC"
]
},
"proxy": {
"description": "Your HTTP proxy (http://user:pass@host:port).",
"type": "string"
},
"ignore_host_errors": {
"description": "Capture even if the site returns 4xx/5xx. Default: false.",
"type": "boolean"
},
"cache": {
"description": "Cache the result and return a CDN URL. Default: false.",
"type": "boolean"
},
"cache_ttl": {
"description": "Cache lifetime in seconds. Default: 14400.",
"type": "number",
"minimum": 14400,
"maximum": 2592000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス