vøiddo utilities

26 deterministic tools: PDF, image, QR, CSV/Excel, HTML to PDF, DNS/RDAP, FX rates, time zones.

使うべきか

品質と安全性

A
説明の品質
99%
スキーマの完全性
96%
命名の品質
80%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(1)

  • LOWTool 'screenshot' description lacks action verbscreenshot 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~9,896トークン数(ツール定義)
~2.8 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 7.73%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "utilities": {
      "url": "https://data.voiddo.com/mcp/"
    }
  }
}

リモートエンドポイント

https://data.voiddo.com/mcp/streamable-http

できること

ツール一覧

ツール(26)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢csv_profile(file, from, sheet, header, delimiter, ...)

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}]}

入力スキーマ

{
  "type": "object",
  "properties": {
    "file": {
      "type": [
        "string",
        "object"
      ],
      "description": "The table: base64 string (or data: URI) or {\"url\": \"https://...\"}. Up to 10 MB.",
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 2048
        }
      },
      "required": [
        "url"
      ]
    },
    "from": {
      "type": "string",
      "enum": [
        "csv",
        "tsv",
        "xlsx",
        "json"
      ],
      "description": "Source format. Omit to auto-detect."
    },
    "sheet": {
      "type": [
        "string",
        "integer"
      ],
      "minimum": 0,
      "minLength": 1,
      "description": "xlsx input: sheet name, or 0-based sheet index (default: the first sheet)."
    },
    "header": {
      "type": "boolean",
      "default": true,
      "description": "The first row holds column names. false: columns are named col1, col2, ..."
    },
    "delimiter": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1,
      "description": "csv input: field delimiter (default: detected among , ; tab |)."
    },
    "encoding": {
      "type": "string",
      "maxLength": 40,
      "default": "utf-8",
      "description": "Text encoding of csv/tsv/json input (utf-8 falls back to cp1252)."
    },
    "max_rows": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000,
      "default": 200000,
      "description": "Reject inputs with more data rows than this (413)."
    }
  },
  "required": [
    "file"
  ],
  "additionalProperties": false
}
🟢currency_rates(op, base, quote, quotes, amount, ...)

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}]}

入力スキーマ

{
  "type": "object",
  "properties": {
    "op": {
      "type": "string",
      "enum": [
        "latest",
        "convert",
        "history"
      ],
      "default": "latest"
    },
    "base": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "default": "EUR",
      "description": "Base currency (latest, history); for convert the alias of 'from'"
    },
    "quote": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "Quote currency (history; latest filter; convert alias of 'to')"
    },
    "quotes": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z]{3}$"
      },
      "minItems": 1,
      "maxItems": 40,
      "uniqueItems": true,
      "description": "Several quote currencies for latest; omit for all"
    },
    "amount": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000000,
      "description": "Amount of the 'from' currency (convert)"
    },
    "from": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "Currency to convert from (default EUR)"
    },
    "to": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "Currency to convert to"
    },
    "date": {
      "type": "string",
      "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
      "description": "YYYY-MM-DD; non-business days use the previous business day. Default: latest day"
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 365,
      "default": 30,
      "description": "history: calendar days ending at 'date' (default the latest day)"
    }
  },
  "additionalProperties": false,
  "allOf": [
    {
      "if": {
        "properties": {
          "op": {
            "const": "convert"
          }
        },
        "required": [
          "op"
        ]
      },
      "then": {
        "required": [
          "amount"
        ]
      }
    }
  ]
}
🟢dns_lookup(name, type, all)

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}

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253,
      "description": "Public hostname, e.g. example.com (internationalised names are converted to punycode). For type PTR: an IPv4/IPv6 address or a complete in-addr.arpa / ip6.arpa name."
    },
    "type": {
      "type": "string",
      "enum": [
        "A",
        "AAAA",
        "MX",
        "TXT",
        "NS",
        "CNAME",
        "SOA",
        "CAA",
        "SRV",
        "PTR"
      ],
      "default": "A",
      "description": "Record type"
    },
    "all": {
      "type": "boolean",
      "default": false,
      "description": "Query the common set (A, AAAA, CNAME, MX, NS, TXT, SOA, CAA) in one call; 'type' is then ignored"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}
