Urlbox MCP Server
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Urlbox MCP ServerTake a screenshot of https://openai.com and hide the cookie banner"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Urlbox MCP Server

MCP server for the Urlbox Screenshot API. Enables your client to take screenshots, generate PDFs, extract HTML/markdown, and more from websites.
Visit Urlbox for more information, and have a read of our docs or chat with your LLM post install to get a good understanding of its options and capabilities.
Setup
Install dependencies and build:
npm install npm run buildGet Urlbox API credentials:
Sign up at urlbox.com
Get your API Secret from the dashboard
Set environment variables:
claude_desktop_config.json
{
"mcpServers": {
"screenshot": {
"command": "npx",
"args": ["-y", "@urlbox/screenshot-mcp"],
"env": {
"SECRET_KEY": "your_api_key_here"
}
}
}
}Related MCP server: Junipr MCP Server
Usage
The server provides a render tool that can:
Take screenshots in multiple formats (PNG, PDF, MP4 and more)
Convert pages to HTML, markdown
Extract metadata and cookies
Save files locally to your downloads with
store_renders: true
Claude will automatically use this when you ask it to screenshot websites or convert web content.
Useful prompts
Take a clean screenshot without ads or cookie banners:
Take a screenshot of https://example.com but block ads and hide cookie bannersScreenshot and save side renders like HTML/markdown:
Take a screenshot of https://example.com and also save it as HTML and markdown. Download the result to my computer.Generate a PDF of the full page:
Convert https://urlbox.com to a PDF and save it to my computer. Make sure to generate a PDF that has an outline and is tagged.Available Tools
2 toolsdownloadC
Takes all of the render URLs from any Urlbox response that hasn't already been downloaded, and saves it to the users file system.
| Name | Required | Description | Default |
|---|---|---|---|
| renderUrl | No | Main render URL to download | |
| htmlUrl | No | HTML URL to download | |
| markdownUrl | No | Markdown URL to download | |
| metadataUrl | No | Metadata JSON URL to download | |
| mhtmlUrl | No | MHTML URL to download | |
| originalOptions | Yes | Original options used for the render to help with filename generation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully explain behavior. It mentions deduplication ('hasn't already been downloaded') and saving to the file system, but lacks details on file naming, location, overwrite behavior, permissions, error handling, or whether all URLs are downloaded simultaneously.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that attempts to cover multiple aspects, but it is somewhat wordy and could be broken into two sentences for clarity. Not overly verbose but not optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and a complex nested parameter (originalOptions). The description does not explain what the tool returns after download, whether it confirms success, or how it handles the many nested options. Missing information about progress, errors, or side effects beyond saving to file system.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add significant meaning beyond the schema; the originalOptions are implied for filename generation but not explained. The individual URL parameters are straightforward based on their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it downloads render URLs from Urlbox responses to the user's file system. It distinguishes from the sibling tool 'render' by indicating it operates on previous responses. However, 'that hasn't already been downloaded' is ambiguous and could be clarified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'render'. The implication that it is used after a render response is not explicit. No when-not or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renderB
Uses Urlbox.com's POST API for advanced rendering with side renders. Download to computer using store_renders: true. Ideal for: use of many options, converting websites to HTML/PDF/markdown, extracting metadata, saving cookies, rendering custom HTML/CSS/JS, and generating multiple output formats simultaneously (html, pdf, md, cookies etc.), while also capturing the main screenshot's format.
| Name | Required | Description | Default |
|---|---|---|---|
| store_renders | No | Flip this to true to save all downloadable render links | |
| url | Yes | The URL or domain of the website you want to screenshot. | |
| html | No | The HTML you want to render if not a URL. | |
| format | No | The output format of the resulting render. | |
| width | No | The viewport width of the browser, in pixels. | |
| height | No | The viewport height of the browser, in pixels. | |
| full_page | No | Specify whether to capture the full scrollable area of the website. | |
| selector | No | Take a screenshot of the element that matches this selector. | |
| clip | No | Clip the screenshot to the bounding box specified by x,y,width,height. | |
| gpu | No | Enable GPU acceleration to render 3D scenes and heavy WebGL content. | |
| block_ads | No | Blocks requests from popular advertising networks from loading. | |
| hide_cookie_banners | No | Automatically hides cookie banners from most websites. | |
| click_accept | No | Attempts to click on the 'Accept' button to accept cookies. | |
| press_escape | No | Attempts to press the Escape (ESC) key before capturing the page. | |
| block_urls | No | Block requests from specific domains from loading. You can use wildcard characters to match subdomains. | |
| block_images | No | Blocks image requests | |
| block_fonts | No | Blocks font requests | |
| block_medias | No | Block video and audio requests | |
| block_styles | No | Prevent stylesheet requests from loading | |
| block_scripts | No | Prevent requests for javascript scripts from loading | |
| block_frames | No | Block frames. | |
| block_fetch | No | Block fetch requests from the target URL. | |
| block_xhr | No | Block XHR requests from the target URL. | |
| block_sockets | No | Block websocket requests. | |
| hide_selector | No | Comma-delimited string of CSS element selectors that are hidden. | |
| js | No | Execute custom JavaScript in the context of the page. | |
| css | No | Inject custom CSS into the page | |
| dark_mode | No | Emulate dark mode on websites by setting prefers-color-scheme: dark | |
| reduced_motion | No | Prefer less animations on websites by setting prefers-reduced-motion: reduced | |
| show_timestamp | No | Shows a timestamp in a header above the rendered screenshot. | |
| show_url | No | Shows a URL in a header above the rendered screenshot. | |
| retina | No | Take a 'retina' or high-definition screenshot, equivalent to setting a device pixel ratio of 2.0. | |
| img_fit | No | How the screenshot should be resized or cropped to fit the dimensions. | |
| img_position | No | How the image should be positioned when using an img_fit of cover or contain. | |
| img_bg | No | Background colour to use when img_fit is contain, or img_pad is used. | |
| img_pad | No | Pad the screenshot, giving it a border. | |
| quality | No | The image quality of the resulting screenshot (JPEG/WebP only) | |
| transparent | No | If a website has no background color set, the image will have a transparent background. | |
| max_height | No | Limit the screenshot to a maximum height. | |
| pdf_page_size | No | Sets the PDF page size. | |
| pdf_page_range | No | Sets the PDF page range to return. | |
| pdf_page_width | No | Sets the PDF page width, in pixels. | |
| pdf_page_height | No | Sets the PDF page height, in pixels. | |
| pdf_margin | No | Sets the margin of the PDF document. | |
| pdf_outline | No | Generates an outline for the PDF. | |
| pdf_tagged | No | Generates a tagged PDF. | |
| pdf_margin_top | No | Sets a custom top margin on the PDF. | |
| pdf_margin_right | No | Sets a custom right margin on the PDF. | |
| pdf_margin_bottom | No | Sets a custom bottom margin on the PDF. | |
| pdf_margin_left | No | Set a custom left margin on the PDF. | |
| pdf_auto_crop | No | Automatically remove white space from PDF. | |
| pdf_scale | No | Sets the scale factor of the website content in the PDF. | |
| pdf_orientation | No | Sets the orientation of the PDF. | |
| pdf_background | No | Sets whether to print background images in the PDF | |
| disable_ligatures | No | Prevents ligatures from being used. | |
| media | No | By default, when generating a PDF, the print CSS media query is used. | |
| pdf_show_header | No | Whether to show the default pdf header on each page of the pdf. | |
| pdf_header | No | Change the default pdf header that is shown on each page of the pdf. | |
| pdf_show_footer | No | Whether to show the default pdf footer on each page of the pdf. | |
| pdf_footer | No | Change the default pdf footer that is shown on each page of the pdf. | |
| readable | No | Make the pdf into a readable document by removing unnecessary elements. | |
| force | No | Generate a fresh render, instead of getting a cached version. | |
| unique | No | Pass a unique string such as a UUID, hash or timestamp. | |
| ttl | No | The duration to keep a render in the cache, in seconds. | |
| proxy | No | Pass in a proxy server address to make screenshot requests via that server. | |
| header | No | Set a header on the request when loading the URL | |
| cookie | No | Sets a cookie on the request when loading the URL. | |
| user_agent | No | Sets the User-Agent string for the request | |
| platform | No | Sets the navigator.platform that the browser will report for the request. | |
| accept_lang | No | Sets an Accept-Language header on requests to the target URL | |
| authorization | No | Sets an Authorization header on requests to the target URL. | |
| tz | No | Emulate the timezone to use when rendering pages. | |
| engine_version | No | Sets the version of the urlbox rendering engine to use. Latest provides the latest bug fixes and features. | |
| certify | No | Creates a hash of the rendered file, timestamp and options providing proof. | |
| delay | No | The amount of time to wait before Urlbox captures a render in milliseconds. | |
| timeout | No | The amount of time to wait for the requested URL to load, in milliseconds. | |
| wait_until | No | Waits until the specified DOM event has fired before capturing a render. | |
| wait_for | No | Waits for the element specified by this selector to be present in the DOM. | |
| wait_to_leave | No | Waits for the element specified by this selector to be absent from the DOM. | |
| wait_timeout | No | The amount of time to wait for the wait_for element to appear. | |
| fail_if_selector_missing | No | Fails the request if the elements specified by selector or wait_for options are not found. | |
| fail_if_selector_present | No | Fails the request if the element specified by wait_to_leave option is found. | |
| fail_on_4xx | No | If true and the requested URL returns a status code between 400 and 499, Urlbox will fail. | |
| fail_on_5xx | No | If true and the requested URL returns a status code between 500 and 599, Urlbox will fail. | |
| scroll_to | No | Scroll, to either an element or to a pixel offset from the top. | |
| click | No | Specifies an element selector to click before generating a screenshot or PDF | |
| click_all | No | Specifies an element selector to click all matching elements. | |
| hover | No | Specifies an element selector to hover over before generating a screenshot or PDF | |
| bg_color | No | Specify a hex code or CSS color string to use as the background color | |
| full_page_mode | No | Whether to use scroll and stitch algorithm or native full page screenshot. | |
| full_width | No | When full_page=true, specify whether to capture the full width of the website. | |
| allow_infinite | No | Override the default behavior to prevent infinite scrolling. | |
| skip_scroll | No | Speed up renders by skipping an initial scroll through the page. | |
| detect_full_height | No | Prevent backgrounds from getting stretched when making a full page screenshot. | |
| max_section_height | No | The maximum height of each image section when taking a full_page screenshot. | |
| scroll_increment | No | Sets how many pixels to scroll when scrolling the page. | |
| scroll_delay | No | The time to wait between taking the screenshots of each individual section. | |
| highlight | No | Specify a string to highlight on the page before capturing a screenshot or PDF. | |
| highlightfg | No | Specify the text color of the highlighted word. | |
| highlightbg | No | Specify the background color of the highlighted word. | |
| latitude | No | Sets the latitude used to emulate the Geolocation API. | |
| longitude | No | Sets the longitude used to emulate the Geolocation API. | |
| accuracy | No | Sets the accuracy of the Geolocation API in metres. | |
| use_s3 | No | Save the render directly to the S3 (or S3-Compatible) bucket configured on your account. | |
| s3_path | No | Sets the S3 path, including subdirectories and the filename. | |
| no_suffix | No | By default, urlbox adds the file extension to the s3_path. | |
| s3_bucket | No | Overrides the configured bucket to use when saving the render. | |
| s3_endpoint | No | Change the endpoint URL to use an S3 compatible storage provider. | |
| s3_region | No | Override the configured S3 region when saving the render. | |
| cdn_host | No | If your custom bucket is fronted by a CDN, you can set the host name here. | |
| s3_storageclass | No | Sets the s3 storage class. | |
| save_html | No | Alongside rendering the main options.format shot, also saves the render as HTML returning a storage URL. | |
| save_metadata | No | Alongside rendering the main options.format shot, also saves render's Metadata returning a storage URL. | |
| save_markdown | No | Alongside rendering the main options.format shot, also saves render as Markdown returning a storage URL. | |
| save_mhtml | No | Alongside rendering the main options.format shot, also saves render as MHTML returning a storage URL. | |
| save_cookies | No | Alongside rendering the main options.format shot, also saves renders used cookies returning a storage URL. | |
| pov | No | Use a Point of View (PoV) to more convincingly and accurately emulate loading a website from a particular location, with better success than many other options here. This lets you view a website as if you were browsing from a less block-prone perspective, such as through a trusted, location-specific, or residential IP. - hidden - The basic level of anonymisation to mask your location (great starting place) - trusted - Using more trusted, reliable networks to get a higher success rate when emulating a country - stealth - Advanced protocols designed to bypass bot detection - premium - Emulates high-quality residential networks for maximum reliability over hidden and trusted - geo - Location-specific access from real devices in your target country This option is not compatible when trying to use authorization or cookies. | |
| pov_country | No | You can also specify a particular country for your PoV by adding a country code such as: us, gb, ca - If we don't have one available, do contact support@urlbox.com and we'll see what we can do. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry the burden. It adds some behavioral info (POST API, side renders, store_renders flag) but lacks details on error handling, rate limits, auth requirements, or conflicts between options. The description is too brief given the tool's complexity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph but front-loaded with core purpose and key option. The list of use cases is somewhat rambling but overall relatively concise for a tool with 118 parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high parameter count and lack of output schema/annotations, the description is insufficiently comprehensive. It does not explain response format, error handling, or how to combine side renders with main output, leaving significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description's generic mention of options (format, html, css, js, saves) adds minimal value beyond the already detailed parameter descriptions in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it uses Urlbox.com's POST API for advanced rendering, mentioning side renders and multiple output formats. It distinguishes from the sibling 'download' tool by noting how to save renders for later download via store_renders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists ideal use cases (e.g., converting websites, extracting metadata, saving cookies) but does not specify when not to use this tool or provide alternatives. No guidance on prerequisites or handling side renders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v1.0.3- First observed
download - First observed
render
TDQS
The two tools, download and render, have clearly distinct purposes: one for rendering websites with advanced options, the other for downloading render URLs to the file system. No ambiguity.
Both tool names are single verbs (download, render), which is consistent within the set. While not following a typical verb_noun pattern, they are uniformly imperative and predictable.
With only 2 tools, the server feels minimal for its stated purpose of website rendering and file downloading. It covers primary actions but lacks supporting tools like listing or deleting renders, making it slightly thin.
The core workflow of rendering and downloading is covered, but there are notable gaps such as status checking, authentication, or render management. The inclusion of download as a separate tool is useful, but overall the surface is incomplete for a full rendering service.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Screenshots, PDFs and Markdown from any URL or HTML for AI agents, via the SnapForge API
Screenshot any URL/HTML as PNG/JPEG/WebP, or read it as clean Markdown/text for LLMs.
Generate images, GIFs, and PDFs from HTML, URLs, or templates — from your AI agent.
Read a URL as clean markdown, screenshot a website, url to PDF. Web access for agents, no signup.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to ScreenshotOne.com API for capturing website screenshots with customizable options including viewport size, full-page captures, and multiple output formats.173MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to capture webpage screenshots, generate PDFs from URLs or HTML, and extract rich metadata like Open Graph and JSON-LD data. It provides tools for web-to-image/PDF conversion and structured data extraction through the Junipr API.151MIT

@rendershot/mcp-serverofficial
AlicenseAqualityDmaintenanceEnables AI agents to capture screenshots and generate PDFs from URLs or HTML via the Rendershot API.4223MIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to capture any public URL as PNG, JPEG, or PDF via REST API or MCP tools, including screenshot capture, page description, and PDF rendering.17MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/urlbox/urlbox-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server