ImgKits MCP
io.github.yichong1/mcp-imgkitsyichong1streamable-httpv1.0.0Scanned
ImgKits gateway MCP: translation (text/doc/image/subtitle) and watermark add/remove tools.
12 tools: 1 can delete or cancel things, 4 do something that can't be undone, 6 change things and 1 only read.
- Reads private data · 0
- Reads text others write · 11
- Can send data out · 4
- No findings
Anlyon alternative
11 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.
12 tools
Deletes or cancels 1Claude Code: deny
remove_watermarkAI watermark removal / inpainting for ONE image (JPG/PNG/WebP, <= 10 MB) supplied as a public URL.Reads text others writeNo findings
Why it is in this group
- The name "remove_watermark" says "remove": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
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 AI watermark removal / inpainting for ONE image (JPG/PNG/WebP, <= 10 MB) supplied as a public URL. Optional `mask_image_url` (white = remove) or normalized `mask_rect` {x,y,width,height} in 0-1; with neither, the upstream auto-detect mode is used (support depends on the upstream). COPYRIGHT / ABUSE GATE: Use only on images you own or are explicitly licensed/authorized to edit. Do not remove copyright, ownership, attribution or license watermarks from third-party material, and do not bulk-strip watermarks from other people's content. Calls are rate-limited/metered by mcp-credit-gateway, require a valid sk_live_ key, and every attempt (including failures) is logged with an audit id for review. (仅处理自有或已获授权素材;禁止批量剥离他人版权水印;调用限频;失败可审计。) This tool is metered per call, accepts a single image per request, and returns an audit_id; bulk/automated third-party stripping is prohibited and may be blocked or reported. Cost: 3 credits per call; mcp-credit-gateway charges before forwarding the request.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
Can't be undone 4Claude Code: ask
translate_documentTranslate a document from a public URL.Reads text others writeCan send data outNo findings
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
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.
Description, as the server wrote it Translate a document from a public URL. Supported formats include PDF, DOCX/DOC, XLSX/XLS, PPTX/PPT, EPUB, TXT, HTML, MD and CSV. Upstream size limits: PDF <= 30 MB, other formats <= 80 MB. This is an async job: the call waits up to wait_seconds (default 30, max 120) and returns a job_id if still running. Call again with the same job_id to poll; polling does not start a new translation job. Upstream deletes temporary/original files after processing and result URLs expire (about 24 hours), so download promptly. Cost: 5 credits per new job, charged by mcp-credit-gateway before forwarding the request.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
translate_imageTranslate text inside 1-10 images supplied as public URLs (JPG/PNG/WebP recommended; keep each image <= 10 MB).Reads text others writeCan send data outNo findings
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
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.
Description, as the server wrote it Translate text inside 1-10 images supplied as public URLs (JPG/PNG/WebP recommended; keep each image <= 10 MB). This is an async job: the call waits up to wait_seconds (default 30, max 120) and returns a job_id if still running. Call again with the same job_id to poll; polling does not start a new translation job. Upstream result URLs expire (about 24 hours), so download promptly. Cost: 2 credits per new job, charged by mcp-credit-gateway before forwarding the request.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
translate_subtitleTranslate SRT, WebVTT or ASS/SSA subtitle content (up to 1,000,000 characters).Reads text others writeCan send data outNo findings
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
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.
Description, as the server wrote it Translate SRT, WebVTT or ASS/SSA subtitle content (up to 1,000,000 characters). Timestamps, cue order, SRT/VTT indices and ASS event fields are preserved exactly; only cue text is translated. Synchronous. Cost: 3 credits per call, charged by mcp-credit-gateway before forwarding the request.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
translate_textTranslate up to 50,000 characters of plain text (up to 50 strings).Reads text others writeCan send data outNo findings
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
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.
Description, as the server wrote it Translate up to 50,000 characters of plain text (up to 50 strings). Long inputs are split into <=1,900-character chunks automatically. Synchronous. Cost: 1 credit per call; mcp-credit-gateway charges before forwarding the request. Requires Authorization: Bearer sk_live_... on the MCP endpoint.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Changes things 6Claude Code: ask
add_watermarkAdd a visible text or image watermark to an image or PDF supplied as a public URL.Reads text others writeNo findings
Why it is in this group
- The name "add_watermark" says "add": a word for a change.
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 Add a visible text or image watermark to an image or PDF supplied as a public URL. Formats: JPG/PNG/WebP images up to 10 MB; PDF up to 30 MB. watermark_type=text requires `text` (<= 500 chars); watermark_type=image requires `watermark_image_url` (PNG/JPG/WebP, <= 5 MB, transparency supported). Position: top-left/top-center/top-right/center/bottom-left/bottom-center/bottom-right/tile. opacity 0.05-1, optional scale/font_size/color/rotation. For PDF, pass `pages` (e.g. "1-3,5") to limit pages. Synchronous. Cost: 2 credits per call; mcp-credit-gateway charges before forwarding the request. Requires Authorization: Bearer sk_live_... on the MCP endpoint.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
convert_to_markdownConvert PDF and image files to clean Markdown for RAG, LLM ingestion, and knowledge bases.Reads text others writeNo findings
Why it is in this group
- The name "convert_to_markdown" says "convert": a word for a change.
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 Convert PDF and image files to clean Markdown for RAG, LLM ingestion, and knowledge bases. Optionally include MinerU layout JSON (content list with blocks and bounding boxes). Input: 1-5 public https file URLs, each ≤20 MiB. Supported: pdf, png, jpeg, webp, bmp, tiff. DOCX is not supported in this release. Private, local, and metadata hosts are rejected. Processing is asynchronous upstream; this call polls until done or times out after about 75 seconds. This Worker does not store uploaded files or results. Upstream MinerU task data is temporary (≤24h). Billing: charged before the MinerU job is created (default 1 credit per tool call). No automatic refunds. Powered by MinerU (opendatalab/MinerU). License: https://github.com/opendatalab/MinerU/blob/master/LICENSE.md
Annotations the server declares
- title: Convert PDF or image to Markdown
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
detect_languageDetect the language of up to 20,000 characters.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 Detect the language of up to 20,000 characters. Uses a local Unicode-script + stopword/diacritic heuristic; no upstream call. Returns a language code, confidence, reliability flag and alternatives. Billing: free by default (COST_DETECT_LANGUAGE=0).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
embed_blind_watermarkEmbed an invisible/blind watermark into an image supplied as a public URL (JPG/PNG/WebP/BMP, <= 10 MB; at least 64x64 px recommended).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.
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 Embed an invisible/blind watermark into an image supplied as a public URL (JPG/PNG/WebP/BMP, <= 10 MB; at least 64x64 px recommended). Uses the AiController EncodeBlindWatermark / Alibaba Cloud IMM path. Pass `watermark_text` (<= 512 chars, e.g. an order id), or omit it to use the server-held BLIND_WATERMARK_KEY secret; the embedded content is never echoed back. `model` is DWT (default, more robust) or DCT; optional `strength` 1-10. Synchronous. Cost: 2 credits per call, charged by mcp-credit-gateway before forwarding.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
extract_tablesExtract tables from PDFs and images as HTML plus a row/column matrix.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.
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 tables from PDFs and images as HTML plus a row/column matrix. Merged cells are expanded; only the top-left cell carries content and other covered cells are empty strings. Returns row_count, column_count, page_idx, and bbox for each table. Input: 1-5 public https file URLs, each ≤20 MiB. Supported: pdf, png, jpeg, webp, bmp, tiff. DOCX is not supported in this release. Private, local, and metadata hosts are rejected. Table structure is model-recognized, so complex, borderless, or handwritten tables may contain errors. Processing is asynchronous and this call polls until done or times out after about 75 seconds. This Worker does not store uploaded files or results. Upstream MinerU task data is temporary (≤24h). Billing: charged before the MinerU job is created (default 1 credit per tool call). No automatic refunds. Powered by MinerU (opendatalab/MinerU). License: https://github.com/opendatalab/MinerU/blob/master/LICENSE.md
Annotations the server declares
- title: Extract tables from PDF or image
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
ocr_imageExtract text from images, screenshots, and scanned PDF pages.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.
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 text from images, screenshots, and scanned PDF pages. Returns text blocks with block-level bounding boxes [x0, y0, x1, y1] and page indexes. Coordinates are MinerU content-list coordinates, not character-level boxes and not rescaled to pixels. Input: 1-5 public https file URLs, each ≤20 MiB. Supported: pdf, png, jpeg, webp, bmp, tiff. DOCX is not supported in this release. Private, local, and metadata hosts are rejected. Tables inside an image are returned as positioned table_cell blocks. Processing is asynchronous and this call polls until done or times out after about 75 seconds. This Worker does not store uploaded files or results. Upstream MinerU task data is temporary (≤24h). Billing: charged before the MinerU job is created (default 1 credit per tool call). No automatic refunds. Powered by MinerU (opendatalab/MinerU). License: https://github.com/opendatalab/MinerU/blob/master/LICENSE.md
Annotations the server declares
- title: Image OCR with bounding boxes
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Only reads 1Show 1 read-only tool
decode_blind_watermarkRead a blind watermark from an image (public http(s) URL).Reads 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
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "read" and "http": it reads web pages, which anyone can write.
Description, as the server wrote it Read a blind watermark from an image (public http(s) URL). Uses the AiController CreateDecodeBlindWatermarkTask + GetDecodeBlindWatermarkResult async path. Start with `source_url`; the call waits up to `wait_seconds` (default 15, max 60) and returns a `job_id` if still running. Poll by calling again with only `job_id`; polling never creates a new upstream decode task. Returns `content` when readable. Cost: 2 credits per call, charged by mcp-credit-gateway before forwarding.
Annotations the server declares
- 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.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write11
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out4
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
No check matched anything in these tool definitions. That is not a safety guarantee.
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 imgkits https://mcp.imgkits.com/mcp --header 'Authorization: <your-authorization>'claude mcp add --transport http imgkits https://mcp.imgkits.com/mcp --header 'Authorization: <your-authorization>'Run 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__imgkits__decode_blind_watermark"
],
"ask": [
"mcp__imgkits__convert_to_markdown",
"mcp__imgkits__ocr_image",
"mcp__imgkits__extract_tables",
"mcp__imgkits__translate_text",
"mcp__imgkits__translate_document",
"mcp__imgkits__translate_image",
"mcp__imgkits__translate_subtitle",
"mcp__imgkits__detect_language",
"mcp__imgkits__add_watermark",
"mcp__imgkits__embed_blind_watermark"
],
"deny": [
"mcp__imgkits__remove_watermark"
]
}
}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 imgkits. Review it before you use it.
Capability tags behind 11 rules
- mcp__imgkits__convert_to_markdown untrusted-input
- mcp__imgkits__ocr_image untrusted-input
- mcp__imgkits__extract_tables untrusted-input
- mcp__imgkits__translate_text untrusted-input, outbound
- mcp__imgkits__translate_document untrusted-input, outbound
- mcp__imgkits__translate_image untrusted-input, outbound
- mcp__imgkits__translate_subtitle untrusted-input, outbound
- mcp__imgkits__add_watermark untrusted-input
- mcp__imgkits__remove_watermark untrusted-input
- mcp__imgkits__embed_blind_watermark untrusted-input
- mcp__imgkits__decode_blind_watermark untrusted-input
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/io.github.yichong1/mcp-imgkits/verify?hash=4a3d518a90392d1c72f24bd52cb13f3ce7b3980571af231b41d236c7efe40578" | jq -e '.changed == false'Pinned hash 4a3d518a9039, from Nov 1, 2026, 15:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/io.github.yichong1/mcp-imgkits/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.github.yichong1/mcp-imgkits)Source: MCP Registry · repository. Synced Nov 1, 2026, 15:17 UTC.