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 60, Pro 30, Enterprise 5. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so mutation is communicated. The description adds behavioral context beyond annotations: the watch runs on a schedule, notifies upon changes, captures a baseline immediately, and returns JSON. It doesn't contradict annotations. It lacks details on cost or lifecycle but provides useful transparency for a mutation tool.
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 four sentences: usage trigger, exclusion with alternative, core function with details, and return format. It is front-loaded, each sentence adds distinct value, and there is no filler or repetition.
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 (10 params, nested object, no output schema), the description adequately covers purpose, usage, a concise explanation of diff modes (visual/text/both), and the return type. It doesn't explain lifecycle costs, but those are documented in parameter descriptions (e.g., paused, plan floors). The description is sufficient for an agent to select and invoke 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 input schema has 100% description coverage for all 10 parameters, including detailed semantics for fields like 'paused', 'diffMode', 'threshold', and the nested 'renderParams'. The description itself adds minimal parameter guidance, only mentioning that an active watch captures a baseline. Since the schema is comprehensive, a 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 tool's purpose: 'Creates a Rendex Watch — monitors a URL on a schedule and notifies when it changes'. It also differentiates from sibling tools with the explicit directive: 'Do NOT use for a one-time capture (use rendex_screenshot)'. This is a specific verb+resource with clear scope.
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 usage context: 'Use this when the user asks to monitor, watch, or track a webpage for changes, or to be alerted/notified when a page changes' and an explicit exclusion with an alternative tool: 'Do NOT use for a one-time capture (use rendex_screenshot)'. It also notes the baseline capture behavior, giving actionable guidance.
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 60, Pro 30, Enterprise 5. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'Creates no watch, no baseline, no diff.' It adds behavioral details beyond annotations by specifying the report content: 'what was captured + whether the page is reachable (and the text a text-watch would compare).' 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 four sentences that front-load the purpose ('Dry-run a watch config BEFORE creating it'), then add critical side-effect information and usage guidance. It is concise, with no wasted words or repeated schema 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?
The tool has no output schema, so the description carries the burden of explaining return values. It covers key aspects: 'what was captured', 'whether the page is reachable', and 'the text a text-watch would compare', plus 'Returns JSON'. However, given the complexity (10 params, nested renderParams), a more explicit output structure or further details would make it more complete, but it is adequate for a dry-run validation 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?
Schema description coverage is 100%, so the baseline is 3. The description's mention of 'render the proposed config once' and 'text a text-watch would compare' loosely references renderParams and diffMode, but it does not add meaning beyond the schema's thorough per-parameter descriptions. The schema already documents all parameters in detail.
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: 'Dry-run a watch config BEFORE creating it'. It uses a specific verb ('dry-run') and resource ('watch config'), and distinguishes itself from siblings by explicitly stating 'Creates no watch, no baseline, no diff', which differentiates it from watch_create and watch_run.
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: 'BEFORE creating it' and 'Use this to validate a selector/scope/identity first.' It implies the alternative is actual creation, and the sibling list includes watch_create and watch_run, which helps disambiguate. However, it does not explicitly name alternatives or state when not to use it.
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
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to render website screenshots and PDFs, check page changes, and retrieve usage stats via REST calls.
- AlicenseNot gradedqualityCmaintenanceProvides functionality to fetch and transform web content in various formats (HTML, JSON, plain text, and Markdown) through simple API calls.88,9981MIT
- AlicenseNot gradedqualityBmaintenanceFetches and renders web pages using a headless Chromium browser, returning clean Markdown or HTML content even for JavaScript-heavy single-page applications.207MIT
- AlicenseAqualityBmaintenanceFetches web pages and converts them to clean, LLM-ready Markdown, with optional JavaScript rendering and honest statuses when pages are blocked or need JS.2MIT
Your Connectors
Sign in to create a connector for this server.