Razi Web Tools
Server Details
Web and URL utilities over MCP: shorten URLs, screenshot pages, read page metadata, encode URLs.
Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 98.1% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: encoding/decoding are an inverse pair, metadata and logo tools are explicitly separated by whether image downloads are needed, and screenshot and URL shortening are unique operations. There is no realistic risk of selecting the wrong tool for a task.
All tool names follow a consistent snake_case verb_noun pattern: decode_url, encode_url, fetch_page_metadata, fetch_site_logo, screenshot_url, shorten_url. The naming is uniform and predictable across the set.
Six tools is a well-scoped count for a web utilities server. Each tool provides a distinct capability without redundancy or bloat, staying comfortably within the ideal range.
The core workflows are covered: URL encoding/decoding, page metadata extraction, logo retrieval, screenshots, and URL shortening. The main gap is short-link lifecycle management, but redirect resolution can be approximated via finalUrl from fetch_page_metadata, so agents can work around it.
Available Tools
6 toolsdecode_urlAInspect
Reverse percent-encoding with decodeURIComponent, turning %20-style escapes back into the characters they stand for. Returns JSON { decoded }. A malformed or truncated escape sequence is rejected with an error rather than passed through. Note that '+' is left as a literal plus, not converted to a space. It understands percent-escapes and nothing else: Base64 text and JWTs pass through unchanged or fail, rather than being decoded. It is the exact inverse of encode_url.
| Name | Required | Description | Default |
|---|---|---|---|
| encoded | Yes | A percent-encoded string, such as one query-string value taken from a URL. Every %XX sequence must be well formed UTF-8 or the call fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: error on malformed escapes, handling of '+', and the exact output format. It covers edge cases and limitations, making the tool's behavior predictable.
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?
Each sentence adds meaningful information without redundancy. The description is compact yet thorough, covering purpose, behavior, edge cases, and relationship to sibling tools efficiently.
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 description is self-contained: it specifies the return format (JSON with 'decoded' key), error behavior, and non-goals, making it sufficient for an agent to use the tool without additional context. No output schema is provided, so this description fills that gap effectively.
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?
Although the schema already describes the 'encoded' parameter, the tool description adds valuable context: it gives an example ('query-string value'), clarifies UTF-8 requirements, and specifies the impact of malformed input, enriching the schema beyond its 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 clearly states the tool's function: reversing percent-encoding with decodeURIComponent, and explicitly differentiates it from encode_url and other URL-related tools by specifying its 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?
It provides explicit guidance on when to use this tool: as the inverse of encode_url, and clarifies what it does not do (e.g., no Base64/JWT decoding, '+' remains literal), preventing misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encode_urlAInspect
Percent-encode a string with encodeURIComponent so reserved characters survive transport inside a URL. Returns JSON { encoded }. It escapes the structural characters too — : / ? # & = all become %XX — so it is for a single query-string value or path segment, NOT for a whole address you still want to be clickable. This is escaping for URLs only. It is the wrong transform for making binary-unsafe content fit in JSON, an HTTP header or a data URI, which call for Base64 rather than percent-encoding. Reverse it with decode_url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The value to percent-encode, typically one query-string value or path segment. Everything outside A-Z a-z 0-9 - _ . ! ~ * ' ( ) is escaped, including slashes and colons. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the exact encoding function, which characters are escaped, the JSON return shape, the limitation to URL escaping, and common misuse cases. This is thorough behavioral disclosure.
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 core purpose, then uses short readable sentences to cover scope, exclusions, and alternatives. Every sentence adds distinct value without 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?
Although there is no output schema, the description states the return format as JSON { encoded }. It covers behavior, limitations, use cases, and reverse operation, making the tool fully usable by an agent without additional inference.
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% and the parameter description already explains the allowed character set and intended input. The tool description adds context about survival in transport, structural character escaping, and non-URL alternatives, which enriches the meaning beyond 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 states a specific verb and resource: percent-encode a string using encodeURIComponent. It also explicitly distinguishes itself from decode_url and clarifies that it is not for whole addresses, making sibling differentiation clear.
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 explicit when-to-use guidance: for a single query-string value or path segment, not for a whole clickable URL. It also names when not to use it and suggests Base64 for other contexts, plus points to decode_url for reversal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_page_metadataAInspect
Read a web page's metadata without downloading any images. Returns JSON { url, finalUrl, title, description, siteName, canonical, lang, themeColor, author, generator, feeds, openGraph, twitter, icons, cached }, where feeds is an array of RSS/Atom URLs, openGraph and twitter are the complete tag sets as string maps, and any tag the page does not declare is simply omitted. icons is always an empty array here because icon resolution is switched off — call fetch_site_logo when the caller wants a logo, favicon or icon. finalUrl is the address after redirects (up to 3 hops are followed), which is how you resolve where a domain actually points. This is the fast, cheap counterpart to fetch_site_logo: one page fetch and no image work. It reads the served HTML only — it runs no JavaScript, so a client-rendered page may expose little, and it does not capture how the page looks (use screenshot_url for that). The crawler identifies itself as RaziMetadataBot, and HTTP status is not checked, so a 404 or bot-challenge page that serves HTML is parsed as though it were the page you asked for. Errors: 400 for a URL that is refused as unsafe, redirects too many times, does not return HTML, or exceeds the 5MB page cap; 504 if the page does not answer within 10 seconds; 502 otherwise. Results are cached for 24 hours and replayed with cached: true; 20 calls per minute per IP, then 429.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The page to read, e.g. https://stripe.com/pricing. A bare domain is accepted and assumed to be https. It is the cache key verbatim, so two spellings of the same page are fetched twice. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior, and it does so thoroughly: no image downloads, redirect handling up to 3 hops, no JS execution, no HTTP status verification, user-agent identification, error codes, caching behavior, and rate limits. This is comprehensive beyond what structured fields would reveal.
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 dense but every sentence adds essential operational detail. It front-loads the return shape and main scope, then layers in limitations, errors, and caching. No filler or repetition; the length is justified by the tool's behavioral complexity.
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?
There is no output schema, so the description must explain the return format, and it does so in detail with field names, types, and conditional presence. It also covers failure modes, edge cases, caching, rate limits, and alternatives, making it fully sufficient for an agent to invoke 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?
Although the schema already describes the url parameter at 100%, the description adds valuable semantics: bare domains are accepted and assumed https, and the URL is the verbatim cache key, meaning different spellings cause duplicate fetches. This extra context helps the agent avoid misuse.
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 verb and resource: read a web page's metadata without downloading images. It also distinguishes itself from siblings by explicitly naming fetch_site_logo and screenshot_url as alternatives for icon resolution and visual capture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: it is the fast, cheap counterpart to fetch_site_logo, and it tells the agent to call fetch_site_logo when a logo/favicon/icon is wanted and screenshot_url when the page's appearance is needed. It also notes limitations such as no JavaScript execution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_site_logoAInspect
Get a company's logo from its website URL. Reads the web app manifest, apple-touch-icons, declared favicons, OpenGraph/Twitter images and /favicon.ico, then downloads at most the first 10 candidates and measures their real dimensions — declared sizes attributes are frequently wrong, so ranking uses the measurement rather than the claim. Returns JSON { logo, icons, cached } plus the same page-metadata fields as fetch_page_metadata (url, finalUrl, title, description, siteName, canonical, lang, themeColor, author, generator, feeds, openGraph, twitter), so there is no need to also call it. Use that tool instead if you do NOT need the logo: it skips the image downloads entirely and is much faster. logo is the best candidate and is absent when nothing usable was found; icons lists all candidates, best first, with real icon assets deliberately outranking social share images, which are usually a wide marketing banner rather than a logo. If the site declares nothing fetchable, a Google favicon-proxy candidate (source "google-proxy") is added as a last resort. Each candidate is { url, source, declaredSizes?, width, height, format, bytes, rehostedUrl? }. Candidates the site declares but that cannot be fetched are still returned last, carrying an error field — that is what makes this useful for auditing your own site's icons. SVG logos carry no width/height because they are not rasterised, and a .ico often comes back unmeasured for the same reason. The served HTML is read with no JavaScript executed, and the crawler identifies itself as RaziMetadataBot, so a site that challenges unknown bots yields the challenge page's icons. HTTP status is not checked: a 404 page that serves HTML is parsed as though it were the page you asked for. Errors: 400 for a URL that is refused as unsafe, does not return HTML, or exceeds the 5MB page cap; 504 if the page does not answer within 10 seconds; 502 otherwise. Results are cached for 24 hours and replayed with cached: true; 20 calls per minute per IP, then 429.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The website to inspect, e.g. https://stripe.com. A bare domain is accepted and assumed to be https. Up to 3 redirects are followed; more is refused with 400. | |
| rehost | No | Copy the top 3 fetchable candidates to razi.pro's CDN and expose them as `rehostedUrl` (default true). Prefer these for downloading or embedding: many origins block hotlinking or omit CORS headers, so the original URL can fail in a browser. Set false to skip the copy and get origin URLs only. A copy that fails is dropped silently, leaving that candidate with its origin URL only, and the two settings are cached separately. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It discloses that JavaScript is not executed, the crawler identifies itself as RaziMetadataBot, HTTP status is intentionally not checked, candidates are measured rather than trusted, SVG/ICO dimensions may be missing, results are cached for 24 hours, and rate limits apply. This far exceeds what annotations would typically 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?
The description is long but every sentence carries operational or decision-relevant information. It is front-loaded with the core purpose, then systematically covers ranking, alternative usage, return shape, edge cases, errors, caching, and rate limits. There is no filler or repetition of the schema.
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 and the absence of an output schema and annotations, the description is remarkably complete. It defines the exact JSON return shape, the candidate object fields, fallback behavior, error codes with meanings, timeout and page-size limits, caching semantics, and rate limits. An agent has enough information to invoke the tool correctly and interpret the result.
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 already describes both parameters with 100% coverage, including bare-domain handling, redirect limits, the rehost CDN behavior, CORS/hotlink context, and separate caching per setting. The description adds useful context about candidate fields and ranking, but it does not materially extend the meaning of the parameters beyond the schema. Baseline 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 states a specific action and resource: 'Get a company's logo from its website URL.' It then describes the exact detection strategy and distinguishes itself from the sibling fetch_page_metadata by noting it also returns all page-metadata fields. An agent can immediately understand what this tool does and how it differs from nearby alternatives.
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 explicitly names the alternative tool and gives the decision rule: 'Use that tool instead if you do NOT need the logo: it skips the image downloads entirely and is much faster.' It also explains that this tool makes a separate fetch_page_metadata call unnecessary. This is clear, actionable guidance with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshot_urlAInspect
Capture a screenshot of any public web page, rendered in a real headless browser so JavaScript, web fonts and lazy-loaded images all appear. Returns JSON with a hosted image URL — not image bytes: { url, screenshotUrl (the same value under the older key), width, height, format, bytes, cached, source }. When source is "vps" the image is on razi.pro's CDN and every field is populated, except that height is null for a fullPage capture. If source is "thumbio" the renderer was unavailable and a third-party fallback produced the image: the URL points at image.thum.io rather than razi.pro, only width accompanies it (height, format and bytes are absent), and the fullPage, format, darkMode and delayMs options were ignored. Public pages only: every capture runs in a fresh browser with no cookies or credentials, so anything behind a login is unreachable, and a URL that is not http(s) or that resolves to a loopback, private or link-local address is refused with 400. Identical requests are cached for 7 days and return the same image (cached: true), so this cannot be used to poll a page for changes. Out-of-range numeric options are clamped to their stated range rather than rejected. Other failures: 429 over either rate limit, 403 when screenshots are switched off platform-wide, 502 when the render fails and no fallback is available. This is the most expensive call on the platform: it holds a whole browser worker for up to 50 seconds. Limited to 10 captures per minute and 100 per day per IP.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The page to capture. Must be publicly reachable over http or https; the scheme is required. Part of the cache key, so two spellings of the same page render twice. | |
| width | No | Viewport width in pixels. Default 1280; values outside 200-3840 are clamped into that range and fractions are truncated. | |
| format | No | Image format. Default webp; an unrecognised value also falls back to webp. | |
| height | No | Viewport height in pixels. Default 800; values outside 200-4320 are clamped. Ignored when fullPage is true, where the returned height is null. | |
| delayMs | No | Extra wait after load, in milliseconds. Default 0, clamped to 0-5000. Use for pages with entrance animations or slow client-side rendering; it comes out of the same 50-second render budget. | |
| darkMode | No | Render with prefers-color-scheme: dark. Default false. Has no effect on sites that do not implement a dark theme. | |
| fullPage | No | Capture the entire scrollable page rather than just the viewport. Default false. Pages taller than 12000px are truncated at 12000px, which is a browser encoding limit, so a very long article returns only its top portion. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It discloses fresh browser/no credentials, 7-day caching, parameter clamping, 429/403/502 errors, rate limits, 50s render budget, and thumbio fallback behavior that ignores some options. This is far beyond the bare minimum.
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?
Front-loaded with purpose and return shape, then fallback and constraints; every sentence adds a distinct fact (auth state, caching, clamping, error codes, cost). No fluff or unnecessary repetition despite the length, which is justified by the tool's complexity and absence of annotations.
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 7-param tool with no output schema and no annotations, the description covers return values (including legacy key), source variants, edge cases (fullPage null height, truncation at 12000px), error codes, rate limits, and cost. An agent has all the context needed to decide when and how to call it.
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 adds extra context not in the schema: delayMs consumes the same 50-second budget, thumbio fallback ignores fullPage/format/darkMode/delayMs, and height is null for fullPage captures. This is meaningful but not essential given the schema's strong descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Capture a screenshot') with a clear resource ('any public web page') and rendering detail (headless browser with JS/fonts/lazy images). This distinguishes it from the sibling fetch_page_metadata and fetch_site_logo, which are about metadata/logo, not rendering.
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?
Gives explicit when-not conditions: public pages only (no login), no polling due to 7-day cache, and HTTP/private-address restrictions. Does not name alternative sibling tools or say 'use fetch_page_metadata instead', so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shorten_urlAInspect
Create a permanent razi.pro short link that redirects to a long URL. Returns JSON { code, shortUrl } and nothing else. Visits through the link are counted, but no tool here reads that count back, and the link cannot be edited, retargeted or deleted through this API. It never expires. The destination is stored, never fetched or checked for reachability, so a dead or mistyped URL still yields a working short link. Only http and https targets are accepted. This shortens an existing address; it does not host anything, so a file needs a public URL of its own before there is something to shorten. No sign-in is required; an anonymous call creates the link unowned, so it will not appear in any account's list. 30 links per hour per IP, then 429.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute destination URL to redirect to, including the scheme. Only http:// and https:// are accepted; anything that is not an absolute URL in one of those schemes is rejected with 400. It is normalised by the URL parser before being stored, so the redirect target may differ cosmetically from what you sent. | |
| customCode | No | Vanity code to use as the last path segment, e.g. 'launch' for razi.pro/launch. 3-32 characters, letters, digits, hyphen and underscore only. Fails with 409 if already taken and 400 if it is malformed or collides with a reserved site path such as 'api', 'blog' or 'tools'. Omit to get a random 8-character code drawn from an alphabet with no 0, O, 1 or l. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly. It discloses permanence, JSON return shape, counted visits, inability to edit/delete, lack of reachability checking, anonymous ownership, and the 30-per-hour rate limit. This is exemplary transparency.
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 long but every sentence earns its place, covering lifecycle, return values, constraints, and operational limits. The core purpose is front-loaded, and the content is ordered logically from what the tool does to its limitations.
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 no annotations and no output schema, the description fully compensates by explaining the exact return payload, link permanence, non-editable behavior, anonymous creation, accepted schemes, and rate limiting. There is no meaningful gap that would prevent an agent from using it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains URL normalization, accepted schemes, customCode constraints, collision behavior, and the random code format. The tool description adds useful context about the response and ownership, but it does not need to add parameter-level meaning because the schema already provides it.
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 and resource: 'Create a permanent razi.pro short link that redirects to a long URL.' It also clarifies what the tool is not for, such as hosting files or checking destination reachability, which distinguishes it clearly from siblings like encode_url or fetch_page_metadata.
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?
It gives strong context: only http/https targets are accepted, the URL must already be public, no sign-in is needed, and a rate limit applies. However, it does not explicitly name sibling tools or state when to prefer this over them, so some inference is still required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
fetch_page_metadata1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"The page to read, e.g. https://stripe.com/pricing. A bare domain is accepted and assumed to be https."New value: +"The page to read, e.g. https://stripe.com/pricing. A bare domain is accepted and assumed to be https. It is the cache key verbatim, so two spellings of the same page are fetched twice."
- Changed
fetch_site_logo2 fields changed- changed
Input schema / properties / rehost / descriptionPrevious value: -"Copy the top candidates to razi.pro's CDN and expose them as `rehostedUrl` (default true). Prefer these for downloading or embedding: many origins block hotlinking or omit CORS headers, so the original URL can fail in a browser. Set false to skip the copy and get origin URLs only."New value: +"Copy the top 3 fetchable candidates to razi.pro's CDN and expose them as `rehostedUrl` (default true). Prefer these for downloading or embedding: many origins block hotlinking or omit CORS headers, so the original URL can fail in a browser. Set false to skip the copy and get origin URLs only. A copy that fails is dropped silently, leaving that candidate with its origin URL only, and the two settings are cached separately." - changed
Input schema / properties / url / descriptionPrevious value: -"The website to inspect, e.g. https://stripe.com. A bare domain is accepted and assumed to be https."New value: +"The website to inspect, e.g. https://stripe.com. A bare domain is accepted and assumed to be https. Up to 3 redirects are followed; more is refused with 400."
- Changed
screenshot_url7 fields changed- changed
Input schema / properties / darkMode / descriptionPrevious value: -"Render with prefers-color-scheme: dark. Has no effect on sites that do not implement a dark theme."New value: +"Render with prefers-color-scheme: dark. Default false. Has no effect on sites that do not implement a dark theme." - changed
Input schema / properties / delayMs / descriptionPrevious value: -"Extra wait after load, in milliseconds (max 5000). Use for pages with entrance animations or slow client-side rendering."New value: +"Extra wait after load, in milliseconds. Default 0, clamped to 0-5000. Use for pages with entrance animations or slow client-side rendering; it comes out of the same 50-second render budget." - changed
Input schema / properties / format / descriptionPrevious value: -"Image format (default webp)"New value: +"Image format. Default webp; an unrecognised value also falls back to webp." - changed
Input schema / properties / fullPage / descriptionPrevious value: -"Capture the entire scrollable page rather than just the viewport. Pages taller than 12000px are truncated at 12000px, which is a browser encoding limit, so a very long article returns only its top portion."New value: +"Capture the entire scrollable page rather than just the viewport. Default false. Pages taller than 12000px are truncated at 12000px, which is a browser encoding limit, so a very long article returns only its top portion." - changed
Input schema / properties / height / descriptionPrevious value: -"Viewport height in pixels (200-4320, default 800). Ignored when fullPage is true."New value: +"Viewport height in pixels. Default 800; values outside 200-4320 are clamped. Ignored when fullPage is true, where the returned height is null." - changed
Input schema / properties / url / descriptionPrevious value: -"The page to capture. Must be publicly reachable over http(s)."New value: +"The page to capture. Must be publicly reachable over http or https; the scheme is required. Part of the cache key, so two spellings of the same page render twice." - changed
Input schema / properties / width / descriptionPrevious value: -"Viewport width in pixels (200-3840, default 1280)"New value: +"Viewport width in pixels. Default 1280; values outside 200-3840 are clamped into that range and fractions are truncated."
- Changed
shorten_url2 fields changed- changed
Input schema / properties / customCode / descriptionPrevious value: -"Vanity code to use as the last path segment, e.g. 'launch' for razi.pro/launch. 3-32 characters, letters, digits, hyphen and underscore only. Fails with 409 if already taken and 400 if it collides with a reserved site path such as 'api', 'blog' or 'tools'. Omit to get a random 8-character code."New value: +"Vanity code to use as the last path segment, e.g. 'launch' for razi.pro/launch. 3-32 characters, letters, digits, hyphen and underscore only. Fails with 409 if already taken and 400 if it is malformed or collides with a reserved site path such as 'api', 'blog' or 'tools'. Omit to get a random 8-character code drawn from an alphabet with no 0, O, 1 or l." - changed
Input schema / properties / url / descriptionPrevious value: -"The absolute destination URL to redirect to, including the scheme. Only http:// and https:// are accepted; anything else is rejected with 400."New value: +"The absolute destination URL to redirect to, including the scheme. Only http:// and https:// are accepted; anything that is not an absolute URL in one of those schemes is rejected with 400. It is normalised by the URL parser before being stored, so the redirect target may differ cosmetically from what you sent."
6 tool updates
- First observed
decode_url - First observed
encode_url - First observed
fetch_page_metadata - First observed
fetch_site_logo - First observed
screenshot_url - First observed
shorten_url
Related MCP Connectors
Web MCP: scrape/crawl sites, web search, brand assets, app stores, YouTube, Reddit, Hacker News.
Developer utility MCP: screenshots, PDFs, OG, QR, link preview, JSON validate, ShipPack.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables fetching and extracting text from URLs, searching the web via DuckDuckGo and Yandex, and retrieving page links through MCP tools.22MIT
- AlicenseAqualityDmaintenanceProvides tools to fetch web content in HTML, JSON, text, or Markdown formats via MCP. Supports custom headers, length limits, and start index.4MIT
- AlicenseNot gradedqualityCmaintenanceEnables URL shortening and management through MCP, allowing creation of short links with optional tags and expiry, search, and stats.20 npm1MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that provides web search scraping from DuckDuckGo (with Mojeek fallback) and URL content fetching as markdown/text or raw HTML.1-
Glama MCP Gateway
Add one secure layer between your agents and this server.