🟢holidays_lookup(country, year, subdiv, language, categories, ...)

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}

入力スキーマ

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "ISO 3166-1 alpha-2 country code, e.g. US, DE, IL"
    },
    "year": {
      "type": "integer",
      "minimum": 1990,
      "maximum": 2100
    },
    "subdiv": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "State / province / region code or name, e.g. BY, Bayern, CA, SCT"
    },
    "language": {
      "type": "string",
      "pattern": "^[A-Za-z]{2,3}([_-][A-Za-z]{2,4})?$",
      "description": "Language of the holiday names, e.g. de or en_US; default: English where available, else the country's own language"
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z_]{3,30}$"
      },
      "minItems": 1,
      "maxItems": 10,
      "uniqueItems": true,
      "description": "Holiday categories, default [\"public\"]; e.g. public, bank, school, government, optional, half_day"
    },
    "observed": {
      "type": "boolean",
      "default": true,
      "description": "Include substitute days such as \"Christmas Day (observed)\""
    }
  },
  "required": [
    "country",
    "year"
  ],
  "additionalProperties": false
}
🟢html_to_image(html, width, height, format, quality, ...)

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

入力スキーマ

{
  "type": "object",
  "properties": {
    "html": {
      "type": "string",
      "minLength": 1,
      "description": "The HTML document or fragment (UTF-8, up to 2 MB). JavaScript is not executed."
    },
    "width": {
      "type": "integer",
      "minimum": 320,
      "maximum": 2560,
      "default": 1200,
      "description": "Viewport width in CSS px"
    },
    "height": {
      "type": "integer",
      "minimum": 50,
      "maximum": 16384,
      "description": "Viewport height in CSS px; omit for a full-page image that fits the content"
    },
    "format": {
      "type": "string",
      "enum": [
        "png",
        "jpeg",
        "jpg",
        "webp"
      ],
      "default": "png"
    },
    "quality": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 90,
      "description": "jpeg / webp quality"
    },
    "device_scale_factor": {
      "type": "number",
      "minimum": 1,
      "maximum": 3,
      "default": 1,
      "description": "Pixel density (2 = retina)"
    },
    "transparent": {
      "type": "boolean",
      "default": false,
      "description": "Transparent page background (png / webp only)"
    }
  },
  "required": [
    "html"
  ],
  "additionalProperties": false
}
🟢html_to_pdf(html, format, landscape, margin_mm, print_background, ...)

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

入力スキーマ

{
  "type": "object",
  "properties": {
    "html": {
      "type": "string",
      "minLength": 1,
      "description": "The HTML document or fragment (UTF-8, up to 2 MB). JavaScript is not executed."
    },
    "format": {
      "type": "string",
      "enum": [
        "A4",
        "Letter",
        "Legal",
        "A3",
        "A5"
      ],
      "default": "A4",
      "description": "Paper size"
    },
    "landscape": {
      "type": "boolean",
      "default": false
    },
    "margin_mm": {
      "type": "number",
      "minimum": 0,
      "maximum": 50,
      "default": 15,
      "description": "Page margin on all sides, millimetres"
    },
    "print_background": {
      "type": "boolean",
      "default": true,
      "description": "Print CSS backgrounds and colours"
    },
    "scale": {
      "type": "number",
      "minimum": 0.1,
      "maximum": 2,
      "default": 1,
      "description": "Rendering scale"
    },
    "header_text": {
      "type": "string",
      "maxLength": 300,
      "description": "Plain-text page header; {page} and {pages} are replaced"
    },
    "footer_text": {
      "type": "string",
      "maxLength": 300,
      "description": "Plain-text page footer; {page} and {pages} are replaced"
    }
  },
  "required": [
    "html"
  ],
  "additionalProperties": false
}
🟢image_convert(file, to, width, height, fit, ...)

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

