Koskamo

ImgKits MCP

ImgKits MCP provides tools for converting PDFs and images to Markdown, performing OCR with bounding boxes, and extracting tables. It also supports translation and watermarking via upstream integrations, using a credit-based billing system.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

ImgKits MCP logo, by ImgKitsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by ImgKits
MCP endpoint (Streamable HTTP)
https://mcp.imgkits.com/mcp
Vendor documentation

What you can do with it

  • Convert PDFs and images to clean Markdown for RAG and LLM ingestion
  • Extract text blocks with bounding boxes and page numbers from images
  • Extract tables as HTML and row/column matrices from PDFs or images
  • Translate text, documents, images, and subtitles via TransMonkey

Source and maintenance

Community listingRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
mcp-doc-markdown-mcp 0.1.0
MCP protocol
2025-06-18
Tools
12 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Document conversion, image OCR, and table extraction, powered by MinerU (opendatalab/MinerU). Supports PDF and image URLs only: pdf, png, jpeg, webp, bmp, tiff. DOCX is not supported in this release. Each call accepts 1-5 public https file URLs, ≤20 MiB per file. Private, local, and metadata hosts are rejected. Each call costs 1 credit by default, charged before the MinerU job is created. Results are not stored by this Worker. API keys are issued manually by the operator. There is no self-service key page. Attribution: Powered by MinerU (opendatalab/MinerU). License: https://github.com/opendatalab/MinerU/blob/master/LICENSE.md

Tools

12 advertised

convert_to_markdown — Convert PDF or image to Markdown
Advertised by the server during the last successful anonymous check.
Open-world

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

convert_to_markdown input schema
{
  "type": "object",
  "required": [
    "files"
  ],
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri",
        "description": "Public https URL pointing directly to a supported PDF or image file."
      },
      "maxItems": 5,
      "minItems": 1,
      "description": "1-5 public https file URLs."
    },
    "include_layout_json": {
      "type": "boolean",
      "default": false,
      "description": "When true, also return MinerU layout JSON (content_list) for each file."
    }
  },
  "additionalProperties": false
}
convert_to_markdown annotations
{
  "title": "Convert PDF or image to Markdown",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
ocr_image — Image OCR with bounding boxes
Advertised by the server during the last successful anonymous check.
Open-world

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

ocr_image input schema
{
  "type": "object",
  "required": [
    "files"
  ],
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri",
        "description": "Public https URL pointing directly to a supported PDF or image file."
      },
      "maxItems": 5,
      "minItems": 1,
      "description": "1-5 public https file URLs."
    }
  },
  "additionalProperties": false
}
ocr_image annotations
{
  "title": "Image OCR with bounding boxes",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
extract_tables — Extract tables from PDF or image
Advertised by the server during the last successful anonymous check.
Open-world

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

extract_tables input schema
{
  "type": "object",
  "required": [
    "files"
  ],
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri",
        "description": "Public https URL pointing directly to a supported PDF or image file."
      },
      "maxItems": 5,
      "minItems": 1,
      "description": "1-5 public https file URLs."
    }
  },
  "additionalProperties": false
}
extract_tables annotations
{
  "title": "Extract tables from PDF or image",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
translate_text — Translate text
Advertised by the server during the last successful anonymous check.
Open-world

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.

translate_text input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "to"
  ],
  "properties": {
    "to": {
      "type": "string",
      "maxLength": 32,
      "minLength": 1,
      "description": "Target language code or English name, e.g. en, zh, cht, ja, ko, fr, de, es."
    },
    "from": {
      "type": "string",
      "default": "auto",
      "maxLength": 32,
      "minLength": 1,
      "description": "Source language code or English name. Defaults to 'auto'."
    },
    "text": {
      "type": "string",
      "maxLength": 50000,
      "minLength": 1,
      "description": "A single string to translate. Provide this or `texts`, not both."
    },
    "texts": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 50000,
        "minLength": 1
      },
      "maxItems": 50,
      "minItems": 1,
      "description": "Up to 50 strings to translate in one call. Total length must be <= 50,000 characters."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Optional per-job key for upstream job isolation. Billing is handled by mcp-credit-gateway."
    }
  }
}
translate_text annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
translate_document — Translate document
Advertised by the server during the last successful anonymous check.
Open-world

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.

translate_document input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "to": {
      "type": "string",
      "maxLength": 32,
      "minLength": 1,
      "description": "Target language code or name, e.g. en, zh, cht, ja, ko, fr, de, es."
    },
    "from": {
      "type": "string",
      "default": "auto",
      "maxLength": 32,
      "minLength": 1,
      "description": "Source language code or name. Defaults to 'auto'."
    },
    "job_id": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Resume polling an existing job. Polling does not create a new upstream job."
    },
    "doc_url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048,
      "description": "Publicly reachable document URL (signed URLs are fine). Supported: PDF, DOCX/DOC, XLSX/XLS, PPTX/PPT, EPUB, TXT, HTML, MD, CSV, SRT and more. Upstream size limits: PDF <= 30 MB, other formats <= 80 MB."
    },
    "file_name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Optional original file name, used by the upstream for the output file name."
    },
    "wait_seconds": {
      "type": "integer",
      "default": 30,
      "maximum": 120,
      "minimum": 0,
      "description": "How long to wait for the async job in this call (0-120 seconds, default 30)."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Optional per-job key for upstream job isolation. Billing is handled by mcp-credit-gateway."
    }
  }
}
translate_document annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
translate_image — Translate image text
Advertised by the server during the last successful anonymous check.
Open-world

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.

