mint utilities
com.voiddo.data/mint-utilitiesdata.voiddo.comstreamable-httpv1.0.0Scanned
22 deterministic tools: PDF, image, QR, CSV/Excel, HTML to PDF, DNS/RDAP, FX rates, time zones.
26 tools: 6 do something that can't be undone, 14 change things and 6 only read.
- Reads private data · 2
- Reads text others write · 18
- Can send data out · 5
- 7 findings
Tools listed without sign-in. Remote posture
Anlyon alternative
20 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
26 tools
Can't be undone 6Claude Code: ask
currency_ratesLatest and historical euro foreign exchange reference rates from the European Central Bank, with conversion between any two of its currencies.Reads text others writeCan send data out1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "currency_rates" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Latest and historical euro foreign exchange reference rates from the European Central Bank, with conversion between any two of its currencies. Cost: 1 credit per call. Output: JSON. latest: {base, date, rates}; convert: {amount, from, to, rate, result, date_used}; history: {base, quote, series[{date, rate}]}
Annotations the server declares
- title: Currency exchange rates (ECB)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
image_convertConvert and resize images between PNG, JPEG, WEBP, GIF, BMP, TIFF and ICO, with quality, fit modes, transparency handling and optional metadata stripping.Reads text others writeCan send data out1 finding
Why it is in this group
- The name "image_convert" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "image_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "image_convert" says "convert": a word for a change.
Description, as the server wrote it Convert and resize images between PNG, JPEG, WEBP, GIF, BMP, TIFF and ICO, with quality, fit modes, transparency handling and optional metadata stripping. Cost: 1 credit per call. File input (file): base64 string, data: URI or {"url": "https://..."}. Output: a file (image/png | image/jpeg | image/webp | image/gif | image/bmp | image/tiff | image/x-icon) returned inline, at most 1 MiB. The converted image
Annotations the server declares
- title: Image converter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
json_yaml_convertConvert text between JSON and YAML with safe parsing, indent, key sorting and minify options, and line-accurate error messages.Can send data out1 finding
Why it is in this group
- The name "json_yaml_convert" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "json_yaml_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "json_yaml_convert" says "convert": a word for a change.
Description, as the server wrote it Convert text between JSON and YAML with safe parsing, indent, key sorting and minify options, and line-accurate error messages. Cost: 1 credit per call. Output: a file (application/json | application/yaml) returned inline, at most 1 MiB. converted.json or converted.yaml; meta: {from, to}
Annotations the server declares
- title: JSON and YAML converter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
pdf_mergeMerge 2 to 20 PDF files into one document in the order given, optionally keeping their bookmarks.Reads text others write1 finding
Why it is in this group
- The name "pdf_merge" says "merge": a word for a change that another call does not undo.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- Warn
The server marks "pdf_merge" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "pdf_merge" says "merge": a word for a change that another call does not undo.
Description, as the server wrote it Merge 2 to 20 PDF files into one document in the order given, optionally keeping their bookmarks. Cost in credits: ceil(total pages / 20), minimum 1. File input (files): base64 string, data: URI or {"url": "https://..."}. Output: a file (application/pdf) returned inline, at most 1 MiB. merged.pdf; meta: {page_count, files}
Annotations the server declares
- title: PDF merger
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
screenshotCapture a public web page as a PNG, JPEG or WEBP image: any viewport size, full page, retina scaling, optional cookie-banner hiding.Reads text others writeCan send data out1 finding
Why it is in this group
- The name "screenshot" says "screenshot": a word for reading.
- The description's first verb is "capture": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "capture" and "web": it reads web pages, which anyone can write.
- untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Findings
- Warn
The server marks "screenshot" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "screenshot" says "screenshot": a word for reading.
Description, as the server wrote it Capture a public web page as a PNG, JPEG or WEBP image: any viewport size, full page, retina scaling, optional cookie-banner hiding. Free tier only (credits do not apply to this tool). Output: a file (image/png | image/jpeg | image/webp) returned inline, at most 1 MiB. The screenshot
Annotations the server declares
- title: Website screenshot
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tabular_convertConvert tables between CSV, TSV, XLSX and JSON with format, delimiter and encoding detection, header control and exact number and date handling.Reads text others writeCan send data out1 finding
Why it is in this group
- The name "tabular_convert" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "tabular_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "tabular_convert" says "convert": a word for a change.
Description, as the server wrote it Convert tables between CSV, TSV, XLSX and JSON with format, delimiter and encoding detection, header control and exact number and date handling. Cost in credits: 1 credit; 2 credits when the output is xlsx. File input (file): base64 string, data: URI or {"url": "https://..."}. Output: a file (text/csv | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | application/json) returned inline, at most 1 MiB. The converted table. meta: {rows, cols, from, to, sheet?, sheets?, encoding?, delimiter?}.
Annotations the server declares
- title: CSV, TSV, Excel and JSON converter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Changes things 14Claude Code: ask
csv_profileProfile a CSV, TSV, XLSX or JSON table: row and column counts plus type, nulls, distinct values, min, max and samples for every column.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Profile a CSV, TSV, XLSX or JSON table: row and column counts plus type, nulls, distinct values, min, max and samples for every column. Cost: 1 credit per call. File input (file): base64 string, data: URI or {"url": "https://..."}. Output: JSON. {rows, cols, columns: [{name, inferred_type, null_count, distinct_count, distinct_capped, min, max, sample}]}
Annotations the server declares
- title: CSV and Excel data profiler
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
html_to_imageRender an HTML snippet to a PNG, JPEG or WEBP image at any width, with retina scaling and transparent background.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Render an HTML snippet to a PNG, JPEG or WEBP image at any width, with retina scaling and transparent background. Cost: 3 credits per call. Output: a file (image/png | image/jpeg | image/webp) returned inline, at most 1 MiB. The rendered image
Annotations the server declares
- title: HTML to image
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
html_to_pdfTurn an HTML document into a print-ready PDF with page size, margins, orientation and page-numbered header and footer.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Turn an HTML document into a print-ready PDF with page size, margins, orientation and page-numbered header and footer. Cost: 3 credits per call. Output: a file (application/pdf) returned inline, at most 1 MiB. The PDF document
Annotations the server declares
- title: HTML to PDF
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
iso_codesLook up ISO 3166 country and subdivision codes, ISO 4217 currency codes and ISO 639 language codes by code or name fragment.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Look up ISO 3166 country and subdivision codes, ISO 4217 currency codes and ISO 639 language codes by code or name fragment. Cost: 1 credit per call. Output: JSON. {type, query, results:[{alpha_2, alpha_3, numeric, name, ...}], count, total, truncated}
Annotations the server declares
- title: ISO code lookup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
kdp_preflightCheck a KDP paperback interior and cover PDF against Amazon's published file specs and get a signed report.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Check a KDP paperback interior and cover PDF against Amazon's published file specs and get a signed report. Cost: 5 credits per call. File inputs (interior, cover): base64 string, data: URI or {"url": "https://..."}. Output: JSON. {id, verdict: pass|warn|fail, label, ruleset, specs_date, created_at, files: {interior, cover?: {name, sha256, bytes}}, interior: {trim, pages, bleed, gutter_in, ...}, cover?, checks: [{id, part, status, title, detail}], signature, verify_url}
Annotations the server declares
- title: KDP paperback file checker
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
kdp_puzzle_bookA ready-to-upload KDP paperback puzzle book: interior PDF, wrap cover, signed file check, previews and listing notes.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it A ready-to-upload KDP paperback puzzle book: interior PDF, wrap cover, signed file check, previews and listing notes. Cost: 500 credits per call. Output: a file (application/zip) returned inline, at most 1 MiB. ZIP: interior.pdf, cover.pdf, check-report.pdf/.json, preview/*.png, listing.txt, README.txt
Annotations the server declares
- title: KDP puzzle book maker
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
kdp_reportLook up a KDP file check report by id and confirm its signature and file fingerprints.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Look up a KDP file check report by id and confirm its signature and file fingerprints. Free tier only (credits do not apply to this tool). Output: JSON. {found, genuine, report?}
Annotations the server declares
- title: KDP check report lookup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
kdp_spine_calcFull cover size, spine width, safe areas, barcode box, gutter and margins for an Amazon KDP paperback, with an optional PDF cover guide.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Full cover size, spine width, safe areas, barcode box, gutter and margins for an Amazon KDP paperback, with an optional PDF cover guide. Cost: 1 credit per call. Output: JSON. {valid, problems[], ruleset, specs_date, trim, pages, paper, page_limits, cover: {width_in, height_in, spine_in, bleed_in, width_px_300dpi, height_px_300dpi, spine_text_allowed, back_safe, front_safe, spine_text_box, barcode_area}, interior: {page_width_in, page_height_in, bleed…
Annotations the server declares
- title: KDP cover size and spine width calculator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
markdown_renderRender Markdown to a sanitised HTML page or fragment, or to a PDF, with tables, fenced code, heading anchors, an optional table of contents and a choice of themes.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Render Markdown to a sanitised HTML page or fragment, or to a PDF, with tables, fenced code, heading anchors, an optional table of contents and a choice of themes. Cost: 1 credit per call. Output: a file (text/html | application/pdf) returned inline, at most 1 MiB. document.html / fragment.html (text/html; charset=utf-8) or document.pdf. meta: {format, theme, title, headings, bytes, pages?}. pdf costs 3 credits, html and fragment 1.
Annotations the server declares
- title: Markdown renderer
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
pdf_splitSplit a PDF into parts by page ranges such as '1-2,5-' or every N pages, returned as one PDF or a zip of parts.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Split a PDF into parts by page ranges such as '1-2,5-' or every N pages, returned as one PDF or a zip of parts. Cost in credits: ceil(pages written / 20), minimum 1. File input (file): base64 string, data: URI or {"url": "https://..."}. Output: a file (application/pdf | application/zip) returned inline, at most 1 MiB. part_01.pdf when there is one part, otherwise split.zip holding part_01.pdf ...; meta: {parts, page_count}
Annotations the server declares
- title: PDF splitter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
pdf_textExtract the text of a PDF page by page, with page selection and an optional layout-preserving mode.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Extract the text of a PDF page by page, with page selection and an optional layout-preserving mode. Cost in credits: ceil(pages extracted / 20), minimum 1. File input (file): base64 string, data: URI or {"url": "https://..."}. Output: JSON. {page_count, pages: [{n, text}], chars}; meta.note when the PDF has no text layer.
Annotations the server declares
- title: PDF text extractor
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
qr_codeTurn text or a URL into a crisp QR code as PNG or SVG, with size and error-correction control.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Turn text or a URL into a crisp QR code as PNG or SVG, with size and error-correction control. Cost: 1 credit per call. Output: a file (image/png | image/svg+xml) returned inline, at most 1 MiB. The QR image
Annotations the server declares
- title: QR code generator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
svg_to_pngRender an SVG document to a PNG at a chosen width, height or scale and background; external files, network references and XML entities are never loaded.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Render an SVG document to a PNG at a chosen width, height or scale and background; external files, network references and XML entities are never loaded. Cost: 1 credit per call. File input (file): base64 string, data: URI or {"url": "https://..."}. Output: a file (image/png) returned inline, at most 1 MiB. The rendered PNG
Annotations the server declares
- title: SVG to PNG renderer
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
timezone_convertConvert a date and time between IANA time zones with exact daylight-saving handling, inspect a zone's offset and transitions, or list a country's zones.1 finding
Why it is in this group
- The name "timezone_convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "timezone_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "timezone_convert" says "convert": a word for a change.
Description, as the server wrote it Convert a date and time between IANA time zones with exact daylight-saving handling, inspect a zone's offset and transitions, or list a country's zones. Cost: 1 credit per call. Output: JSON. convert: {input, output, offset_from, offset_to, dst_from, dst_to, utc, ...}; info: {tz, offset, abbreviation, dst, previous_transition, next_transition}; list: {country, zones, count}
Annotations the server declares
- title: Time zone converter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 6Show 6 read-only tools
dns_lookupLook up A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, SRV or PTR records of a public name through the Cloudflare and Google public resolvers.Reads text others writeNo findings
Why it is in this group
- The name "dns_lookup" says "lookup": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Look up A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, SRV or PTR records of a public name through the Cloudflare and Google public resolvers. Cost: 1 credit per call. Output: JSON. {name, type, status, records:[{type, value, ttl}], count, resolver, elapsed_ms}
Annotations the server declares
- title: DNS record lookup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
holidays_lookupPublic holidays of any of about 250 countries and regions for a given year, with optional subdivision, language and category.Reads text others writeNo findings
Why it is in this group
- The name "holidays_lookup" says "lookup": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Public holidays of any of about 250 countries and regions for a given year, with optional subdivision, language and category. Cost: 1 credit per call. Output: JSON. {country, year, subdiv, holidays:[{date, name}], count}
Annotations the server declares
- title: Public holidays lookup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
ip_lookupReverse DNS name and registry record (network block, name, country) of a public IP address, from open registry data only.Reads text others writeNo findings
Why it is in this group
- The name "ip_lookup" says "lookup": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Reverse DNS name and registry record (network block, name, country) of a public IP address, from open registry data only. Cost: 1 credit per call. Output: JSON. {ip, version, is_private, reverse_dns, reverse_dns_all, network{name, country, ...}}
Annotations the server declares
- title: IP address lookup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
json_schema_validateValidate a JSON document, or up to 1000 of them, against a JSON Schema (draft 7, 2019-09 or 2020-12) and list every error with its path.No findings
Why it is in this group
- The name "json_schema_validate" says "validate": a word for reading.
Description, as the server wrote it Validate a JSON document, or up to 1000 of them, against a JSON Schema (draft 7, 2019-09 or 2020-12) and list every error with its path. Cost: 1 credit per call. Output: JSON. {valid, errors: [{index, path, message, validator}], count}; meta: {draft, instances, truncated?}
Annotations the server declares
- title: JSON Schema validator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
pdf_infoRead a PDF's page count, encryption flag, metadata, page sizes in millimetres, text-layer presence and bookmark count.Reads private dataReads text others writeNo findings
Why it is in this group
- The description's first verb is "read": a word for reading.
What it can reach
- private-dataThe input names a file (input.file), and the tool reads: it reads files.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Read a PDF's page count, encryption flag, metadata, page sizes in millimetres, text-layer presence and bookmark count. Cost: 1 credit per call. File input (file): base64 string, data: URI or {"url": "https://..."}. Output: JSON. {page_count, encrypted, password_required, metadata: {title, author, subject, creator, producer}, page_sizes_mm: [{n, width, height}] (first 50 pages), has_text, outline_count}
Annotations the server declares
- title: PDF info reader
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
rdap_lookupLook up the public registration record of a domain, IP address or AS number from its registry's RDAP service, without personal contact data.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "rdap_lookup" says "lookup": a word for reading.
What it can reach
- private-dataThe description's first sentence says "contact": it reads contacts.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Look up the public registration record of a domain, IP address or AS number from its registry's RDAP service, without personal contact data. Cost: 1 credit per call. Output: JSON. Normalised registration record: domain, IP network or autonomous system
Annotations the server declares
- title: RDAP registration lookup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
180 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 2 private-data tools breaks every one.
- Reads private data2
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write18
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out5
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__mint-utilities__pdf_info",
"mcp__mint-utilities__rdap_lookup"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Remote posture
What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.
Looked at Oct 22, 2026, 14:43 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.
- Reachable
- yes
- HTTP status of an anonymous initialize
- 200
- tools/list served without credentials
- yes
- Tools that change things, listed without credentials
- 20
- Protocol version
- 2025-06-18
- WWW-Authenticate on 401
- not observed
- resource_metadata in WWW-Authenticate
- not observed
- RFC 9728 protected resource metadata
- not observed
- Authorization servers
- not observed
- Legacy HTTP+SSE transport
- no
- Dynamic client registration
- not observed
- Client ID metadata documents
- not observed
- HighThe whole server
The endpoint served tools/list without credentials, and the list has 20 tools that change things (6 irreversible, 14 write). Whether a call also works without credentials was not tested: tools are never called.
What this check looks forMatched text
https://data.voiddo.com/mcp: tools/list returned 26 tools to an anonymous client, including currency_rates (irreversible), image_convert (irreversible), json_yaml_convert (irreversible), pdf_merge (irreversible), screenshot (irreversible) and 15 more
Findings
Matches of fixed checks, with the text they matched.
- Warncurrency_rates
The server marks "currency_rates" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
- Warnimage_convert
The server marks "image_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "image_convert" says "convert": a word for a change.
The server marks "json_yaml_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "json_yaml_convert" says "convert": a word for a change.
- Warnpdf_merge
The server marks "pdf_merge" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "pdf_merge" says "merge": a word for a change that another call does not undo.
- Warnscreenshot
The server marks "screenshot" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "screenshot" says "screenshot": a word for reading.
- Warntabular_convert
The server marks "tabular_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "tabular_convert" says "convert": a word for a change.
Show 1 more findingShow fewer
- Warntimezone_convert
The server marks "timezone_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "timezone_convert" says "convert": a word for a change.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http mint-utilities https://data.voiddo.com/mcpclaude mcp add --transport http mint-utilities https://data.voiddo.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__mint-utilities__dns_lookup",
"mcp__mint-utilities__holidays_lookup",
"mcp__mint-utilities__ip_lookup",
"mcp__mint-utilities__json_schema_validate",
"mcp__mint-utilities__pdf_info",
"mcp__mint-utilities__rdap_lookup"
],
"ask": [
"mcp__mint-utilities__csv_profile",
"mcp__mint-utilities__currency_rates",
"mcp__mint-utilities__html_to_image",
"mcp__mint-utilities__html_to_pdf",
"mcp__mint-utilities__image_convert",
"mcp__mint-utilities__iso_codes",
"mcp__mint-utilities__json_yaml_convert",
"mcp__mint-utilities__kdp_preflight",
"mcp__mint-utilities__kdp_puzzle_book",
"mcp__mint-utilities__kdp_report",
"mcp__mint-utilities__kdp_spine_calc",
"mcp__mint-utilities__markdown_render",
"mcp__mint-utilities__pdf_merge",
"mcp__mint-utilities__pdf_split",
"mcp__mint-utilities__pdf_text",
"mcp__mint-utilities__qr_code",
"mcp__mint-utilities__screenshot",
"mcp__mint-utilities__svg_to_png",
"mcp__mint-utilities__tabular_convert",
"mcp__mint-utilities__timezone_convert"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as mint-utilities. Review it before you use it.
Capability tags behind 19 rules
- mcp__mint-utilities__csv_profile untrusted-input
- mcp__mint-utilities__currency_rates untrusted-input, outbound
- mcp__mint-utilities__dns_lookup untrusted-input
- mcp__mint-utilities__holidays_lookup untrusted-input
- mcp__mint-utilities__image_convert untrusted-input, outbound
- mcp__mint-utilities__ip_lookup untrusted-input
- mcp__mint-utilities__iso_codes untrusted-input
- mcp__mint-utilities__json_yaml_convert outbound
- mcp__mint-utilities__kdp_preflight untrusted-input
- mcp__mint-utilities__kdp_report untrusted-input
- mcp__mint-utilities__kdp_spine_calc untrusted-input
- mcp__mint-utilities__pdf_info private-data, untrusted-input
- mcp__mint-utilities__pdf_merge untrusted-input
- mcp__mint-utilities__pdf_split untrusted-input
- mcp__mint-utilities__pdf_text untrusted-input
- mcp__mint-utilities__rdap_lookup private-data, untrusted-input
- mcp__mint-utilities__screenshot untrusted-input, outbound
- mcp__mint-utilities__svg_to_png untrusted-input
- mcp__mint-utilities__tabular_convert untrusted-input, outbound
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/com.voiddo.data/mint-utilities/verify?hash=a47156293b5a0118a4121a15135022e7a9d13d0c1fe63230c58f20c1a01fd149" | jq -e '.changed == false'Pinned hash a47156293b5a, from Oct 21, 2026, 18:57 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/com.voiddo.data/mint-utilities/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/com.voiddo.data/mint-utilities)Source: MCP Registry. Synced Oct 21, 2026, 18:10 UTC.