入力スキーマ

{
  "type": "object",
  "properties": {
    "file": {
      "type": [
        "string",
        "object"
      ],
      "description": "The image: base64 (or data: URI) string, or {\"url\": \"https://...\"}; up to 10 MB"
    },
    "to": {
      "type": "string",
      "enum": [
        "png",
        "jpeg",
        "jpg",
        "webp",
        "gif",
        "bmp",
        "tiff",
        "ico"
      ],
      "description": "Target format"
    },
    "width": {
      "type": "integer",
      "minimum": 1,
      "maximum": 8192,
      "description": "Target width in px"
    },
    "height": {
      "type": "integer",
      "minimum": 1,
      "maximum": 8192,
      "description": "Target height in px"
    },
    "fit": {
      "type": "string",
      "enum": [
        "inside",
        "contain",
        "cover",
        "fill"
      ],
      "default": "inside"
    },
    "quality": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 85,
      "description": "jpeg / webp quality (webp 100 = lossless)"
    },
    "strip_metadata": {
      "type": "boolean",
      "default": true,
      "description": "Drop EXIF / XMP / ICC (colours are converted to sRGB first)"
    },
    "background": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Colour for transparent areas when the target has no alpha, and for contain padding (default white / transparent)"
    }
  },
  "required": [
    "file",
    "to"
  ],
  "additionalProperties": false
}
🟢ip_lookup(ip)

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, ...}}

入力スキーマ

{
  "type": "object",
  "properties": {
    "ip": {
      "type": "string",
      "minLength": 2,
      "maxLength": 64,
      "description": "Public IPv4 or IPv6 address"
    }
  },
  "required": [
    "ip"
  ],
  "additionalProperties": false
}
🟢iso_codes(type, query, limit, country)

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}

入力スキーマ

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "country",
        "currency",
        "language",
        "subdivision"
      ]
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Code or name fragment, case- and accent-insensitive"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 10
    },
    "country": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Only for type=subdivision: restrict to this country (ISO 3166-1 alpha-2)"
    }
  },
  "required": [
    "type",
    "query"
  ],
  "additionalProperties": false
}
🟢json_schema_validate(schema, instance, instances, draft)

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?}

入力スキーマ

{
  "type": "object",
  "properties": {
    "schema": {
      "type": "object",
      "description": "The JSON Schema to validate against."
    },
    "instance": {
      "description": "One JSON value to validate (any type, including null). Use this or instances."
    },
    "instances": {
      "type": "array",
      "minItems": 1,
      "maxItems": 1000,
      "description": "Up to 1000 JSON values validated against the same schema. Use this or instance."
    },
    "draft": {
      "enum": [
        "auto",
        "7",
        7,
        "2019-09",
        "2020-12"
      ],
      "default": "auto",
      "description": "JSON Schema draft. auto follows the schema's $schema and defaults to 2020-12."
    }
  },
  "required": [
    "schema"
  ],
  "additionalProperties": false
}
🟢json_yaml_convert(input, from, to, indent, sort_keys, ...)

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}

入力スキーマ

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The JSON or YAML text to convert (up to 2 MB)."
    },
    "from": {
      "type": "string",
      "enum": [
        "json",
        "yaml",
        "auto"
      ],
      "default": "auto",
      "description": "Source format; auto tries JSON first, then YAML."
    },
    "to": {
      "type": "string",
      "enum": [
        "json",
        "yaml"
      ],
      "description": "Target format. Default: yaml for JSON input, json for YAML input."
    },
    "indent": {
      "type": "integer",
      "minimum": 0,
      "maximum": 8,
      "default": 2,
      "description": "Spaces per level. JSON: 0 puts items on their own lines without indentation. YAML: values below 2 are treated as 2."
    },
    "sort_keys": {
      "type": "boolean",
      "default": false,
      "description": "Sort object keys alphabetically (default: keep input order)."
    },
    "minify": {
      "type": "boolean",
      "default": false,
      "description": "JSON: single line without spaces. YAML: single-line flow style. Overrides indent."
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
🟢kdp_preflight(interior, cover, trim, paper)

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}