translate_image input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "to": {
      "type": "string",
      "maxLength": 32,
      "minLength": 1,
      "description": "Target language code or name. Required for a new job."
    },
    "font": {
      "enum": [
        "noto",
        "wildwords",
        "komikajam",
        "bangers",
        "edo",
        "ridibatang",
        "bushidoo",
        "hayah",
        "itim",
        "mogulirina"
      ],
      "type": "string",
      "default": "noto",
      "description": "Overlay font. Defaults to 'noto'."
    },
    "from": {
      "type": "string",
      "default": "auto",
      "maxLength": 32,
      "minLength": 1,
      "description": "Source language code or name. Defaults to 'auto'."
    },
    "paste": {
      "anyOf": [
        {
          "type": "number",
          "const": 0
        },
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        }
      ],
      "default": 1,
      "description": "Paste mode: 0 = no text overlay, 1 = whole-image overlay (default), 2 = block overlay."
    },
    "job_id": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Resume polling an existing job. Polling does not create a new upstream job."
    },
    "image_urls": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri",
        "maxLength": 2048
      },
      "maxItems": 10,
      "minItems": 1,
      "description": "1-10 public image URLs (JPG/PNG/WebP recommended). Keep each image <= 10 MB; larger files may be rejected by the upstream downloader."
    },
    "wait_seconds": {
      "type": "integer",
      "default": 30,
      "maximum": 120,
      "minimum": 0,
      "description": "How long to wait for the async job in this call (0-120 seconds, default 30)."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Optional per-job key for upstream job isolation. Billing is handled by mcp-credit-gateway."
    }
  }
}
translate_image annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
translate_subtitle — Translate subtitle
Advertised by the server during the last successful anonymous check.
Open-world

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.

translate_subtitle input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "subtitle_content",
    "to"
  ],
  "properties": {
    "to": {
      "type": "string",
      "maxLength": 32,
      "minLength": 1,
      "description": "Target language code or name, e.g. en, zh, cht, ja, ko, fr, de, es."
    },
    "from": {
      "type": "string",
      "default": "auto",
      "maxLength": 32,
      "minLength": 1,
      "description": "Source language code or name. Defaults to 'auto'."
    },
    "format": {
      "enum": [
        "auto",
        "srt",
        "vtt",
        "ass"
      ],
      "type": "string",
      "default": "auto",
      "description": "Subtitle format. Defaults to auto-detection."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Optional per-job key for upstream job isolation. Billing is handled by mcp-credit-gateway."
    },
    "subtitle_content": {
      "type": "string",
      "maxLength": 1000000,
      "minLength": 1,
      "description": "Raw subtitle text (SRT, WebVTT or ASS/SSA). Up to 1,000,000 characters. Timestamps are preserved exactly."
    }
  }
}
translate_subtitle annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
detect_language — Detect language
Advertised by the server during the last successful anonymous check.
Advertised read-only

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).

detect_language input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 20000,
      "minLength": 1,
      "description": "Text to identify. Up to 20,000 characters; longer samples improve accuracy."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Optional per-job key; relevant when COST_DETECT_LANGUAGE is above 0 (gateway billing)."
    }
  }
}
detect_language annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
add_watermark — Add watermark
Advertised by the server during the last successful anonymous check.
Open-world

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.

add_watermark input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "source_url",
    "watermark_type"
  ],
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1,
      "description": "Watermark text, required when watermark_type=text (<= 500 chars)."
    },
    "color": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Text colour as #RRGGBB. Defaults to upstream choice (usually white)."
    },
    "pages": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "PDF only. 1-based page selection such as \"1\", \"1-3\" or \"1-3,5,8-10\"."
    },
    "scale": {
      "type": "number",
      "maximum": 0.95,
      "minimum": 0.02,
      "description": "Image watermark width as a fraction of the source width, 0.02–0.95."
    },
    "opacity": {
      "type": "number",
      "default": 0.35,
      "maximum": 1,
      "minimum": 0.05,
      "description": "Watermark opacity, 0.05–1 (default 0.35)."
    },
    "position": {
      "enum": [
        "top-left",
        "top-center",
        "top-right",
        "center",
        "bottom-left",
        "bottom-center",
        "bottom-right",
        "tile"
      ],
      "type": "string",
      "default": "bottom-right",
      "description": "Anchor for the watermark, or `tile` to repeat it across the page/image."
    },
    "rotation": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Clockwise rotation in degrees, -180 to 180 (e.g. 45 for a diagonal stamp)."
    },
    "font_size": {
      "type": "integer",
      "maximum": 256,
      "minimum": 8,
      "description": "Text watermark font size in pixels (images) or points (PDF), 8–256."
    },
    "source_url": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 1,
      "description": "Public http(s) URL of the source image (JPG/PNG/WebP, <= 10 MB) or PDF (<= 30 MB)."
    },
    "source_type": {
      "enum": [
        "image",
        "pdf"
      ],
      "type": "string",
      "description": "Optional. Defaults to PDF when source_url ends in .pdf, otherwise image."
    },
    "watermark_type": {
      "enum": [
        "text",
        "image"
      ],
      "type": "string",
      "description": "`text` stamps words; `image` overlays a logo/PNG watermark."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Optional caller correlation key, echoed in the result. Billing is handled by mcp-credit-gateway."
    },
    "watermark_image_url": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 1,
      "description": "Public PNG/JPG/WebP watermark image URL, required when watermark_type=image (<= 5 MB; transparency supported)."
    }
  }
}
add_watermark annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
remove_watermark — Remove watermark (authorized material only)
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

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.

