Shotkiln
Server Details
Screenshot, PDF and Open Graph image API for AI agents: capture pages, render PDFs, make OG images.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 3 tools
Each tool produces a distinct artifact type (OG PNG card, PDF, screenshot), so the boundaries are largely clear. The only mild overlap is render_pdf and take_screenshot, which both accept a public URL and return a rendered result differing only in output format.
All names are snake_case verb_noun constructions (generate_og_image, render_pdf, take_screenshot), which is predictable and readable. The leading verbs vary (generate/render/take) rather than sharing one convention, but the pattern is still consistent enough to scan quickly.
Three tools is lean but proportionate for a focused rendering service covering its three output formats. It is slightly thin, since there is no generic image/HTML rendering option, but no tool feels redundant.
The surface covers the core output types of a rendering service: social card, PDF, and screenshot. Minor gaps exist (screenshot only accepts public URLs and there's no HTML-to-image path or options for sizing/format), but these are workable around.
Available Tools
3 toolsgenerate_og_imageGenerate an Open Graph imageBRead-onlyInspect
Generate a 1200x630 PNG social card (og:image) from a template and text.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Site/brand name shown on the card | |
| theme | No | dark | |
| title | Yes | ||
| accent | No | Hex colour, e.g. #ff5a1f | |
| subtitle | No | ||
| template | No | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=false, so the safety profile is already covered by structured data. The description adds only the output format (1200x630 PNG), which is genuinely useful given there is no output schema, but says nothing about determinism, caching, hosting/URL return, or whether repeated calls reuse the same asset.
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?
A single dense sentence with the output artifact and its dimensions front-loaded and zero filler. Every clause 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 6-parameter generator with no output schema, the description usefully pins down the produced image but leaves half the styling parameters unexplained and never states whether a URL, file path, or binary is returned. Adequate but with clear gaps.
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 only 33% across 6 parameters, so the description carries a compensation burden it does not meet. It references 'template and text', loosely covering only template and title; site, theme, accent, and subtitle are left to the schema's bare enum/type declarations.
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?
Names a specific verb (generate) and a precisely specified resource: a 1200x630 PNG social card (og:image). The output format and dimensions make the artifact unambiguous, though it never distinguishes itself from render_pdf or take_screenshot, which are adjacent image-producing siblings.
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?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives such as render_pdf or take_screenshot. The agent must infer from the name and the og:image reference that this is for social preview cards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_pdfRender a PDFARead-onlyInspect
Render a public web page (url) or raw HTML (html) to PDF. Returns the PDF as an embedded resource.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| html | No | Raw HTML (max 1 MB); use instead of url | |
| format | No | A4 | |
| margin | No | CSS length for all sides, e.g. 10mm, 0.5in | 10mm |
| landscape | No | ||
| print_background | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds two facts the annotations do not carry: the output is delivered as an embedded resource (important since there is no output schema), and only public pages are renderable, which warns an agent off authenticated URLs.
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 tight sentences, input modes stated first and the return shape second, with no filler. Every clause carries information.
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?
Because there is no output schema, the embedded-resource sentence usefully covers the return value, and the public-page constraint covers access scope. However, for a 6-parameter tool with 33% description coverage, there is no guidance on page-load behavior (JS execution, timeouts) or on the rendering options, leaving meaningful gaps.
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 only 33%, so the description should compensate but does not: format, landscape, and print_background are undocumented anywhere, and margin/format semantics are absent from the description. Only url vs html are addressed, and html's 1 MB cap lives in the schema rather than the description.
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?
States a specific verb and resource ('Render ... to PDF') with both accepted inputs, so an agent can distinguish it from take_screenshot and generate_og_image purely by the PDF output. It stops short of naming those siblings explicitly, so the differentiation is inferred rather than stated.
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?
'url or raw HTML' implies the two mutually exclusive input modes, and 'public web page' hints at a scope limit. There is no explicit when-to-use-this-vs-alternatives guidance and no statement of when-not to use it, leaving selection against the screenshot/image siblings to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_screenshotScreenshot a web pageBRead-onlyInspect
Capture a screenshot of a public web page (http/https). Returns the image. Private/internal addresses are refused.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) URL to capture | |
| delay | No | Extra wait after load, ms | |
| width | No | ||
| format | No | png | |
| height | No | ||
| scroll | No | With full_page: scroll through the page first so images that load on scroll appear. Set false to skip. | |
| dark_mode | No | ||
| full_page | No | Capture the whole page, up to 16384 px tall | |
| device_scale_factor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint and openWorldHint, so the bar is lower, but the description still adds two genuinely useful behaviors: it returns an image (relevant because there is no output schema) and it refuses private/internal addresses, an operational/security constraint an agent must know to avoid failed calls. Failure modes, timeouts, and rate limits are still unstated, so it is not a 5.
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?
Three short sentences with zero filler; the core capability, the return value, and the input restriction are each front-loaded in order of importance.
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 9-parameter tool with no output schema and low schema description coverage, the description says almost nothing about the available controls (page size, format, full-page capture, delay) that distinguish calls. An agent can call the minimum viable form but cannot use the tool knowledgeably.
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 only 44% across 9 parameters, yet the description mentions no parameters at all. Five parameters (width, height, format, dark_mode, device_scale_factor) are undocumented by both schema and description, so the description does not compensate for the coverage gap.
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?
States a specific verb and resource ("Capture a screenshot of a public web page") plus the accepted scheme (http/https), which is unambiguous and immediately actionable. It does not differentiate itself from its siblings render_pdf or generate_og_image, so it stops short of a 5.
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?
There is no guidance on when to choose this tool over render_pdf or generate_og_image, and no mention of prerequisites beyond the public-URL restriction. Usage is only implied by the tool name and the input constraint.
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.
1 tool update
- Changed
take_screenshot2 fields changed- added
Input schema / properties / full_page / descriptionAdded value: +"Capture the whole page, up to 16384 px tall" - added
Input schema / properties / scrollAdded value: +{ + "default": true, + "description": "With full_page: scroll through the page first so images that load on scroll appear. Set false to skip.", + "type": "boolean" +}
3 tool updates
- First observed
generate_og_image - First observed
render_pdf - First observed
take_screenshot
Related MCP Connectors
Screenshot API for AI agents. Any public page as image or PDF, banners hidden, 227 countries.
Screenshot, PDF and HTML-to-image rendering API so Claude and Cursor can see any web page.
Screenshot, PDF and HTML-to-image rendering API so Claude and Cursor can see any web page.
Screenshot any public web page from an AI agent. Free without signup, or with an API key.
Related MCP Servers
- AlicenseAqualityBmaintenanceCapture screenshots, generate PDFs, and render HTML to images via AI agents. Supports batch capture, geo-targeting, async webhooks, and CSS/JS injection.1149 npm6MIT
- AlicenseAqualityAmaintenanceScreenshot, visual-diff, and AI page-analysis API for AI agents. Capture any URL as PNG, JPEG, WebP, PDF, or HTML, diff two versions of a page to catch visual regressions, and get an AI summary of what a page contains.343 npm1MIT
- AlicenseNot gradedqualityDmaintenanceHosted, SSRF-safe, cached screenshots and Open Graph images for AI agents - no headless Chrome to run.9 npmMIT
- AlicenseAqualityBmaintenanceGive AI agents eyes on any web page: pixel-perfect screenshots, print-ready PDFs, branded OG images, code images, and structured page extraction (JSON or Markdown).711 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.