入力スキーマ

{
  "type": "object",
  "properties": {
    "interior": {
      "type": [
        "string",
        "object"
      ],
      "description": "The interior PDF: base64 string (or data: URI) or {\"url\": \"https://...\"}. Up to 10 MB.",
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 2048
        }
      },
      "required": [
        "url"
      ]
    },
    "cover": {
      "type": [
        "string",
        "object"
      ],
      "description": "Optional wrap cover PDF (back, spine and front in one page, with bleed).",
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 2048
        }
      },
      "required": [
        "url"
      ]
    },
    "trim": {
      "type": "string",
      "enum": [
        "5x8",
        "5.06x7.81",
        "5.25x8",
        "5.5x8.5",
        "6x9",
        "6.14x9.21",
        "6.69x9.61",
        "7x10",
        "7.44x9.69",
        "7.5x9.25",
        "8x10",
        "8.25x6",
        "8.25x8.25",
        "8.5x8.5",
        "8.5x11",
        "8.27x11.69"
      ],
      "description": "Trim size; found from the page size when omitted"
    },
    "paper": {
      "type": "string",
      "enum": [
        "white",
        "cream",
        "groundwood",
        "standard_color",
        "premium_color"
      ],
      "default": "white"
    }
  },
  "required": [
    "interior"
  ],
  "additionalProperties": false
}
🟢kdp_puzzle_book(kind, count, level, trim, paper, ...)

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