remove_watermark input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "source_url"
  ],
  "properties": {
    "bucket": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$",
      "maxLength": 64,
      "minLength": 1,
      "description": "Upstream storage bucket for the result (default imgkits)."
    },
    "mask_rect": {
      "type": "object",
      "required": [
        "x",
        "y",
        "width",
        "height"
      ],
      "properties": {
        "x": {
          "type": "number",
          "maximum": 1,
          "minimum": 0,
          "description": "Left edge as a fraction of image width, 0–1."
        },
        "y": {
          "type": "number",
          "maximum": 1,
          "minimum": 0,
          "description": "Top edge as a fraction of image height, 0–1."
        },
        "width": {
          "type": "number",
          "maximum": 1,
          "description": "Mask width as a fraction of image width, >0–1.",
          "exclusiveMinimum": 0
        },
        "height": {
          "type": "number",
          "maximum": 1,
          "description": "Mask height as a fraction of image height, >0–1.",
          "exclusiveMinimum": 0
        }
      },
      "description": "Optional rectangular mask in normalized coordinates (0–1). For /api/inpaint this is forwarded as `mask_rect`; if the upstream requires a bitmap mask, pass mask_image_url instead. Mutually exclusive with mask_image_url."
    },
    "source_url": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 1,
      "description": "Public http(s) URL of the image to clean (JPG/PNG/WebP, <= 10 MB). Only use material you own or are explicitly authorized to edit."
    },
    "mask_image_url": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 1,
      "description": "Optional public URL of a mask image (white/opaque = watermark area to remove, black or transparent = keep). Mutually exclusive with mask_rect."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Optional caller correlation key, echoed in the result. Billing is handled by mcp-credit-gateway."
    }
  }
}
remove_watermark annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}
embed_blind_watermark — Embed blind watermark
Advertised by the server during the last successful anonymous check.
Open-world

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.

embed_blind_watermark input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "source_url"
  ],
  "properties": {
    "model": {
      "enum": [
        "DWT",
        "DCT"
      ],
      "type": "string",
      "default": "DWT",
      "description": "Blind-watermark algorithm. DWT is more robust to scaling; DCT is faster."
    },
    "strength": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1,
      "description": "Optional embedding strength, 1–10. Higher survives more editing but is slightly more visible."
    },
    "source_url": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 1,
      "description": "Public http(s) URL of the source image (JPG/PNG/WebP/BMP, <= 10 MB). Recommended at least 64x64 px so the blind watermark survives compression."
    },
    "watermark_text": {
      "type": "string",
      "maxLength": 512,
      "minLength": 1,
      "description": "Content to embed invisibly (<= 512 chars), e.g. an order id or user id. Omit to use the server-held BLIND_WATERMARK_KEY. The content is never echoed back in the result."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Optional caller correlation key, echoed in the result. Billing is handled by mcp-credit-gateway."
    }
  }
}
embed_blind_watermark annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
decode_blind_watermark — Decode blind watermark
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

decode_blind_watermark input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "job_id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "description": "Existing upstream task id returned by a previous call. Polling never creates a new decode task."
    },
    "source_url": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 1,
      "description": "Public http(s) URL of the watermarked image. Start a new decode job with this, or poll with `job_id`."
    },
    "wait_seconds": {
      "type": "number",
      "default": 15,
      "maximum": 60,
      "minimum": 0,
      "description": "How long to wait for a result, 0–60 seconds (default 15). On timeout the call returns a job_id to poll."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Optional caller correlation key, echoed in the result. Billing is handled by mcp-credit-gateway."
    }
  }
}
decode_blind_watermark annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
596 ms
95th percentile latency
596 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 596 ms · metadata changed · 12 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http imgkits-mcp https://mcp.imgkits.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add imgkits-mcp --url https://mcp.imgkits.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable imgkits-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "imgkits-mcp": {
      "url": "https://mcp.imgkits.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "imgkits-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.imgkits.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start imgkits-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "imgkits-mcp": {
      "type": "http",
      "url": "https://mcp.imgkits.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http imgkits-mcp https://mcp.imgkits.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "imgkits-mcp": {
      "url": "https://mcp.imgkits.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "imgkits-mcp": {
      "serverUrl": "https://mcp.imgkits.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like ImgKits MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.