Rendex: Rendering API for Images, PDFs & Content Extraction
Server Details
Render HTML, Markdown, or URLs to images, PDF, or branded artifacts; extract and watch pages.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- copperline-labs/rendex-mcp
- GitHub Stars
- 7
- Server Listing
- rendex-mcp
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.4/5 across 13 of 13 tools scored.
Each tool has a clearly distinct purpose with explicit 'use when' and 'do NOT use' guidance in descriptions. The rendering tools are differentiated by output type (screenshot/PDF, hosted URL, branded artifact, extracted text), and the watch tools follow a patterned CRUD/run/test structure, leaving no ambiguity.
Most tools follow a 'prefix_verb' or 'prefix_verb_noun' pattern (e.g., rendex_screenshot, watch_create), but there are minor inconsistencies: 'render_artifact' lacks the 'rendex_' prefix, and 'watch_runs' is a noun rather than a verb. Overall, the names are still predictable and readable.
With 13 tools, the server is well-scoped. It covers two domains—rendering (5 tools) and monitoring (8 tools)—without unnecessary overlap or excessive complexity. Each tool earns its place in the set.
The rendering side covers screenshots, PDFs, hosted URLs, branded artifacts, and content extraction. The watch side provides full lifecycle management (create, get, list, update, delete), plus immediate runs, run history, and testing. There are no obvious gaps or dead ends in user workflows.
Available Tools
13 toolsrender_artifactRender Branded Artifact (PDF + PNG)ARead-onlyInspect
Use this when the user asks to make or create a branded report, invoice, summary, release notes, or document — or to 'turn this Markdown/HTML into a PDF and PNG' (optionally with a logo or accent color). Do NOT use to screenshot an existing URL (use rendex_screenshot). Turns Markdown or HTML into a branded, downloadable artifact — a PDF, a PNG, and a hosted share page — in one call. Apply a logo, accentColor, font, header, and footer. Returns hosted URLs { pdfUrl, pngUrl, shareUrl, expiresAt }. Each requested format costs 1 render credit.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Optional Mustache data. When present, content is rendered as a logic-less Mustache template (plus the branding fields as {{logo}}/{{header}}/...) before conversion. | |
| font | No | CSS font-family stack for the body (e.g. 'Georgia, serif'). | |
| logo | No | Absolute http(s) URL of a logo image shown in the header. | |
| footer | No | Plain-text footer line shown at the bottom. | |
| header | No | Plain-text header line shown beside the logo. | |
| content | Yes | The Markdown or HTML body to render (up to ~4MB). | |
| formats | No | Which formats to produce. Each costs 1 credit. Default both. | |
| expiresIn | No | Seconds until the hosted URLs expire (3600-2592000). Default 86400 (24h). | |
| pageSetup | No | Optional paper/viewport setup. | |
| accentColor | No | CSS accent color for the bar, links, and headings (e.g. '#EA580C'). | |
| inputFormat | No | How to interpret content. 'markdown' is converted to styled HTML; 'html' is used as a body fragment. | markdown |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds important behavioral context: each requested format costs 1 render credit, and the tool returns hosted URLs (pdfUrl, pngUrl, shareUrl, expiresAt). This goes beyond the annotations and helps agents understand side effects and cost implications.
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 three sentences, front-loaded with the primary use case, followed by an exclusion and the return value summary. Every sentence adds value, and there is no repetition of schema details. It is concise yet comprehensive for orientation.
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 (11 parameters, nested pageSetup object) but a fully documented schema, the description provides enough context for initial selection: it defines the core output (PDF + PNG + share page), mentions branding options, and states the return format and credits. It does not cover every nuance (e.g., Mustache templating, pageSetup defaults), but the schema fills those gaps, making this a complete high-level description.
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 input schema already documents all 11 parameters and nested objects in detail. The description adds minimal parameter info beyond naming logo, accentColor, font, header, and footer as branding fields, which is helpful but not substantial. It does not explain the Mustache templating in the 'data' parameter, but that is covered by 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 the tool's purpose: converting Markdown or HTML into branded PDF/PNG artifacts with logo, accent color, font, header, and footer. It uses specific verbs ('turns', 'create') and explicitly distinguishes itself from rendex_screenshot, preventing confusion with sibling 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 opens with 'Use this when...' and gives concrete triggers (user asks for a branded report, invoice, summary, or to convert Markdown/HTML to PDF/PNG). It also states a clear exclusion: 'Do NOT use to screenshot an existing URL (use rendex_screenshot)', naming the alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rendex_accountCheck Plan & UsageARead-onlyIdempotentInspect
Check the Rendex account: which plan it's on, how many render credits have been used vs. the monthly limit (and when it resets), the per-minute rate limit, and a one-tap link to upgrade to a higher tier. Use this whenever the user asks about their usage, remaining quota, current plan, or how to get more renders / stop hitting limits. Read-only — costs no credits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent, and the description adds valuable behavior context by outlining exactly what information is returned and explicitly stating 'Read-only — costs no credits.' This goes beyond the safety hints, though it does not describe edge cases or failure modes.
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 two sentences, front-loaded with the core purpose, and every clause adds meaningful detail (plan, credits, limit, reset, rate limit, upgrade link, usage cue, credit cost). 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?
With zero parameters, strong annotations, and no output schema, the description covers all necessary context: what the tool checks, what specific data it returns, when to use it, and its safety profile. It fully compensates for the lack of an output schema.
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 description carries no parameter burden. Per guidelines, 0 params earns a baseline of 4, and the description appropriately focuses on the tool's purpose and outputs rather than nonexistent inputs.
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 action ('Check the Rendex account') and enumerates distinct outputs: plan, credit usage vs monthly limit, reset time, per-minute rate limit, and upgrade link. This clearly distinguishes it from sibling tools like render_artifact or watch_list.
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 states when to use it: 'whenever the user asks about their usage, remaining quota, current plan, or how to get more renders / stop hitting limits.' This provides clear context for tool selection and even notes it costs no credits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rendex_extractExtract Reader-Mode ContentARead-onlyInspect
Use this when the user asks to read, extract, get the text/content/article of, or summarize a webpage/URL. Do NOT use for a visual screenshot (use rendex_screenshot). Extracts clean reader-mode content from any webpage as Markdown, JSON, or HTML. Runs the same Chromium render pass as a screenshot, so it captures content after JavaScript runs — handles SPAs that fetch-only readers miss. Strips nav, ads, and boilerplate, returning the article body plus title, byline, and excerpt. Great for feeding page content to an LLM, summarization, or RAG ingestion. Costs 1 render credit per call.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The webpage URL to extract readable content from (a schemeless host like 'example.com' is accepted). | |
| device | No | Device preset that sets viewport, scale factor, and user agent in one shot. E.g. 'iphone_15' to extract the mobile version of a page. | |
| timeout | No | Maximum seconds to wait for page load (5-60). Cloudflare has a 60s hard cap. | |
| blockAds | No | Block ads and trackers before extraction | |
| waitUntil | No | Page readiness event. networkidle2 (default) is best for most sites. Use domcontentloaded for speed, networkidle0 for completeness. | networkidle2 |
| extractFormat | No | Output shape — markdown (default, LLM-friendly prose), json (structured fields: title/byline/excerpt/siteName/length), or html (cleaned reader-mode HTML). | markdown |
| hideSelectors | No | CSS selectors to hide (display:none) before extraction. E.g. ['.modal', '#newsletter-popup'] to remove overlays. Max 50 selectors. | |
| blockCookieBanners | No | Hide common cookie/consent walls (GDPR/CCPA banners) before extraction. A curated selector list, lighter than custom hideSelectors. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description reveals meaningful behavior: it 'Runs the same Chromium render pass as a screenshot, so it captures content after JavaScript runs — handles SPAs that fetch-only readers miss,' and it 'Strips nav, ads, and boilerplate.' It also discloses the cost: 'Costs 1 render credit per call.' No contradiction with annotations.
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 and front-loaded: it begins with the trigger condition, then the exclusion, then the core behavior and output, then use cases and cost. Every sentence adds distinct value — none are generic or repeated. It is structured for quick parsing by an AI agent.
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?
With no output schema, the description compensates by specifying what is returned ('article body plus title, byline, and excerpt') and the formats available (Markdown, JSON, HTML). It also covers important caveats like JavaScript rendering, SPA support, and render credit cost. The parameter schema handles the rest, making this complete.
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% — all 8 parameters have detailed descriptions, so the schema does the heavy lifting. The description adds high-level context (e.g., 'Strips nav, ads, and boilerplate' relating to blockAds/blockCookieBanners) but no parameter-level syntax or format details beyond what the schema already provides. Baseline 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 opens with a specific trigger: 'Use this when the user asks to read, extract, get the text/content/article of, or summarize a webpage/URL.' It clearly names the resource (webpage) and the action (extract reader-mode content), and distinguishes itself from the sibling tool by explicitly directing screenshot requests to rendex_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?
Explicitly states when to use ('when the user asks to read, extract, get the text/content/article of, or summarize a webpage/URL') and when not ('Do NOT use for a visual screenshot (use rendex_screenshot)'). It also provides additional context by mentioning ideal use cases: 'Great for feeding page content to an LLM, summarization, or RAG ingestion.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rendex_render_linkMint Hosted Render URLARead-onlyInspect
Use this when the user wants a reusable, HOSTED image URL — an og:image or a link to embed in an tag — rather than the image bytes. Do NOT use for a one-off inline screenshot (use rendex_screenshot). Renders a URL, raw HTML, or Markdown and gives back a signed, hosted, edge-cached image URL instead of the bytes — ideal for dynamic OG images: drop the URL into or an tag and Rendex serves a cached copy on every share. Takes the same options as rendex_screenshot, plus an optional expiresIn. Returns { url, expiresAt, format, cacheTtl } as JSON. Costs 1 render credit per fresh render; cached repeat hits don't re-charge.
| Name | Required | Description | Default |
|---|---|---|---|
| js | No | Custom JavaScript to execute in the page before capture. Runs in the browser sandbox. Max 50KB. | |
| css | No | Custom CSS to inject into the page before capture. Hide cookie banners, add watermarks, override styles. Max 50KB. | |
| geo | No | ISO 3166-1 alpha-2 country code for geo-targeted capture (e.g., 'US', 'DE', 'JP'). Renders the page as seen from that country. Pro/Enterprise only. Note: CSS/JS injection, cookies, element capture, dark mode, and some other features are not available with geo-targeting. | |
| url | No | The webpage URL to capture (a schemeless host like 'example.com' is accepted). Mutually exclusive with 'html' and 'markdown'. | |
| data | No | Key-value data object for Mustache templating. When provided, the 'html' or 'markdown' string is rendered as a logic-less Mustache template before capture — {{var}} inserts HTML-escaped, {{{var}}} inserts raw, {{#items}}...{{/items}} iterates arrays, {{a.b}} accesses nested fields. Not valid with 'url'. Max 256KB serialized. | |
| html | No | Raw HTML to render and capture. Mutually exclusive with 'url' and 'markdown'. Great for invoices, social cards, email templates, OG images. | |
| delay | No | Milliseconds to wait after page load before capture (useful for JS-rendered content) | |
| width | No | Viewport width in pixels (320-3840) | |
| device | No | Device preset that sets viewport, scale factor, and user agent in one shot. E.g. 'iphone_15' for a mobile screenshot. Overrides width/height/deviceScaleFactor/userAgent. | |
| format | No | Output format — png (lossless), jpeg (smaller), webp (smallest), or pdf (document). Use pdf for invoices, reports, archival. | png |
| height | No | Viewport height in pixels (240-2160) | |
| cookies | No | Cookies to set before capture. Useful for authenticated pages. Max 50 cookies. | |
| geoCity | No | City for more precise geo-targeting (e.g., 'Berlin', 'New York'). Requires 'geo'. | |
| headers | No | Custom HTTP headers to send with the page request. Cannot override Host, Connection, Content-Length, or Transfer-Encoding. | |
| quality | No | Image quality 1-100 (JPEG/WebP only, ignored for PNG/PDF) | |
| timeout | No | Maximum seconds to wait for page load (5-60). Cloudflare has a 60s hard cap. | |
| blockAds | No | Block ads and trackers before capture | |
| darkMode | No | Emulate dark color scheme (prefers-color-scheme: dark) | |
| fullPage | No | Capture the full scrollable page instead of just the viewport | |
| geoState | No | State or region for more precise geo-targeting (e.g., 'California'). Requires 'geo'. | |
| markdown | No | Markdown to render to an image or PDF. Mutually exclusive with 'url' and 'html'. The server converts it to HTML before rendering. Great for reports, release notes, README snapshots, documentation cards. | |
| pdfScale | No | PDF scale factor (0.1-2). Default: 1 | |
| selector | No | CSS selector of a specific element to capture instead of the full page. Useful for OG images, component extraction (e.g. '#hero', '.pricing-card') | |
| expiresIn | No | Seconds until the signed URL expires (60–2592000). Defaults to the server's TTL. | |
| pdfFormat | No | PDF page size. Only used when format='pdf'. Default: A4 | |
| pdfMargin | No | PDF page margins. Only used when format='pdf'. Accepts CSS values. | |
| userAgent | No | Override the browser user agent string. | |
| waitUntil | No | Page readiness event. networkidle2 (default) is best for most sites. Use domcontentloaded for speed, networkidle0 for completeness. | networkidle2 |
| bestAttempt | No | If true (default), capture whatever is rendered on timeout instead of failing. Set to false to get a hard error on timeout. | |
| resizeWidth | No | Downscale the captured image to this width in pixels (16-3840). Aspect ratio is preserved if resizeHeight is omitted. Ignored for PDF. | |
| pdfLandscape | No | PDF landscape orientation. Only used when format='pdf'. | |
| resizeHeight | No | Downscale the captured image to this height in pixels (16-2160). Aspect ratio is preserved if resizeWidth is omitted. Ignored for PDF. | |
| hideSelectors | No | CSS selectors to hide (display:none) before capture. E.g. ['.modal', '#newsletter-popup'] to remove overlays. Max 50 selectors. | |
| waitForSelector | No | CSS selector to wait for before capture. Essential for SPAs (e.g. '.main-content', '#app-loaded') | |
| deviceScaleFactor | No | Device pixel ratio (1 = standard, 2 = retina). Defaults to 2× Retina. | |
| blockCookieBanners | No | Hide common cookie/consent walls (GDPR/CCPA banners) before capture. A curated selector list, lighter than custom hideSelectors. | |
| blockResourceTypes | No | Block specific resource types to speed up capture. E.g. ['font', 'image'] for text-only screenshots. | |
| pdfPrintBackground | No | Print background colors/images in PDF. Default: true |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint, etc.), the description adds valuable behavioral details: it returns a signed, hosted, edge-cached URL; it costs 1 render credit per fresh render and cached hits don't re-charge; and it specifies the JSON return shape. These are meaningful traits not covered by annotations. It does not contradict the readOnlyHint because consuming credits is not a data mutation. A small gap: it doesn't detail caching invalidation or error cases, but the provided context is solid.
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 front-loaded with the primary use case, then explains behavior and costs. It's a few sentences long and each sentence adds new information (when to use, when not, return shape, credit cost). It is efficient but not as tight as a two-sentence description, hence a 4 instead of a 5.
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 (38 params, nested objects, no output schema), the description covers the essential missing context: it explicitly states the return format { url, expiresAt, format, cacheTtl }, the credit cost, and the shared parameter base with rendex_screenshot. This compensates for the absent output schema. It could have mentioned error scenarios or additional limitations, but the inclusion of return shape and caching makes it sufficiently complete for an agent to use 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 coverage is 100%, so the baseline is 3. The description does little to explain individual parameters, only noting it shares options with rendex_screenshot and adds expiresIn. Since every parameter is fully described in the schema, the description doesn't need to add much; it does not actively reduce clarity.
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 tool's purpose: it mints a reusable, hosted image URL rather than returning image bytes. It specifically says 'Use this when the user wants a reusable, HOSTED image URL — an og:image or a link to embed in an <img> tag' and contrasts with the sibling rendex_screenshot, making the tool's identity and differentiation unmistakable.
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?
Usage guidance is explicit: 'Use this when...' for hosted URLs and 'Do NOT use for a one-off inline screenshot (use rendex_screenshot).' It also mentions that it accepts the same options as rendex_screenshot plus expiresIn, giving clear context on when to choose this tool over its sibling. This is a model of when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rendex_screenshotCapture Screenshot or PDFARead-onlyInspect
Use this when the user asks to screenshot, capture, or take a picture of a webpage/URL, or to render raw HTML or Markdown to an image or PDF. Do NOT use to get a reusable hosted image URL (use rendex_render_link) or to make a branded multi-format document (use render_artifact). Captures a screenshot or PDF of any webpage, raw HTML, or Markdown. Supports full-page capture, dark mode, ad blocking, custom viewports, CSS/JS injection, cookie/header injection, PDF output, HTML and Markdown rendering, and progressive fallback for heavy sites. Returns partial renders on timeout by default (bestAttempt mode). Costs 1 render credit per call. Cookie/header injection requires Starter+; geo-targeting requires Pro+.
| Name | Required | Description | Default |
|---|---|---|---|
| js | No | Custom JavaScript to execute in the page before capture. Runs in the browser sandbox. Max 50KB. | |
| css | No | Custom CSS to inject into the page before capture. Hide cookie banners, add watermarks, override styles. Max 50KB. | |
| geo | No | ISO 3166-1 alpha-2 country code for geo-targeted capture (e.g., 'US', 'DE', 'JP'). Renders the page as seen from that country. Pro/Enterprise only. Note: CSS/JS injection, cookies, element capture, dark mode, and some other features are not available with geo-targeting. | |
| url | No | The webpage URL to capture (a schemeless host like 'example.com' is accepted). Mutually exclusive with 'html' and 'markdown'. | |
| data | No | Key-value data object for Mustache templating. When provided, the 'html' or 'markdown' string is rendered as a logic-less Mustache template before capture — {{var}} inserts HTML-escaped, {{{var}}} inserts raw, {{#items}}...{{/items}} iterates arrays, {{a.b}} accesses nested fields. Not valid with 'url'. Max 256KB serialized. | |
| html | No | Raw HTML to render and capture. Mutually exclusive with 'url' and 'markdown'. Great for invoices, social cards, email templates, OG images. | |
| delay | No | Milliseconds to wait after page load before capture (useful for JS-rendered content) | |
| width | No | Viewport width in pixels (320-3840) | |
| device | No | Device preset that sets viewport, scale factor, and user agent in one shot. E.g. 'iphone_15' for a mobile screenshot. Overrides width/height/deviceScaleFactor/userAgent. | |
| format | No | Output format — png (lossless), jpeg (smaller), webp (smallest), or pdf (document). Use pdf for invoices, reports, archival. | png |
| height | No | Viewport height in pixels (240-2160) | |
| cookies | No | Cookies to set before capture. Useful for authenticated pages. Max 50 cookies. | |
| geoCity | No | City for more precise geo-targeting (e.g., 'Berlin', 'New York'). Requires 'geo'. | |
| headers | No | Custom HTTP headers to send with the page request. Cannot override Host, Connection, Content-Length, or Transfer-Encoding. | |
| quality | No | Image quality 1-100 (JPEG/WebP only, ignored for PNG/PDF) | |
| timeout | No | Maximum seconds to wait for page load (5-60). Cloudflare has a 60s hard cap. | |
| blockAds | No | Block ads and trackers before capture | |
| darkMode | No | Emulate dark color scheme (prefers-color-scheme: dark) | |
| fullPage | No | Capture the full scrollable page instead of just the viewport | |
| geoState | No | State or region for more precise geo-targeting (e.g., 'California'). Requires 'geo'. | |
| markdown | No | Markdown to render to an image or PDF. Mutually exclusive with 'url' and 'html'. The server converts it to HTML before rendering. Great for reports, release notes, README snapshots, documentation cards. | |
| pdfScale | No | PDF scale factor (0.1-2). Default: 1 | |
| selector | No | CSS selector of a specific element to capture instead of the full page. Useful for OG images, component extraction (e.g. '#hero', '.pricing-card') | |
| pdfFormat | No | PDF page size. Only used when format='pdf'. Default: A4 | |
| pdfMargin | No | PDF page margins. Only used when format='pdf'. Accepts CSS values. | |
| userAgent | No | Override the browser user agent string. | |
| waitUntil | No | Page readiness event. networkidle2 (default) is best for most sites. Use domcontentloaded for speed, networkidle0 for completeness. | networkidle2 |
| bestAttempt | No | If true (default), capture whatever is rendered on timeout instead of failing. Set to false to get a hard error on timeout. | |
| resizeWidth | No | Downscale the captured image to this width in pixels (16-3840). Aspect ratio is preserved if resizeHeight is omitted. Ignored for PDF. | |
| pdfLandscape | No | PDF landscape orientation. Only used when format='pdf'. | |
| resizeHeight | No | Downscale the captured image to this height in pixels (16-2160). Aspect ratio is preserved if resizeWidth is omitted. Ignored for PDF. | |
| hideSelectors | No | CSS selectors to hide (display:none) before capture. E.g. ['.modal', '#newsletter-popup'] to remove overlays. Max 50 selectors. | |
| waitForSelector | No | CSS selector to wait for before capture. Essential for SPAs (e.g. '.main-content', '#app-loaded') | |
| deviceScaleFactor | No | Device pixel ratio (1 = standard, 2 = retina). Defaults to 2× Retina. | |
| blockCookieBanners | No | Hide common cookie/consent walls (GDPR/CCPA banners) before capture. A curated selector list, lighter than custom hideSelectors. | |
| blockResourceTypes | No | Block specific resource types to speed up capture. E.g. ['font', 'image'] for text-only screenshots. | |
| pdfPrintBackground | No | Print background colors/images in PDF. Default: true |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive, and the description adds meaningful behavioral detail beyond that: it returns partial renders on timeout by default, costs 1 render credit, uses progressive fallback for heavy sites, and requires specific plans for certain features (Starter+ for cookie/header injection, Pro+ for geo-targeting). No contradiction with annotations exists.
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 compact yet information-dense: it front-loads the trigger condition, then gives exclusions, a capability list, then behavior, cost, and access restrictions. Each sentence earns its place, and the structure guides the reader from selection to execution.
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?
Despite having 37 parameters, no output schema, and considerable complexity, this description covers selection criteria, sibling distinctions, key behaviors (bestAttempt, fallback), cost, and plan limitations. The only minor gap is the exact output delivery format, but the tool title and phrasing ('captures a screenshot or PDF') make the return type sufficiently clear for an agent to select and invoke the tool.
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 input schema has 100% parameter coverage with rich per-property descriptions (e.g., Mustache templating for 'data', 'waitUntil' semantics, PDF margin details). The description adds only a high-level capability summary without introducing parameter-level meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
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 opens with explicit trigger phrases ('screenshot, capture, or take a picture of a webpage/URL') and clearly states the tool 'Captures a screenshot or PDF of any webpage, raw HTML, or Markdown.' It also names sibling tools (rendex_render_link, render_artifact) and explains exactly what this tool is NOT for, making distinction among siblings unambiguous.
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 explicit when-to-use guidance ('Use this when the user asks to...') and when-not-to-use guidance with named alternatives ('Do NOT use to get a reusable hosted image URL...'). It also gives operational context: cost per call, plan requirements for cookie/header injection and geo-targeting, and the default bestAttempt fallback behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_createCreate WatchAInspect
Use this when the user asks to monitor, watch, or track a webpage for changes, or to be alerted/notified when a page changes. Do NOT use for a one-time capture (use rendex_screenshot). Creates a Rendex Watch — monitors a URL on a schedule and notifies when it changes (real-Chrome visual diff with a highlighted overlay, an extracted-text diff, or both). An active watch captures its baseline immediately. Returns the created watch as JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The page to monitor (a schemeless host like 'rendex.dev/pricing' is upgraded to https). | |
| name | No | Optional label for the watch. | |
| paused | No | Create the watch paused (no baseline capture or charge until resumed). | |
| diffMode | No | How changes are detected. Default 'both' = a pixel diff (with a highlighted overlay) AND a FULL-PAGE text diff, alerting on either — catches any change, visual or text. 'visual' or 'text' narrow to one signal only. | both |
| aiSummary | No | Pro+ — attach a one-sentence AI 'what changed' summary to each detected change. | |
| threshold | No | Visual sensitivity (0..1). Low (default 0.01) alerts on ANY change, including a small one on a long page (a changed-region test, not a whole-page pixel ratio). 0.06+ = only MAJOR visual changes (whole-page ratio). Text detection is unaffected. | |
| webhookUrl | No | Starter+ — HMAC-signed change-webhook target. | |
| notifyEmail | No | Any plan — send change alerts here. Must be your OWN account email (others are rejected). Defaults to it if omitted. | |
| renderParams | No | Render knobs applied on every check (a subset of the screenshot capture params). | |
| intervalMinutes | No | Check frequency in minutes. Minimum is your plan's floor — Free 1440 (daily), Basic 180, Starter 180, Pro 30, Enterprise 5. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context: 'An active watch captures its baseline immediately' and 'Returns the created watch as JSON.' It also clarifies plan tiers (Pro+, Starter+). The annotations are minimal (readOnlyHint=false, openWorldHint=true, destructiveHint=false), but the description doesn't contradict them and adds useful context about the creation trade-offs, plan-based feature availability (aiSummary Pro+, webhookUrl Starter+, renderParams geo Pro+), and interval minute floors by plan.
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 main description is dense but front-loaded with the primary purpose and the critical sibling distinction. It avoids redundancy with the schema rather than repeating param details. However, it's fairly long and some plan-tier details could arguably live elsewhere. Still, it's well-organized and each sentence adds value.
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 complex 10-parameter tool with a nested renderParams object and no output schema, the description is remarkably complete. The per-plan feature tiers (Free/Basic/Starter/Pro/Enterprise), permission note (notifyEmail must be your own), and key cross-parameter constraints (geo Visual-only limitation, pdf cannot be visually diffed) are all conveyed. The schema itself carries the heavy param-detail burden (100% coverage), and the description supplements it with cross-cutting behavioral context. Given no output schema exists, 'Returns the created watch as JSON' at least signals the return shape.
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 baseline is 3. The description adds value by clarifying the key behavioral differences beyond schema: diffMode default 'both' is explained as alerting on either visual or text to catch any change, threshold semantics ('changed-region test, not a whole-page pixel ratio', 0.06+ means major changes only), paused creates no charge, notifyEmail must be your own account email, and geo renderParams are 'VISUAL-ONLY' (cannot combine with text/both diffMode). This goes beyond the schema's per-parameter comments and compensates well above baseline.
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+resource ('Creates a Rendex Watch') with a clear purpose: monitors a URL on a schedule and notifies when it changes, with explicit diff modes (visual/text/both). It also distinguishes from the sibling 'rendex_screenshot' tool by explicitly stating 'Do NOT use for a one-time capture (use rendex_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?
Extremely explicit usage guidance: 'Use this when the user asks to monitor, watch, or track a webpage for changes, or to be alerted/notified when a page changes.' It provides a clear when-not-to-use with an explicit alternative named (rendex_screenshot for one-time capture). This is textbook usage differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_deleteDelete WatchADestructiveIdempotentInspect
Delete a watch and its run history. Irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The watch ID (UUID). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, but the description adds critical context by specifying that both the watch and its run history are deleted and that the action is 'Irreversible'. This goes beyond the minimal annotation, providing behavioral transparency about the extent and permanence of the operation.
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 extremely concise: two short sentences with no filler. It front-loads the core function ('Delete a watch') and includes the critical caveat ('Irreversible') in the second sentence. 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?
Given the low complexity (one parameter, no output schema) and the strong annotations, the description is nearly complete. It covers the action, scope, and irreversibility. The only minor omission is not mentioning idempotency, but that is already covered by annotations (idempotentHint=true). Overall, sufficient for correct use.
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 schema description covers 100% of the single parameter (id) with a clear explanation. The tool description itself does not add any extra parameter semantics, but given the high schema coverage, a baseline of 3 is appropriate. No new meaning beyond the schema is provided.
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 action ('Delete'), the resource ('a watch'), and the additional scope ('and its run history'). This distinctly identifies the tool as the deletion operation among sibling tools like watch_create, watch_update, and watch_list, leaving no ambiguity.
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 usage by saying 'Delete', but it does not explicitly state when to use this tool versus alternative actions like disabling a watch or seeking a soft-delete option. No exclusions or alternatives are mentioned, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_getGet WatchARead-onlyIdempotentInspect
Fetch one watch by ID, including its current baseline image URL and status. Returns JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The watch ID (UUID). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it read-only, idempotent, and non-destructive, so the description need not repeat those. It adds useful context by specifying that the response is JSON and includes the current baseline image URL and status, which are not in the annotations.
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 verb and object, states the key output fields, and includes the response format. There is no wasted wording or unnecessary detail.
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 single-parameter read operation, the description is sufficiently complete: it identifies the input, the output format, and the key fields returned. Error behavior is not mentioned, but given the simplicity and strong annotations, this is a minor gap.
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 input schema has 100% coverage and already explains that 'id' is a UUID. The description adds no additional semantic meaning beyond repeating the ID reference, so the baseline score of 3 is appropriate.
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 uses a specific verb and resource ('Fetch one watch by ID') and clarifies scope ('one watch') and key outputs ('baseline image URL and status'). This clearly distinguishes it from sibling tools like watch_list, which would fetch multiple watches.
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 clearly implies the tool is for retrieving a single watch by its ID, which is the correct context. It does not explicitly name alternatives or when-not-to-use, but the singular 'one watch by ID' provides adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_listList WatchesARead-onlyIdempotentInspect
List your watches (newest first), optionally filtered by status and paged. Returns { items, nextCursor }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (1–100). | |
| cursor | No | Pagination cursor from a previous nextCursor. | |
| status | No | Filter by status. | all |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds useful behavioral context: ordering ('newest first') and return shape ('Returns { items, nextCursor }'), but these are modest additions beyond what annotations convey.
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 two sentences, front-loaded with the action verb 'List', and includes only essential details (ordering, filtering, pagination, return shape). 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?
For a simple list tool with robust annotations and full schema coverage, the description is complete. It specifies the return shape ({ items, nextCursor }) and pagination behavior, which is sufficient given no output schema. The sibling tool names provide additional context for differentiation.
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 input schema has 100% description coverage, with all three parameters (limit, cursor, status) already explained. The description mentions 'filtered by status' and 'paged' but adds no extra meaning beyond the schema, so the baseline of 3 is appropriate.
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 uses a specific verb+resource construction: 'List your watches' with added scope ('newest first', 'optionally filtered by status and paged'). It clearly distinguishes itself from sibling tools like watch_get (single watch) and watch_runs.
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 clear context for when to use the tool: listing watches with optional filtering and pagination. However, it does not explicitly mention alternatives or exclusions (e.g., 'for a single watch, use watch_get'), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_runRun Watch NowAInspect
Run an immediate check now (charges 1 credit). Returns the queued run; poll watch_runs for the result or receive a watch.changed webhook.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The watch ID (UUID). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only signal non-read-only, non-idempotent, non-destructive), the description discloses critical behaviors: the operation charges 1 credit, and it returns a 'queued run' rather than the final result, meaning the actual result must be obtained via polling or webhook. This async behavior and cost implication are essential and not present in annotations.
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 with no filler. It packs the action, cost, immediate return, and follow-up retrieval method into one concise statement.
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 one-parameter tool with no output schema, the description is complete: it explains what it does, what it returns (queued run), how to get the actual result (poll or webhook), and the cost. No important behavioral aspect is left unexplained.
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% with the id parameter well-described as 'The watch ID (UUID)'. The tool description does not add any additional parameter meaning, but given full schema coverage, the baseline of 3 is appropriate.
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 action: 'Run an immediate check now', identifying the specific resource (a watch run) and scope (immediate). It distinguishes itself from sibling tools by noting you must 'poll watch_runs for the result', which differentiates the triggering action from the retrieval action.
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 conveys clear usage context: this is for running an immediate on-demand check, as opposed to scheduled or automated runs. It also guides the next step by pointing to watch_runs or webhook for result retrieval, but it does not explicitly state when not to use this tool or name direct alternatives like watch_test.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_runsList Watch RunsARead-onlyIdempotentInspect
Read a watch's run history (newest first), paged. Each run includes changed, diffScore, and signed before/after/overlay image URLs. Returns { items, nextCursor }.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The watch ID (UUID). | |
| limit | No | Page size (1–100). | |
| cursor | No | Pagination cursor from a previous nextCursor. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds substantial context beyond the annotations: it specifies that runs are ordered newest-first, paged, and details the content of each run (changed, diffScore, signed image URLs) plus the response structure { items, nextCursor }. This provides a clear picture of behavior without contradicting the annotations.
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 three sentences, front-loaded with the core purpose, and includes only relevant details about content and response shape. No word is wasted.
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 read-only paginated list tool with no output schema, the description covers the essential return structure and element fields. It specifies ordering, paging, and the cursor mechanism. Given the richness of annotations and schema, this is complete.
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 input schema documents all three parameters (id, limit, cursor) with descriptions, achieving 100% coverage. The description references pagination via the nextCursor return but does not add new meaning to the parameters beyond what the schema already provides. Thus the baseline of 3 for high schema coverage is appropriate.
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 uses the specific verb 'Read' to identify the operation, clearly specifies the resource as 'a watch's run history', and includes ordering and paging behavior. It distinguishes from siblings like watch_list (which likely lists watches) and watch_get (which gets a single watch) by focusing on run history.
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 does not explicitly state when to use this tool vs alternatives, nor provide any exclusions or alternative tool references. However, the function is clear from the description and sibling tool names, making usage context implied. There is no explicit guidance for selecting between watch_run, watch_get, and watch_runs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_testTest Watch Config (dry-run)ARead-onlyInspect
Dry-run a watch config BEFORE creating it — render the proposed config once and report what was captured + whether the page is reachable (and the text a text-watch would compare). Creates no watch, no baseline, no diff. Use this to validate a selector/scope/identity first. Returns JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The page to monitor (a schemeless host like 'rendex.dev/pricing' is upgraded to https). | |
| name | No | Optional label for the watch. | |
| paused | No | Create the watch paused (no baseline capture or charge until resumed). | |
| diffMode | No | How changes are detected. Default 'both' = a pixel diff (with a highlighted overlay) AND a FULL-PAGE text diff, alerting on either — catches any change, visual or text. 'visual' or 'text' narrow to one signal only. | both |
| aiSummary | No | Pro+ — attach a one-sentence AI 'what changed' summary to each detected change. | |
| threshold | No | Visual sensitivity (0..1). Low (default 0.01) alerts on ANY change, including a small one on a long page (a changed-region test, not a whole-page pixel ratio). 0.06+ = only MAJOR visual changes (whole-page ratio). Text detection is unaffected. | |
| webhookUrl | No | Starter+ — HMAC-signed change-webhook target. | |
| notifyEmail | No | Any plan — send change alerts here. Must be your OWN account email (others are rejected). Defaults to it if omitted. | |
| renderParams | No | Render knobs applied on every check (a subset of the screenshot capture params). | |
| intervalMinutes | No | Check frequency in minutes. Minimum is your plan's floor — Free 1440 (daily), Basic 180, Starter 180, Pro 30, Enterprise 5. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful context beyond annotations by stating the dry-run renders once, reports what was captured and page reachability, and explicitly 'Creates no watch, no baseline, no diff' — clarifying the ephemeral, side-effect-free nature. It doesn't detail rate limits or render cost, but given annotations already carry the read-only burden, the added behavioral context is solid.
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 compact — roughly three sentences — and front-loads the core purpose ('Dry-run a watch config BEFORE creating it'). It efficiently conveys the behavioral guarantees and intended use in short, scannable sentences. Slightly verbose with 'report what was captured + whether the page is reachable (and the text a text-watch would compare)' but still earned content.
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?
This is a complex tool (10 top-level params, nested renderParams object with ~25 sub-properties, many enum and min/max constraints) yet the description, combined with the fully-documented schema (100% coverage) and clear annotations, gives complete context. The description appropriately flags that it returns JSON and emphasizes the dry-run nature, which is the key operational fact an agent needs. Nothing critical is missing given the rich schema and annotation support.
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 parameters are fully documented in the schema itself. The description does not add parameter-specific semantics beyond what the schema provides — no extra guidance on how url, diffMode, or renderParams interplay in the dry-run context. Per the rubric, with >80% coverage baseline is 3, and the description adds no additional param insight, so a 3 is appropriate.
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?
Description uses a specific verb+resource ('Dry-run a watch config BEFORE creating it — render the proposed config once and report what was captured + whether the page is reachable'). It clearly distinguishes from watch_create (which actually creates) and render/screenshot siblings by emphasizing it's a validation/dry-run that creates nothing. The phrase 'Use this to validate a selector/scope/identity first' reinforces the pre-flight purpose.
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?
Description explicitly states when to use it ('Dry-run a watch config BEFORE creating it', 'Use this to validate a selector/scope/identity first') and what it does NOT do ('Creates no watch, no baseline, no diff'), which effectively draws the boundary against watch_create and watch_run siblings. This gives clear when-to-use and when-not-to context without needing to name alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_updateUpdate WatchAIdempotentInspect
Update a watch in place — pause/resume (paused), re-point (url), change schedule/diff/notify settings, or turn a channel off (webhookUrl/notifyEmail = null). Only the fields you send change; renderParams is deep-merged over the existing config. A scope change (url/selector/fullPage/size/device) re-baselines on the next check. Returns the updated watch as JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The watch ID (UUID) to update. | |
| url | No | Re-point to a new URL (clears the baseline; the next check re-baselines). | |
| name | No | Rename the watch (null to clear). | |
| paused | No | true to pause the watch, false to resume. | |
| diffMode | No | Change what counts as a change. | |
| aiSummary | No | Pro+ — toggle the one-sentence AI 'what changed' summary on each detected change. | |
| threshold | No | Change the visual-change noise floor (0..1). | |
| webhookUrl | No | Starter+ — set or replace the change-webhook target; null to turn it off. | |
| notifyEmail | No | Set the alert email (your account email only); null to turn it off. | |
| renderParams | No | Render knobs to deep-merge over the existing capture config. | |
| intervalMinutes | No | New check frequency in minutes (subject to your plan's floor). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish readOnly=false, destructive=false, idempotent=true; the description adds meaningful behavioral details beyond that: renderParams deep-merge semantics, scope-change re-baselining, and null values disabling channels. This goes beyond what annotations provide.
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 compact sentences; the first sentence front-loads the tool's purpose and key actions, the second clarifies update semantics, the third covers re-baselining and return value. No redundant content.
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 an 11-parameter tool with nested objects, the description covers the essential behavioral contract: partial update, merge behavior, re-baselining, and return type. It doesn't enumerate every parameter, but the schema already does; the description adds the higher-level logic needed to use the tool 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?
The schema already documents all 11 parameters with 100% coverage. The description adds cross-cutting semantic context that the schema cannot: partial-update behavior ('Only the fields you send change'), deep-merge for renderParams, and the re-baseline trigger for scope-related params. This is a slight but real lift above the schema baseline.
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 opens with a specific verb ('Update') and resource ('a watch'), enumerating concrete update actions (pause/resume, re-point, change settings, turn off channels). This clearly distinguishes it from sibling tools like watch_create and watch_delete.
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 establishes it as the in-place modification tool for existing watches, with explicit semantics for partial updates ('Only the fields you send change'). It does not explicitly name alternative tools, but the 'in place' framing and update verb make the usage context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityCmaintenanceProvides functionality to fetch and transform web content in various formats (HTML, JSON, plain text, and Markdown) through simple API calls.Last updated98,5451MIT
- Alicense-qualityBmaintenanceFetches and renders web pages using a headless Chromium browser, returning clean Markdown or HTML content even for JavaScript-heavy single-page applications.Last updated374MIT
- Alicense-qualityDmaintenanceProvides advanced web scraping with HTTP client, smart content extraction to Markdown, browser automation via Playwright, screenshot/PDF generation, and Docker sandbox execution environments.Last updated1MIT

EnConvert MCP Serverofficial
Alicense-qualityBmaintenanceEnables AI agents to convert files, render web pages to markdown/PDF/screenshots, search the live web, extract structured data, ingest RAG-ready chunks, and monitor pages for changes through a single API key.Last updated1322MIT
Your Connectors
Sign in to create a connector for this server.