入力スキーマ

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "sudoku",
        "wordsearch",
        "maze",
        "cryptogram",
        "wordscramble",
        "numbersearch",
        "kakuro",
        "fillin",
        "killersudoku",
        "calcudoku",
        "futoshiki",
        "nonogram",
        "skyscrapers",
        "logicgrid",
        "crossword",
        "numberfill",
        "samuraisudoku",
        "jigsawsudoku",
        "kidssudoku",
        "kidswordsearch",
        "kidsmaze",
        "variety"
      ],
      "description": "sudoku, wordsearch, maze, cryptogram, wordscramble, numbersearch, kakuro, fillin, killersudoku, calcudoku, futoshiki, nonogram, skyscrapers, logicgrid, crossword, numberfill, samuraisudoku, jigsawsudoku, kidssudoku (sudoku for kids), kidswordsearch (word search for kids) or kidsmaze (mazes for kids); variety for a book of several kinds (see mix)"
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 400,
      "description": "Number of puzzles. The fewest allowed fill KDP's 24-page minimum; the most are 400 sudoku (300 at hard or expert), 150 word searches, 200 mazes, 300 cryptograms, 55 word scrambles (40 at easy or hard), 150 number searches, 150 kakuro (100 at hard), 150 fill ins, 150 killer sudoku (120 at hard), 150 calcudoku, 200 futoshiki, 120 nonograms (no picture twice), 200 skyscrapers, 100 logic grids, 100 crosswords (no answer twice), 150 number fill ins, 150 samurai sudoku (75 at hard), 300 jigsaw sudoku (200 at hard), 300 sudoku for kids, 100 word searches for kids, 200 mazes for kids, 150 puzzles in a variety book (shared evenly by its kinds, at least 4 of each, none past its own maximum)"
    },
    "level": {
      "type": "string",
      "enum": [
        "mixed",
        "easy",
        "medium",
        "hard",
        "expert"
      ],
      "description": "easy, medium, hard (and expert for sudoku and mazes). For kidssudoku the level picks the grid: easy 4x4, medium 6x6, hard 9x9, mixed all three in that order. For kidswordsearch it picks the grid and the word count: easy 8x8 with 8 words across and down, medium 10x10 with 10, hard 12x12 with 12 in all eight directions. For kidsmaze it picks the size in squares: easy 6x7, medium 8x10, hard 11x13, mixed all three in that order"
    },
    "trim": {
      "type": "string",
      "enum": [
        "6x9",
        "7x10",
        "8x10",
        "8.5x11",
        "8.27x11.69"
      ],
      "default": "8.5x11"
    },
    "paper": {
      "type": "string",
      "enum": [
        "white",
        "cream",
        "groundwood"
      ],
      "default": "white"
    },
    "large_print": {
      "type": "boolean",
      "default": true,
      "description": "Every text read while solving at 16 pt or more. Nonograms need room: in large print, easy on 7x10 or larger and medium on 8.5x11 or 8.27x11.69 (no hard); in regular print, hard on 7x10 or larger. Logic grids: in large print (a spread a puzzle), easy on 7x10 or larger, medium and hard on 8x10 or larger; in regular print, hard on 7x10 or larger. Crosswords in large print (a spread a puzzle) on 7x10 or larger. Samurai sudoku in large print on 8.5x11 or 8.27x11.69, in regular print on 7x10 or larger"
    },
    "title": {
      "type": "string",
      "maxLength": 70
    },
    "subtitle": {
      "type": "string",
      "maxLength": 120
    },
    "author": {
      "type": "string",
      "maxLength": 60
    },
    "themes": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 80,
      "description": "Word search, word scramble, fill in or crossword themes to use, in order (default: the everyday themes, shuffled; the Christmas and winter ones only by name)"
    },
    "mix": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "sudoku",
          "wordsearch",
          "maze",
          "cryptogram",
          "wordscramble",
          "numbersearch",
          "kakuro",
          "fillin",
          "killersudoku",
          "calcudoku",
          "futoshiki",
          "nonogram",
          "skyscrapers",
          "logicgrid",
          "crossword",
          "numberfill",
          "samuraisudoku",
          "jigsawsudoku",
          "kidssudoku",
          "kidswordsearch",
          "kidsmaze"
        ]
      },
      "minItems": 2,
      "maxItems": 18,
      "description": "Variety books only: the kinds of puzzle, in book order (default: wordsearch, sudoku, cryptogram, maze). Kids kinds only (kidssudoku, kidswordsearch, kidsmaze) make an activity book for kids; they do not mix with the others. Levels easy, medium or hard."
    },
    "cover_color": {
      "type": "string",
      "enum": [
        "navy",
        "forest",
        "terracotta",
        "plum",
        "slate",
        "crimson",
        "ochre",
        "teal",
        "indigo",
        "charcoal",
        "olive",
        "ocean",
        "cocoa",
        "berry",
        "wine",
        "sage",
        "vermilion",
        "cobalt",
        "grape",
        "leaf",
        "fuchsia"
      ],
      "description": "The cover's color, so a series can look like no one else's. Default: the kind's own (sudoku navy, word search forest, maze terracotta, ...)."
    },
    "cover_layout": {
      "type": "string",
      "enum": [
        "puzzle_top",
        "title_top",
        "title_card"
      ],
      "description": "Where the title sits on the front cover: puzzle_top (default: a puzzle from the book above the title), title_top (the title above the puzzle) or title_card (the puzzle across the whole front, the title on a card)."
    },
    "seed": {
      "type": "integer",
      "minimum": 0,
      "maximum": 4611686018427388000,
      "description": "Rebuild an earlier book exactly; omit for a new one"
    }
  },
  "required": [
    "kind",
    "count",
    "level"
  ],
  "additionalProperties": false
}
🟢kdp_report(id)

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?}

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[0-9a-f]{20}$",
      "description": "Report id (20 hex characters)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢kdp_spine_calc(trim, pages, paper, bleed, template)

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…

入力スキーマ

