Razi Tools
Server Details
PDF, image, video, OCR, screenshot, SQL, QR and text tools for agents. No API key, no signup.
The last two health checks of this connector failed. 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
- 88.8% over 60 days
- Last Tested
- Transport
- Streamable HTTP
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 28 tools
Every tool has a clearly distinct purpose, and the descriptions explicitly cross-reference sibling tools to prevent confusion (e.g., parse_document versus extract_text_ocr, fetch_page_metadata versus fetch_site_logo, generate_text versus draft_email). The encode/decode and generate_* clusters are differentiated by output type and use case.
The vast majority of tools follow a consistent snake_case verb_noun pattern: decode_base64, compress_pdf, fetch_site_logo, split_pdf. The only notable deviation is images_to_pdf, which reads as a noun phrase rather than a verb-led command, so the naming is highly consistent but not perfect.
At 28 tools, this exceeds the 25-tool threshold that the rubric flags as too many, even though the server's broad utility purpose partially justifies the size. The tools are individually useful, but the surface is heavy for an agent to scan and select from efficiently.
The toolkit covers many utility clusters well, but there are notable dead ends: parse_document directs scanned PDFs to extract_text_ocr while that tool only accepts images, and there is no PDF-to-image conversion, QR decoding, or short-link management. These are workable gaps for a general-purpose server, but they will cause agent failures in specific workflows.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
images_to_pdf
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."
23 tool updates
- Changed
calculate_percentage3 fields changed- changed
Input schema / properties / operation / descriptionPrevious value: -"Calculation type"New value: +"Which calculation to run. 'of' = value1 percent OF value2. 'increase' = value1 raised BY value2 percent. 'decrease' = value1 reduced BY value2 percent. 'change' = the percentage change going FROM value1 TO value2, which errors when value1 is 0. Required; any other value is rejected." - changed
Input schema / properties / value1 / descriptionPrevious value: -"First value"New value: +"For 'of', the percentage itself (25 means 25%). For 'increase' and 'decrease', the base amount being adjusted. For 'change', the original value. Must be a finite number." - changed
Input schema / properties / value2 / descriptionPrevious value: -"Second value"New value: +"For 'of', the amount the percentage is taken from. For 'increase' and 'decrease', the percentage to apply (10 means 10%). For 'change', the new value. Must be a finite number."
- Changed
compare_text2 fields changed- changed
Input schema / properties / text1 / descriptionPrevious value: -"First text"New value: +"The baseline text, reported as `before` in each change." - changed
Input schema / properties / text2 / descriptionPrevious value: -"Second text"New value: +"The revised text, reported as `after` in each change."
- Changed
compress_image6 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"Output format"New value: +"Output container/codec. Default webp; an unrecognised value also falls back to webp. Transparency survives in webp, png and avif but not jpeg." - changed
Input schema / properties / grayscale / descriptionPrevious value: -"Convert image to grayscale"New value: +"Drop colour before encoding. Default false." - changed
Input schema / properties / height / descriptionPrevious value: -"Target height in pixels (optional)"New value: +"Target height in pixels. Give only one of width/height to scale the other proportionally. Omit both to keep the original dimensions." - changed
Input schema / properties / keepAspectRatio / descriptionPrevious value: -"Maintain aspect ratio when resizing. Set false for square crop."New value: +"Only has an effect when BOTH width and height are given. Default false, which centre-crops the image to fill the box exactly. Set true to fit the whole image inside the box instead, so the result may be smaller than the box in one dimension." - changed
Input schema / properties / quality / descriptionPrevious value: -"Quality from 0.1 to 1.0, default 0.9"New value: +"Encoder quality as a fraction from 0.1 to 1.0, scaled to the encoder's 0-100 range. Default 0.9. Higher means larger and closer to the original." - changed
Input schema / properties / width / descriptionPrevious value: -"Target width in pixels (optional)"New value: +"Target width in pixels. Give only one of width/height to scale the other proportionally. Omit both to keep the original dimensions. Enlarging is allowed."
- Removed
compress_video - Changed
decode_base641 field changed- changed
Input schema / properties / encoded / descriptionPrevious value: -"Base64 encoded text"New value: +"Standard Base64 text. Surrounding whitespace and missing '=' padding are tolerated; the URL-safe alphabet (- and _) is not."
- Changed
decode_jwt1 field changed- changed
Input schema / properties / token / descriptionPrevious value: -"JWT token to decode"New value: +"The full JWT: three base64url segments separated by dots (header.payload.signature). Surrounding whitespace is trimmed; a 'Bearer ' prefix is not stripped and will fail. Anything without exactly three segments is rejected."
- Changed
decode_url1 field changed- changed
Input schema / properties / encoded / descriptionPrevious value: -"URL encoded string"New value: +"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."
- Changed
draft_email2 fields changed- changed
Input schema / properties / prompt / descriptionPrevious value: -"Email purpose or content description"New value: +"What the email needs to say: purpose, recipient context, and any facts to include. A sentence or two is enough. Required and must not be blank." - changed
Input schema / properties / tone / descriptionPrevious value: -"Email tone"New value: +"Register of the writing. Default formal. Passed to the model as an instruction, so it shapes wording rather than enforcing a fixed template."
- Changed
encode_base641 field changed- changed
Input schema / properties / text / descriptionPrevious value: -"Text to encode"New value: +"The plain text to encode, interpreted as UTF-8. Must be a string; raw binary cannot be passed through this parameter."
- Changed
encode_url1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"URL to encode"New value: +"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."
- Changed
extract_text_ocr1 field changed- changed
Input schema / properties / language / descriptionPrevious value: -"Language of the text (default: eng)"New value: +"ISO 639-2 style code for the language the recogniser should expect: eng English, ara Arabic, chi_sim Simplified Chinese, fra French, deu German, spa Spanish, jpn Japanese, kor Korean. Default eng. One language per call; naming the wrong one badly degrades accuracy."
- Changed
format_json2 fields changed- changed
Input schema / properties / indent / descriptionPrevious value: -"Indentation spaces (default 2)"New value: +"Spaces per indent level in `formatted`, 0 to 10. Default 2; a value outside that range or a non-number silently falls back to 2. Use 0 for newlines with no indentation, or read `minified` for no whitespace at all." - changed
Input schema / properties / json / descriptionPrevious value: -"JSON string to format"New value: +"The JSON document as a string. Must be strict JSON — comments and trailing commas are parse errors."
- Changed
generate_blog_outline2 fields changed- changed
Input schema / properties / sections / descriptionPrevious value: -"Number of sections (default 5)"New value: +"How many main sections to plan between the introduction and the conclusion. Default 5; a non-numeric or zero value also falls back to 5." - changed
Input schema / properties / topic / descriptionPrevious value: -"Blog topic or keywords"New value: +"The subject of the post, or a comma-free keyword phrase to build it around. The first thing supplied is treated as the primary keyword and the rest as secondary keywords to work in."
- Changed
generate_fake_data2 fields changed- changed
Input schema / properties / count / descriptionPrevious value: -"Number of records (default 1)"New value: +"How many records to return. Default 1, clamped to the range 1-100, and truncated to a whole number. Records are always the same sequence, so count 10 is the first 5 of count 5 plus 5 more." - changed
Input schema / properties / type / descriptionPrevious value: -"Data type"New value: +"Shape of each record. 'name', 'email', 'address' and 'phone' each return a plain string; 'user' returns an object with all four fields. Required; any other value is rejected."
- Changed
generate_image2 fields changed- changed
Input schema / properties / negativePrompt / descriptionPrevious value: -"What to avoid in the image (optional)"New value: +"What to keep out of the image, e.g. 'text, watermark, blurry'. Maximum 2,000 characters. Only the Replicate fallback provider honours it, so on the usual path it has no effect." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Text description of the image to generate"New value: +"What the image should show. Subject, style and composition all help. Required, non-blank, maximum 2,000 characters."
- Changed
generate_qr_code3 fields changed- changed
Input schema / properties / errorCorrection / descriptionPrevious value: -"Error correction level"New value: +"Declared for compatibility but currently ignored — the code is always generated at the library default, level M (about 15% damage tolerance)." - changed
Input schema / properties / size / descriptionPrevious value: -"QR code size in pixels (default 256)"New value: +"Width and height of the output PNG in pixels; the code is always square. Default 300. Only applied when given as a number." - changed
Input schema / properties / text / descriptionPrevious value: -"Text or URL to encode"New value: +"The exact payload to encode. A URL must include its scheme to be actionable when scanned. Very long values force a denser code that is harder to scan."
- Changed
generate_sql2 fields changed- changed
Input schema / properties / description / descriptionPrevious value: -"Natural language query description"New value: +"What the query should do, in plain language. Include the table and column names you want used, otherwise the model invents plausible ones. Required and must not be blank." - changed
Input schema / properties / dialect / descriptionPrevious value: -"SQL dialect"New value: +"Intended SQL dialect. Accepted for forward compatibility but NOT currently passed to the model, so the generated SQL is generic and may need adjusting for your engine."
- Changed
generate_text3 fields changed- changed
Input schema / properties / count / descriptionPrevious value: -"Number of text blocks to generate (default 1)"New value: +"How many separate blocks to return. Default 1. Large values are bounded in practice by the ~1,500 token output cap." - changed
Input schema / properties / length / descriptionPrevious value: -"Length of text in characters (default 100)"New value: +"Rough size of each block in characters. Default 100. Requested in the prompt, so treat it as a target, not a limit." - changed
Input schema / properties / type / descriptionPrevious value: -"Type of text to generate"New value: +"Flavour of filler to ask for: classic latin lorem ipsum, arbitrary English copy, or standalone sentences. Default lorem. Used as a prompt hint, so it steers the style rather than guaranteeing it."
- Changed
humanize_text2 fields changed- changed
Input schema / properties / level / descriptionPrevious value: -"Humanization level"New value: +"How far the rewrite may drift from the original voice. 'light' strips AI tells but stays professional, 'medium' (the default, also used for any unrecognised value) turns it conversational with contractions, 'strong' rewrites it casually with short punchy sentences." - changed
Input schema / properties / text / descriptionPrevious value: -"Text to humanize"New value: +"The passage to rewrite. Plain text. Maximum 10,000 characters; longer input is rejected with 413."
- Changed
shorten_url2 fields changed- changed
Input schema / properties / customCode / descriptionPrevious value: -"Optional custom short 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 collides with a reserved site path such as 'api', 'blog' or 'tools'. Omit to get a random 8-character code." - changed
Input schema / properties / url / descriptionPrevious value: -"The URL to shorten"New value: +"The absolute destination URL to redirect to, including the scheme. Only http:// and https:// are accepted; anything else is rejected with 400."
- Changed
split_image3 fields changed- changed
Input schema / properties / cols / descriptionPrevious value: -"Number of columns (optional, auto-detected if not provided)"New value: +"Number of equal-width columns in the grid. Only takes effect when rows is also given. Omit both rows and cols to have the panels detected automatically." - changed
Input schema / properties / format / descriptionPrevious value: -"Output image format (default: png)"New value: +"Encoding for each extracted panel and its file extension inside the ZIP. Default png, which is lossless; jpeg and webp are written at quality 90." - changed
Input schema / properties / rows / descriptionPrevious value: -"Number of rows (optional, auto-detected if not provided)"New value: +"Number of equal-height rows in the grid. Only takes effect when cols is also given; supplying both switches off vision detection and divides the image evenly, ignoring any borders or gaps."
- Changed
split_pdf1 field changed- changed
Input schema / properties / ranges / descriptionPrevious value: -"Array of page ranges (e.g., '1-2', '3-5')"New value: +"Page ranges to extract, 1-based and inclusive, one output file per entry. Use 'first-last' for a span ('1-2', '3-5'), a bare number for one page ('7'), or a comma-separated combination in one entry ('1-3,7'). Spans are clamped to the document length and pages that do not exist are dropped; an entry that selects no page produces no output file."
- Removed
upload_file
4 tool updates
- Added
fetch_page_metadata - Added
fetch_site_logo - Removed
fetch_site_metadata - Changed
screenshot_url5 fields changed- changed
Input schema / properties / darkMode / descriptionPrevious value: -"Render with prefers-color-scheme: dark"New value: +"Render with prefers-color-scheme: dark. 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)"New value: +"Extra wait after load, in milliseconds (max 5000). Use for pages with entrance animations or slow client-side rendering." - changed
Input schema / properties / fullPage / descriptionPrevious value: -"Capture the entire scrollable page rather than just the viewport"New 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." - changed
Input schema / properties / height / descriptionPrevious value: -"Viewport height in pixels (200-4320, default 800)"New value: +"Viewport height in pixels (200-4320, default 800). Ignored when fullPage is true." - changed
Input schema / properties / url / descriptionPrevious value: -"The page to capture"New value: +"The page to capture. Must be publicly reachable over http(s)."
28 tool updates
- First observed
calculate_percentage - First observed
compare_text - First observed
compress_image - First observed
compress_pdf - First observed
compress_video - First observed
decode_base64 - First observed
decode_jwt - First observed
decode_url - First observed
draft_email - First observed
encode_base64 - First observed
encode_url - First observed
extract_text_ocr - First observed
fetch_site_metadata - First observed
format_json - First observed
generate_blog_outline - First observed
generate_fake_data - First observed
generate_image - First observed
generate_qr_code - First observed
generate_sql - First observed
generate_text - First observed
humanize_text - First observed
merge_pdf - First observed
parse_document - First observed
screenshot_url - First observed
shorten_url - First observed
split_image - First observed
split_pdf - First observed
upload_file
Related MCP Connectors
Image & PDF tools for AI agents: compress, convert, resize, PDF, AI vision, pipeline.
Pay-per-use agent tools: screenshots, web to Markdown, PDF tables, OCR, UK company checks
Agent tools: clean web screenshots/PDFs, PDF & image OCR to Markdown, PageSpeed audits, email checks
PDF tools for AI agents: validate, extract, merge, split, compress, OCR, sign and redact.
Related MCP Servers
- AlicenseAqualityBmaintenanceLocal file tools for agents. Read and convert documents (DOCX, PDF, HWP, HWPX, EML), edit PDFs, resize and clean images, cut out backgrounds, make QR codes. Nothing is uploaded.65MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to capture screenshots and PDFs, read web pages as Markdown, preview links, look up DNS/SSL/WHOIS and email records, verify addresses, generate QR codes, barcodes and social images, convert images, and translate text.1943 npmMIT
- AlicenseBqualityDmaintenanceParse any file or URL into structured text. Extract text from PDF, DOCX, YouTube, web pages, images, and 25+ formats via one API. Tools: parse_url, parse_file, get_youtube_transcript.37 npmMIT
- AlicenseBqualityDmaintenanceProduction-ready MCP server with 40+ tools — QR codes, PDFs, text processing, TTS, web scraping, image generation and more. Built for AI agents.2542 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.