screenshotapi-mcp
Click 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., "@screenshotapi-mcpTake a screenshot of https://example.com"
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.
ScreenshotAPI MCP Server
An MCP (Model Context Protocol) server for ScreenshotAPI — capture screenshots, extract page content as Markdown, and manage your account from any MCP-compatible AI agent.
Tools
Tool | Description |
| Capture a screenshot of any URL with full control over viewport, device emulation, format, and blocking options |
| Capture a specific CSS selector on a page — great for headers, articles, or widgets |
| Render a page and return its content as clean Markdown |
| Check your account quota, credits balance, and feature entitlements |
| Retrieve a screenshot job by ID (for polling async jobs) |
Related MCP server: Latchshot for Gemini CLI
Quick Start
Run directly with npx — no installation needed:
SCREENSHOTAPI_KEY=your_api_key npx --yes screenshotapi-mcpClaude Desktop Configuration
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"screenshotapi": {
"command": "npx",
"args": ["--yes", "screenshotapi-mcp"],
"env": {
"SCREENSHOTAPI_KEY": "sk_live_your_api_key_here"
}
}
}
}Other MCP Clients
Any MCP client can connect via stdio. Run the server directly:
SCREENSHOTAPI_KEY=your_api_key node build/index.jsEnvironment Variables
Variable | Required | Description |
| Yes | Your ScreenshotAPI API key ( |
| No | API base URL (default: |
Get your API key at screenshotapi.tech/dashboard.
Building from Source
git clone https://github.com/your-org/screenshotapi-mcp.git
cd screenshotapi-mcp
npm install
npm run build
SCREENSHOTAPI_KEY=your_key node build/index.jsLicense
MIT
Available Tools
5 toolscapture-elementA
Capture a specific element on a page by CSS selector. Useful for capturing headers, articles, widgets, or any identifiable DOM element without rendering the entire page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the page containing the element | |
| delay | No | Milliseconds to wait before capturing | |
| width | No | Viewport width in pixels | |
| format | No | Output image format | png |
| height | No | Viewport height in pixels | |
| quality | No | Image quality (1-100) | |
| timeout | No | Page load timeout in milliseconds | |
| selector | Yes | CSS selector of the element to capture (e.g. '.hero', '#main-content', 'article') | |
| block_ads | No | Block advertisements | |
| dark_mode | No | Force dark mode on the page | |
| block_trackers | No | Block tracking scripts | |
| block_cookie_banners | No | Block cookie consent banners |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only states the purpose and the efficiency aspect (not rendering entire page). It does not disclose what happens if the selector is not found, whether it waits for the element, or any side effects. The description adds almost nothing beyond the schema, which already documents parameters.
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, front-loaded sentence that immediately states the action and purpose. Every word contributes to the tool's function, with no filler or redundancy.
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 tool's complexity (12 parameters, 2 required, no output schema, no annotations), the description is minimal. It does not explain return behavior (presumably an image), error handling, or constraints like element visibility. An agent might need more guidance on how to use it correctly, such as whether the element must be in the viewport or if scrolling is handled.
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 every parameter already has a description. The tool description itself does not add any extra meaning about parameters, so the baseline 3 applies. It does not clarify relationships between parameters or typical usage patterns.
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 states exactly what the tool does: capture an element via CSS selector, with concrete examples (headers, articles, widgets). It also differentiates itself by noting it avoids rendering the entire page, which hints at its distinct role among siblings like render-screenshot and get-screenshot.
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 gives clear usage context: when you need a specific DOM element like a header or widget. It does not explicitly name alternatives or state when not to use it, but the phrase 'without rendering the entire page' implies a contrast with full-page capture tools, providing context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-to-markdownA
Render a webpage and return its content as clean Markdown. Useful for extracting readable text from any URL for analysis, summarization, or data processing.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the page to convert to Markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It mentions 'render a webpage' but does not explain potential failures (JS-dependent pages, timeouts, rate limits) or whether output is synchronous. This leaves the agent without important operational expectations.
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?
Two purposeful sentences with no filler. The primary action and purpose are stated first, and the use cases follow. Every word contributes to the agent's understanding, achieving ideal succinctness.
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 simplicity (one parameter, no output schema, no nested objects), the description is largely complete. It communicates the goal and typical uses. However, because there are no annotations, a mention of expected behavior on dynamic content would make it fully robust. Still, it is adequate for straightforward invocation.
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% (the single 'url' parameter is documented as 'URL of the page to convert to Markdown'). The description adds no additional meaning beyond the schema, so it meets the baseline but does not exceed it. Since it is a single well-described parameter, this is acceptable.
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?
Clearly states the verb (render/convert) and resource (webpage to Markdown). The phrase 'clean Markdown' adds specificity. It is easily distinguishable from sibling tools that focus on screenshots or usage, and no ambiguity exists about what the tool accomplishes.
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?
Provides use-case context ('extracting readable text... for analysis, summarization, or data processing') but does not explicitly contrast with alternatives like render-screenshot or get-screenshot. It implies when to use but omits any when-not guidance. A clear exclusion would strengthen this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-screenshotA
Retrieve a screenshot job by its ID. Use this to poll async jobs or retrieve previously captured screenshots.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The screenshot job ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It clearly implies a read operation ('retrieve') and mentions polling, but does not describe error handling, return format, or whether the response is a status vs. image data. It is accurate but lacks depth for a tool with no output schema.
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 front-loads the core action and then adds usage context. Zero waste, every word earns its place.
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?
For a simple get-by-id operation, the description covers the action and usage, but with no output schema, it leaves the agent wondering about return values (e.g., does it return the image, a status, or a URL?) and error conditions. This is a meaningful gap for a polling tool, so it is merely adequate.
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 the parameter is fully documented as 'The screenshot job ID to retrieve.' The description adds context about polling, but adds no extra meaning to the id parameter itself. Baseline of 3 applies.
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 states a specific verb ('Retrieve') and resource ('screenshot job'), and clarifies it is for polling async jobs or retrieving prior captures. This clearly distinguishes it from sibling creation tools like render-screenshot and capture-element.
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?
Explicitly tells when to use it (poll async jobs, retrieve previously captured screenshots), which gives clear context. It does not explicitly name alternatives or when-not-to-use, but the sibling names make the distinction obvious, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-usageA
Check your ScreenshotAPI account usage — remaining screenshots, credits balance, plan details, and feature entitlements.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry full behavioral disclosure. It implies a read-only operation but does not mention authentication requirements, rate limits, or that no side effects occur. The description is sufficient for a basic read tool but lacks extra transparency about potential constraints.
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 front-loads the main action ('Check your ScreenshotAPI account usage') and efficiently lists the key outputs in a dash-delimited series. There is no redundancy or filler.
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 zero parameters and no output schema, the description provides a reasonable enumeration of what the tool reports (remaining screenshots, credits, plan details, feature entitlements). It does not specify the exact return format (e.g., JSON structure), but for a simple account-usage check this is mostly sufficient. A minor gap is the lack of mention of how data is returned.
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?
The tool has zero parameters, so the baseline is 4 per the rubric. The description adds context about what the returned information covers (remaining screenshots, credits balance, etc.), which is helpful even though it is not parameter-related. No further parameter semantics are needed.
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 the verb 'Check' and resource 'ScreenshotAPI account usage', enumerating specific data points (remaining screenshots, credits balance, plan details, feature entitlements). It unambiguously distinguishes this from sibling tools that render or capture screenshots.
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 implies this tool is for account status inquiries but does not explicitly state when to use it over siblings or provide any exclusions. Since siblings are all screen-capture related, an agent can infer the purpose, but no explicit guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render-screenshotB
Capture a screenshot of any website URL. Returns the image URL, dimensions, and file size. Supports device emulation, dark mode, ad/cookie/tracker blocking, geo-targeting, and full-page captures.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the website to screenshot | |
| delay | No | Milliseconds to wait before capturing | |
| width | No | Viewport width in pixels | |
| device | No | Device emulation preset (sets viewport + scale + touch + user agent) | |
| format | No | Output image format | png |
| height | No | Viewport height in pixels | |
| country | No | Country code for geo-targeted rendering (Pro+ plans only) | |
| quality | No | Image quality (1-100, applies to jpeg/webp) | |
| timeout | No | Page load timeout in milliseconds | |
| wait_for | No | When to consider the page ready | networkidle0 |
| block_ads | No | Block advertisements | |
| dark_mode | No | Force dark mode on the page | |
| full_page | No | Capture the full scrollable page | |
| block_trackers | No | Block tracking scripts | |
| block_cookie_banners | No | Block cookie consent banners |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions the return format and lists supported features (device emulation, dark mode, ad/cookie/tracker blocking, geo-targeting, full-page), which is helpful. However, it does not disclose any potential failures, auth requirements, rate limits, or the nature of the returned URL (e.g., temporary vs. permanent), leaving gaps in behavioral context. It is adequate but not thorough.
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 concise, with two sentences that front-load the primary action and return info. It avoids redundancy and is easy to scan. It could be slightly more structured (e.g., separating features), but it is efficient and clear.
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 tool has 15 parameters and no output schema, the description provides only a high-level overview. It fails to mention how it differs from the sibling 'get-screenshot', which is critical for tool selection. It also does not mention any constraints (e.g., URL accessibility, authentication) or elaborate on the returned image URL's properties. This incompleteness leaves an agent uncertain about when and how to use it correctly.
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 references many features that map to parameters (e.g., dark_mode, block_ads, country, full_page), but these are already well-described in the schema. The description adds little semantic value beyond grouping these features together; it does not clarify any parameter's deeper behavior or edge cases.
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 the verb 'Capture' and the resource 'screenshot of any website URL', and also mentions the return values (image URL, dimensions, file size). However, it does not differentiate from the sibling tool 'get-screenshot', which likely performs a similar function, so it loses a point for not distinguishing between similar tools.
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 provides no guidance on when to use this tool versus alternatives like 'get-screenshot' or 'capture-element'. It simply states what it does without any context on selection criteria, prerequisites, or exclusions. An agent would have no basis to choose this over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Tools are mostly distinct: render-screenshot captures full pages, capture-element targets specific DOM elements, convert-to-markdown extracts text, get-screenshot retrieves by ID, and get-usage is account-related. The only minor overlap is between the two capture tools, but their descriptions clearly differentiate full-page vs. element capture.
All tool names follow a consistent verb-noun pattern with hyphenated lowercase (render-screenshot, capture-element, convert-to-markdown, get-usage, get-screenshot). The verbs clearly indicate actions, and the nouns identify the object, making the naming predictable and easy to infer.
With 5 tools, the server is well-scoped for a screenshot utility. Each tool serves a distinct purpose without redundancy, covering the core capture, retrieval, conversion, and account management needs. This count is appropriate and not overwhelming or thin.
The tool surface covers the primary workflow: capturing screenshots (full-page and element), converting to markdown, retrieving past captures, and checking usage. Minor gaps exist, such as no tool for listing all captures or deleting them, but these are not essential for the core screenshot API functionality and can be worked around.
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
Read a URL as clean markdown, screenshot a website, url to PDF. Web access for agents, no signup.
Scrape, crawl and search the web for AI agents via MCP.
Screenshot any URL/HTML as PNG/JPEG/WebP, or read it as clean Markdown/text for LLMs.
Related MCP Servers
- 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
- AlicenseNot gradedqualityBmaintenanceProvides two MCP tools (capture_page and get_usage) that let Gemini CLI capture public web pages as PNG/JPEG/PDF and check render quota, all via a hosted Streamable HTTP endpoint without local browser.MIT
- FlicenseNot gradedqualityBmaintenanceEnables MCP-compatible AI clients to extract live web content and convert it into structured Markdown for LLM ingestion, RAG pipelines, and agentic workflows.
- AlicenseAqualityAmaintenanceEnables MCP-capable agents to render HTML, Markdown, or URLs to PDF/PNG, perform PDF operations, process images, and manage API keys and usage via natural language.213204MIT
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/dhanavathsrikanth/screenshotapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server