{
  "type": "object",
  "properties": {
    "trim": {
      "type": "string",
      "enum": [
        "5x8",
        "5.06x7.81",
        "5.25x8",
        "5.5x8.5",
        "6x9",
        "6.14x9.21",
        "6.69x9.61",
        "7x10",
        "7.44x9.69",
        "7.5x9.25",
        "8x10",
        "8.25x6",
        "8.25x8.25",
        "8.5x8.5",
        "8.5x11",
        "8.27x11.69"
      ],
      "default": "6x9",
      "description": "Trim size in inches, width x height"
    },
    "pages": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000,
      "description": "Interior page count"
    },
    "paper": {
      "type": "string",
      "enum": [
        "white",
        "cream",
        "groundwood",
        "standard_color",
        "premium_color"
      ],
      "default": "white",
      "description": "white, cream, groundwood, standard_color or premium_color"
    },
    "bleed": {
      "type": "boolean",
      "default": false,
      "description": "Interior pages with bleed (pictures to the edge)"
    },
    "template": {
      "type": "boolean",
      "default": false,
      "description": "Also return a PDF cover guide (base64)"
    }
  },
  "required": [
    "pages"
  ],
  "additionalProperties": false
}
🟢markdown_render(markdown, format, title, theme, css, ...)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "markdown": {
      "type": "string",
      "description": "The Markdown source (up to 1 MB of text)"
    },
    "format": {
      "type": "string",
      "enum": [
        "html",
        "fragment",
        "pdf"
      ],
      "default": "html",
      "description": "html = complete page (1 credit), fragment = content only (1 credit), pdf = A4 document (3 credits)"
    },
    "title": {
      "type": "string",
      "maxLength": 200,
      "description": "Page title; default is the first level-1 heading"
    },
    "theme": {
      "type": "string",
      "enum": [
        "default",
        "github",
        "plain"
      ],
      "default": "default",
      "description": "Built-in stylesheet for html and pdf"
    },
    "css": {
      "type": "string",
      "enum": [
        "default",
        "github",
        "plain"
      ],
      "description": "Alias of theme"
    },
    "toc": {
      "type": "boolean",
      "default": false,
      "description": "Add a table of contents above the content"
    }
  },
  "required": [
    "markdown"
  ],
  "additionalProperties": false
}
🟢pdf_info(file)

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}

入力スキーマ

{
  "type": "object",
  "properties": {
    "file": {
      "type": [
        "string",
        "object"
      ],
      "description": "The PDF: base64 string (or data: URI) or {\"url\": \"https://...\"}. Up to 10 MB.",
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 2048
        }
      },
      "required": [
        "url"
      ]
    }
  },
  "required": [
    "file"
  ],
  "additionalProperties": false
}
🟢pdf_merge(files, keep_bookmarks)

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}

入力スキーマ

{
  "type": "object",
  "properties": {
    "files": {
      "type": "array",
      "minItems": 2,
      "maxItems": 20,
      "items": {
        "type": [
          "string",
          "object"
        ],
        "description": "A PDF: base64 string (or data: URI) or {\"url\": \"https://...\"}.",
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 2048
          }
        },
        "required": [
          "url"
        ]
      },
      "description": "2 to 20 PDFs in merge order; all together up to 10 MB."
    },
    "keep_bookmarks": {
      "type": "boolean",
      "default": true,
      "description": "Keep the bookmarks (outline) of the input files."
    }
  },
  "required": [
    "files"
  ],
  "additionalProperties": false
}
🟢pdf_split(file, ranges, every_n)

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}

入力スキーマ

{
  "type": "object",
  "properties": {
    "file": {
      "type": [
        "string",
        "object"
      ],
      "description": "The PDF: base64 string (or data: URI) or {\"url\": \"https://...\"}. Up to 10 MB.",
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 2048
        }
      },
      "required": [
        "url"
      ]
    },
    "ranges": {
      "type": "string",
      "maxLength": 1000,
      "description": "Comma-separated page ranges, one part each: '1-2,5-' ('5-' runs to the last page)."
    },
    "every_n": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100000,
      "description": "Alternative to ranges: parts of this many pages."
    }
  },
  "required": [
    "file"
  ],
  "additionalProperties": false
}
🟢pdf_text(file, pages, layout, format)

Extract the text of a PDF page by page as plain text or Markdown, with page selection, an optional layout-preserving mode and the document metadata. 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}] (Markdown: [{n, markdown}]), chars, metadata: {title, author, subject, keywords, creator, producer, created, modified}}; meta.note when the PDF has no text layer.

入力スキーマ

{
  "type": "object",
  "properties": {
    "file": {
      "type": [
        "string",
        "object"
      ],
      "description": "The PDF: base64 string (or data: URI) or {\"url\": \"https://...\"}. Up to 10 MB.",
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 2048
        }
      },
      "required": [
        "url"
      ]
    },
    "pages": {
      "type": "string",
      "maxLength": 1000,
      "description": "Pages to extract, e.g. '1-3,7' or '5-' (default: all pages)."
    },
    "layout": {
      "type": "boolean",
      "default": false,
      "description": "Preserve the visual layout (columns, spacing) instead of reading order."
    },
    "format": {
      "type": "string",
      "enum": [
        "text",
        "markdown"
      ],
      "default": "text",
      "description": "text: the plain text of each page. markdown: headings, bold and italic, lists and paragraphs as Markdown, page headers and footers that repeat on most pages left out (layout does not apply)."
    }
  },
  "required": [
    "file"
  ],
  "additionalProperties": false
}
🟢qr_code(text, format, size, margin, error_correction, ...)

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

入力スキーマ

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "Text or URL to encode"
    },
    "format": {
      "type": "string",
      "enum": [
        "png",
        "svg"
      ],
      "default": "png"
    },
    "size": {
      "type": "integer",
      "minimum": 64,
      "maximum": 2048,
      "default": 512,
      "description": "Edge length in px (png)"
    },
    "margin": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10,
      "default": 2,
      "description": "Quiet zone in modules"
    },
    "error_correction": {
      "type": "string",
      "enum": [
        "L",
        "M",
        "Q",
        "H"
      ],
      "default": "M"
    },
    "fg": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "default": "#000000"
    },
    "bg": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "default": "#ffffff"
    }
  },
  "required": [
    "text"
  ],
  "additionalProperties": false
}
🟢rdap_lookup(query, fields)

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

入力スキーマ

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Domain name (example.com), IPv4/IPv6 address (1.1.1.1) or AS number (AS15169)"
    },
    "fields": {
      "type": "string",
      "enum": [
        "compact",
        "full"
      ],
      "default": "compact",
      "description": "compact: normalised summary; full: summary plus the registry answer without contact data under 'raw'"
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟢screenshot(url, width, height, full_page, format, ...)

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

入力スキーマ

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120000,
      "description": "Public http(s) URL (robots.txt is honoured), or an inline data:text/html URL"
    },
    "width": {
      "type": "integer",
      "minimum": 320,
      "maximum": 2560,
      "default": 1280,
      "description": "Viewport width in CSS px"
    },
    "height": {
      "type": "integer",
      "minimum": 240,
      "maximum": 4000,
      "default": 800,
      "description": "Viewport height in CSS px"
    },
    "full_page": {
      "type": "boolean",
      "default": false,
      "description": "Capture the whole scrollable page (capped at 16384 CSS px / 50 megapixels)"
    },
    "format": {
      "type": "string",
      "enum": [
        "png",
        "jpeg",
        "jpg",
        "webp"
      ],
      "default": "png"
    },
    "quality": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 90,
      "description": "jpeg / webp quality"
    },
    "delay_ms": {
      "type": "integer",
      "minimum": 0,
      "maximum": 3000,
      "default": 0,
      "description": "Extra wait after load, before the shot"
    },
    "device_scale_factor": {
      "type": "number",
      "minimum": 1,
      "maximum": 3,
      "default": 1,
      "description": "Pixel density (2 = retina)"
    },
    "block_cookie_banners": {
      "type": "boolean",
      "default": false,
      "description": "Hide common cookie-consent dialogs (best effort)"
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}
🟢svg_to_png(svg, file, width, height, scale, ...)

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

入力スキーマ

{
  "type": "object",
  "properties": {
    "svg": {
      "type": "string",
      "description": "The SVG markup as text (up to 2 MB). Use `file` instead for a base64 / URL / uploaded .svg or .svgz"
    },
    "file": {
      "type": [
        "string",
        "object"
      ],
      "description": "Alternative to `svg`: an .svg or .svgz file as base64, data: URI or {\"url\": \"https://...\"}"
    },
    "width": {
      "type": "integer",
      "minimum": 1,
      "maximum": 8192,
      "description": "Output width in px (height follows the aspect ratio unless given)"
    },
    "height": {
      "type": "integer",
      "minimum": 1,
      "maximum": 8192,
      "description": "Output height in px (width follows the aspect ratio unless given)"
    },
    "scale": {
      "type": "number",
      "minimum": 0.05,
      "maximum": 16,
      "description": "Multiplier of the SVG's own size (default 1); not combinable with width / height"
    },
    "background": {
      "type": "string",
      "pattern": "^(transparent|#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?)$",
      "default": "transparent",
      "description": "transparent, #rrggbb or #rrggbbaa"
    }
  },
  "additionalProperties": false
}
🟢tabular_convert(file, from, to, sheet, header, ...)

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?}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "file": {
      "type": [
        "string",
        "object"
      ],
      "description": "The table: base64 string (or data: URI) or {\"url\": \"https://...\"}. Up to 10 MB.",
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 2048
        }
      },
      "required": [
        "url"
      ]
    },
    "from": {
      "type": "string",
      "enum": [
        "csv",
        "tsv",
        "xlsx",
        "json"
      ],
      "description": "Source format. Omit to auto-detect."
    },
    "to": {
      "type": "string",
      "enum": [
        "csv",
        "tsv",
        "xlsx",
        "json"
      ],
      "description": "Target format."
    },
    "sheet": {
      "type": [
        "string",
        "integer"
      ],
      "minimum": 0,
      "minLength": 1,
      "description": "xlsx input: sheet name, or 0-based sheet index (default: the first sheet)."
    },
    "header": {
      "type": "boolean",
      "default": true,
      "description": "The first row is a header (becomes JSON keys). false: no header row is read or written, and JSON output is an array of arrays."
    },
    "delimiter": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1,
      "description": "csv input: field delimiter (default: detected among , ; tab |)."
    },
    "encoding": {
      "type": "string",
      "maxLength": 40,
      "default": "utf-8",
      "description": "Text encoding of csv/tsv/json input. utf-8 falls back to cp1252; any other value is strict."
    },
    "max_rows": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000,
      "default": 200000,
      "description": "Reject inputs with more data rows than this (413) instead of truncating silently."
    },
    "infer_types": {
      "type": "boolean",
      "default": true,
      "description": "csv/tsv input to json/xlsx output: turn exact numbers (and, for xlsx, ISO dates) and true/false into typed values."
    }
  },
  "required": [
    "file",
    "to"
  ],
  "additionalProperties": false
}
🟢timezone_convert(op, datetime, from_tz, to_tz, tz, ...)

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}

入力スキーマ

{
  "type": "object",
  "properties": {
    "op": {
      "type": "string",
      "enum": [
        "convert",
        "info",
        "list"
      ],
      "default": "convert"
    },
    "datetime": {
      "type": "string",
      "minLength": 8,
      "maxLength": 48,
      "description": "ISO 8601, e.g. 2026-03-29T01:30:00 (wall clock in from_tz / tz) or 2026-03-29T00:30:00Z / 2026-03-29T01:30:00+01:00 (exact instant). Required for convert and info."
    },
    "from_tz": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "convert: source zone, an IANA name such as Europe/Berlin or a fixed offset such as +05:30. Required when datetime has no offset."
    },
    "to_tz": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "convert: target zone, an IANA name or a fixed offset. Required for convert."
    },
    "tz": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "info: the zone to describe, an IANA name or a fixed offset (from_tz is accepted as an alias). Required for info."
    },
    "country": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "list: ISO 3166-1 alpha-2 code, e.g. US. Omit to list every zone."
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "list: only zones whose name contains this text (case-insensitive), e.g. york or europe/"
    }
  },
  "additionalProperties": false
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 26 件