{
  "success": true,
  "data": {
    "tools": [
      {
        "id": "json-formatter",
        "name": "JSON Formatter",
        "description": "Validate, format, and inspect JSON. Returns structured data with keys, types, and pretty-printed output.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "JSON string to validate/format"
          },
          {
            "name": "indent",
            "type": "number",
            "required": false,
            "desc": "Indent spaces (default: 2)"
          }
        ],
        "endpoint": "/api/v1/json-formatter",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "qr-code",
        "name": "QR Code Generator",
        "description": "Generate QR codes as SVG or PNG. Returns structured JSON metadata or raw SVG image.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Content to encode in QR"
          },
          {
            "name": "size",
            "type": "number",
            "required": false,
            "desc": "Image size in px (default: 256)"
          },
          {
            "name": "format",
            "type": "string",
            "required": false,
            "desc": "'svg' or 'json' (default: svg)"
          }
        ],
        "endpoint": "/api/v1/qr-code",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "hash",
        "name": "Hash Generator",
        "description": "Generate hashes using MD5, SHA-1, SHA-256, SHA-384, or SHA-512. Returns hex output + all algorithms.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "Text to hash"
          },
          {
            "name": "algorithm",
            "type": "string",
            "required": false,
            "desc": "md5|sha1|sha256|sha384|sha512 (default: sha256)"
          }
        ],
        "endpoint": "/api/v1/hash",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "html-preview",
        "name": "HTML Preview",
        "description": "Preview HTML rendering. Returns rendered HTML or wrapped snippet.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "HTML content to render"
          },
          {
            "name": "format",
            "type": "string",
            "required": false,
            "desc": "'html' or 'json' (default: html)"
          }
        ],
        "endpoint": "/api/v1/html-preview",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "color-converter",
        "name": "Color Converter",
        "description": "Convert between HEX, RGB, and HSL color formats.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "color",
            "type": "string",
            "required": true,
            "desc": "Color value: #ff6600, rgb(255,102,0), or hsl(30,100%,50%)"
          }
        ],
        "endpoint": "/api/v1/color-converter",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "cron-builder",
        "name": "Cron Builder",
        "description": "Parse and explain cron expressions. Get field breakdowns and next run estimates.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "expression",
            "type": "string",
            "required": true,
            "desc": "5-field cron expression (e.g. '*/5 * * * *')"
          }
        ],
        "endpoint": "/api/v1/cron-builder",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "diff-checker",
        "name": "Diff Checker",
        "description": "Compare two texts and get structured diff output with line-level additions/removals.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "first",
            "type": "string",
            "required": true,
            "desc": "First text for comparison"
          },
          {
            "name": "second",
            "type": "string",
            "required": true,
            "desc": "Second text for comparison"
          }
        ],
        "endpoint": "/api/v1/diff-checker",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "image-to-webp",
        "name": "Image to WebP",
        "description": "Convert images to WebP format via URL. Returns source metadata and WebP URL.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "Public URL of image to convert"
          }
        ],
        "endpoint": "/api/v1/image-to-webp",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "svg-optimizer",
        "name": "SVG Optimizer",
        "description": "Optimize SVG markup: remove whitespace, comments, and redundant attributes.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "SVG markup to optimize"
          }
        ],
        "endpoint": "/api/v1/svg-optimizer",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "base64",
        "name": "Base64 Encode/Decode",
        "description": "Encode or decode Base64 text. Returns both encoded and decoded output.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "Text to encode/decode"
          },
          {
            "name": "action",
            "type": "string",
            "required": false,
            "desc": "'encode' or 'decode' (default: encode)"
          }
        ],
        "endpoint": "/api/v1/base64",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "url-encoder",
        "name": "URL Encoder/Decoder",
        "description": "Encode or decode URL components with proper percent-encoding.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "URL to encode/decode"
          },
          {
            "name": "action",
            "type": "string",
            "required": false,
            "desc": "'encode' or 'decode' (default: encode)"
          }
        ],
        "endpoint": "/api/v1/url-encoder",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "jwt-decoder",
        "name": "JWT Decoder",
        "description": "Decode JWT tokens. Returns header, payload, and metadata (issuer, expiry, etc).",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "token",
            "type": "string",
            "required": true,
            "desc": "JWT token to decode"
          }
        ],
        "endpoint": "/api/v1/jwt-decoder",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "uuid",
        "name": "UUID Generator",
        "description": "Generate random UUID v4 identifiers. Batch up to 100 at once.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "count",
            "type": "number",
            "required": false,
            "desc": "Number of UUIDs (1-100, default: 1)"
          }
        ],
        "endpoint": "/api/v1/uuid",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "token-counter",
        "name": "Token Counter",
        "description": "Count tokens, words, characters, and estimate reading time for any text.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "Text to analyze"
          }
        ],
        "endpoint": "/api/v1/token-counter",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "text-summarizer",
        "name": "Text Summarizer",
        "description": "Extractive text summarization using frequency scoring. Returns top N most relevant sentences.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "Long text to summarize"
          },
          {
            "name": "sentences",
            "type": "number",
            "required": false,
            "desc": "Number of summary sentences (default: 3)"
          }
        ],
        "endpoint": "/api/v1/text-summarizer",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "case-converter",
        "name": "Case Converter",
        "description": "Convert text between upper, lower, title, sentence, camelCase, snake_case, kebab-case, and PascalCase.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "Text to convert"
          }
        ],
        "endpoint": "/api/v1/case-converter",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "base-converter",
        "name": "Base Converter",
        "description": "Convert numbers between binary, octal, decimal, hex, and any custom base.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "value",
            "type": "string",
            "required": true,
            "desc": "Number to convert"
          },
          {
            "name": "from",
            "type": "number",
            "required": false,
            "desc": "Source base (default: 10)"
          },
          {
            "name": "to",
            "type": "number",
            "required": false,
            "desc": "Target base (default: 16)"
          }
        ],
        "endpoint": "/api/v1/base-converter",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "unit-converter",
        "name": "Unit Converter",
        "description": "Convert between units of length, mass, volume, and temperature. Returns all conversions.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "value",
            "type": "number",
            "required": true,
            "desc": "Numeric value to convert"
          },
          {
            "name": "from",
            "type": "string",
            "required": true,
            "desc": "Source unit (m, km, ft, kg, lb, L, gal, C, F, etc.)"
          },
          {
            "name": "to",
            "type": "string",
            "required": true,
            "desc": "Target unit"
          },
          {
            "name": "category",
            "type": "string",
            "required": false,
            "desc": "length|mass|volume|temperature (default: length)"
          }
        ],
        "endpoint": "/api/v1/unit-converter",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "password-generator",
        "name": "Password Generator",
        "description": "Generate cryptographically secure random passwords with configurable character sets.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "length",
            "type": "number",
            "required": false,
            "desc": "Password length (4-128, default: 20)"
          },
          {
            "name": "upper",
            "type": "boolean",
            "required": false,
            "desc": "Include uppercase (default: true)"
          },
          {
            "name": "lower",
            "type": "boolean",
            "required": false,
            "desc": "Include lowercase (default: true)"
          },
          {
            "name": "digits",
            "type": "boolean",
            "required": false,
            "desc": "Include digits (default: true)"
          },
          {
            "name": "symbols",
            "type": "boolean",
            "required": false,
            "desc": "Include symbols (default: false)"
          },
          {
            "name": "count",
            "type": "number",
            "required": false,
            "desc": "Number of passwords (1-20, default: 1)"
          }
        ],
        "endpoint": "/api/v1/password-generator",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "lorem-ipsum",
        "name": "Lorem Ipsum Generator",
        "description": "Generate lorem ipsum placeholder text. Configurable paragraphs and words.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "paragraphs",
            "type": "number",
            "required": false,
            "desc": "Number of paragraphs (1-50, default: 3)"
          },
          {
            "name": "words",
            "type": "number",
            "required": false,
            "desc": "Words per paragraph (5-500, default: 50)"
          }
        ],
        "endpoint": "/api/v1/lorem-ipsum",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "countries",
        "name": "Country Data",
        "description": "Get country data by code, search, or list all. Returns name, capital, currency, calling code, flag, region.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "code",
            "type": "string",
            "required": false,
            "desc": "2-letter country code (NO, US, GB)"
          },
          {
            "name": "code3",
            "type": "string",
            "required": false,
            "desc": "3-letter country code (NOR, USA, GBR)"
          },
          {
            "name": "search",
            "type": "string",
            "required": false,
            "desc": "Search by name, code, or capital"
          }
        ],
        "endpoint": "/api/v1/countries",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ip",
        "name": "IP Geolocation",
        "description": "Get geographic info for an IP address. Self-lookup uses Cloudflare native data; specific IP uses ip-api.com.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "ip",
            "type": "string",
            "required": false,
            "desc": "IP address to look up (omit for your own IP)"
          }
        ],
        "endpoint": "/api/v1/ip",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "currency",
        "name": "Currency Converter",
        "description": "Convert between currencies at live exchange rates. Returns rate, result, and source data.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "from",
            "type": "string",
            "required": false,
            "desc": "Source currency code (default: USD)"
          },
          {
            "name": "to",
            "type": "string",
            "required": false,
            "desc": "Target currency code"
          },
          {
            "name": "amount",
            "type": "number",
            "required": false,
            "desc": "Amount to convert (default: 1)"
          },
          {
            "name": "list",
            "type": "boolean",
            "required": false,
            "desc": "Set true to list supported currencies"
          }
        ],
        "endpoint": "/api/v1/currency",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "email-verify",
        "name": "Email Verify",
        "description": "Validate email addresses: syntax check, MX record lookup, disposable domain detection, role-based detection, typo suggestions.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "email",
            "type": "string",
            "required": true,
            "desc": "Email address to verify"
          }
        ],
        "endpoint": "/api/v1/email-verify",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "og-image",
        "name": "OG Image Generator",
        "description": "Generate Open Graph social share images (1200x630 SVG). Customize title, description, site name, colors, and logo.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "title",
            "type": "string",
            "required": true,
            "desc": "Main title text"
          },
          {
            "name": "description",
            "type": "string",
            "required": false,
            "desc": "Subtitle or description"
          },
          {
            "name": "site",
            "type": "string",
            "required": false,
            "desc": "Site/company name"
          },
          {
            "name": "bg",
            "type": "string",
            "required": false,
            "desc": "Background color hex (default: #0f172a)"
          },
          {
            "name": "color",
            "type": "string",
            "required": false,
            "desc": "Text color hex (default: #ffffff)"
          },
          {
            "name": "accent",
            "type": "string",
            "required": false,
            "desc": "Accent color hex (default: #a855f7)"
          }
        ],
        "endpoint": "/api/v1/og-image",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "iban-validator",
        "name": "IBAN Validator",
        "description": "Validate international bank account numbers (IBAN). Checks country support, length, format, and MOD-97 check digits.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "iban",
            "type": "string",
            "required": true,
            "desc": "IBAN to validate"
          }
        ],
        "endpoint": "/api/v1/iban-validator",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "vat-validator",
        "name": "VAT Validator",
        "description": "Validate EU/EEA VAT numbers against official country formats. Detects country from prefix, validates format.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "vat",
            "type": "string",
            "required": true,
            "desc": "VAT number to validate (e.g. NO123456789MVA)"
          },
          {
            "name": "country",
            "type": "string",
            "required": false,
            "desc": "Country code hint (AT, DE, NO, etc.)"
          }
        ],
        "endpoint": "/api/v1/vat-validator",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "phone",
        "name": "Phone Validator/Formatter",
        "description": "Validate and format phone numbers. Detects country from prefix, checks length, formats to E.164.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "phone",
            "type": "string",
            "required": true,
            "desc": "Phone number to validate"
          },
          {
            "name": "country",
            "type": "string",
            "required": false,
            "desc": "Country hint (NO, US, GB, etc.)"
          }
        ],
        "endpoint": "/api/v1/phone",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "json-to-ts",
        "name": "JSON to TypeScript",
        "description": "Convert JSON objects to TypeScript interface definitions. Handles nested objects, arrays, and primitive types.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "JSON string to convert"
          },
          {
            "name": "name",
            "type": "string",
            "required": false,
            "desc": "Interface name (default: RootObject)"
          }
        ],
        "endpoint": "/api/v1/json-to-ts",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "css-inliner",
        "name": "CSS Inliner",
        "description": "Inline CSS from HTML style tags into element style attributes. Cleaner email HTML.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "html",
            "type": "string",
            "required": true,
            "desc": "HTML with CSS to inline"
          }
        ],
        "endpoint": "/api/v1/css-inliner",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "keys",
        "name": "API Key Management",
        "description": "Create, list, and revoke API keys. POST /create, GET /keys?email=, POST /revoke.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "email",
            "type": "string",
            "required": true,
            "desc": "Email for key creation/list"
          },
          {
            "name": "tier",
            "type": "string",
            "required": false,
            "desc": "starter|growth|scale (default: starter)"
          }
        ],
        "endpoint": "/api/v1/keys",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "credit-card",
        "name": "Credit Card BIN Lookup",
        "description": "Validate credit card numbers (Luhn) and detect brand, scheme, and BIN info.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "card",
            "type": "string",
            "required": true,
            "desc": "Card number"
          }
        ],
        "endpoint": "/api/v1/credit-card",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "domain-reputation",
        "name": "Domain Reputation",
        "description": "Check if a domain is disposable, suspicious, or free email provider. Includes risk scoring.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "domain",
            "type": "string",
            "required": true,
            "desc": "Domain to check"
          }
        ],
        "endpoint": "/api/v1/domain-reputation",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "password-strength",
        "name": "Password Strength Checker",
        "description": "Entropy-based password strength scoring. Checks length, character variety, common patterns.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "password",
            "type": "string",
            "required": true,
            "desc": "Password to evaluate"
          }
        ],
        "endpoint": "/api/v1/password-strength",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ssn-validator",
        "name": "SSN/Personnummer Validator",
        "description": "Validate social security numbers for NO, SE, DK. Checksum validation, gender detection, birth date extraction.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "ssn",
            "type": "string",
            "required": true,
            "desc": "Number to validate"
          },
          {
            "name": "country",
            "type": "string",
            "required": false,
            "desc": "NO, SE, or DK (default: NO)"
          }
        ],
        "endpoint": "/api/v1/ssn-validator",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "org-enrichment",
        "name": "Company/Org Enrichment",
        "description": "Norwegian org number lookup. Returns name, address, industry, employees, status via Brreg API.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "org",
            "type": "string",
            "required": false,
            "desc": "Org number (9 digits)"
          },
          {
            "name": "name",
            "type": "string",
            "required": false,
            "desc": "Company name search"
          }
        ],
        "endpoint": "/api/v1/org-enrichment",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "url-safety",
        "name": "URL Safety Check",
        "description": "Scan URLs for suspicious patterns, phishing indicators, and security risks.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "URL to check"
          }
        ],
        "endpoint": "/api/v1/url-safety",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "list-cleaner",
        "name": "List Cleaner",
        "description": "Deduplicate and validate email or phone number lists. Returns cleaned list and invalid entries.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "list",
            "type": "string",
            "required": true,
            "desc": "Newline-separated list"
          },
          {
            "name": "type",
            "type": "string",
            "required": false,
            "desc": "email or phone (default: email)"
          }
        ],
        "endpoint": "/api/v1/list-cleaner",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "image-optimizer",
        "name": "Image Optimizer",
        "description": "Optimize images: resize, compress, convert format (WebP/AVIF). Uses CF Images binding.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "Image URL"
          },
          {
            "name": "format",
            "type": "string",
            "required": false,
            "desc": "webp|jpeg|avif (default: webp)"
          },
          {
            "name": "width",
            "type": "number",
            "required": false,
            "desc": "Target width"
          },
          {
            "name": "quality",
            "type": "number",
            "required": false,
            "desc": "Quality 1-100 (default: 80)"
          }
        ],
        "endpoint": "/api/v1/image-optimizer",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "image-palette",
        "name": "Image Color Palette",
        "description": "Extract dominant colors from images. Returns hex, RGB, and weight for top colors.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "Image URL"
          }
        ],
        "endpoint": "/api/v1/image-palette",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "barcode",
        "name": "Barcode Generator",
        "description": "Generate barcodes and QR codes. Supports Code128, Code39, EAN-13, UPC-A, DataMatrix, PDF417, QR.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Data to encode"
          },
          {
            "name": "type",
            "type": "string",
            "required": false,
            "desc": "code128|code39|ean13|upca|qrcode|datamatrix|pdf417"
          },
          {
            "name": "format",
            "type": "string",
            "required": false,
            "desc": "png or json"
          },
          {
            "name": "scale",
            "type": "number",
            "required": false,
            "desc": "Scale factor (default: 3)"
          }
        ],
        "endpoint": "/api/v1/barcode",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "image-watermark",
        "name": "Image Watermark",
        "description": "Add text watermark to images. Customizable position, opacity, and text.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "Image URL"
          },
          {
            "name": "text",
            "type": "string",
            "required": false,
            "desc": "Watermark text (default: APImcp.site)"
          },
          {
            "name": "position",
            "type": "string",
            "required": false,
            "desc": "top-left|top-right|bottom-left|bottom-right|center"
          },
          {
            "name": "opacity",
            "type": "number",
            "required": false,
            "desc": "Opacity percent (0-100)"
          }
        ],
        "endpoint": "/api/v1/image-watermark",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "json-csv",
        "name": "JSON to CSV / CSV to JSON",
        "description": "Bidirectional conversion between JSON arrays and CSV tables.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "Input data"
          },
          {
            "name": "action",
            "type": "string",
            "required": false,
            "desc": "json2csv or csv2json"
          }
        ],
        "endpoint": "/api/v1/json-csv",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "yaml-json",
        "name": "YAML to JSON / JSON to YAML",
        "description": "Bidirectional conversion between YAML and JSON formats.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "Input data"
          },
          {
            "name": "action",
            "type": "string",
            "required": false,
            "desc": "yaml2json or json2yaml"
          }
        ],
        "endpoint": "/api/v1/yaml-json",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "sql-formatter",
        "name": "SQL Formatter",
        "description": "Pretty-print SQL queries. Supports multiple SQL dialects, uppercase keywords, configurable indent.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "sql",
            "type": "string",
            "required": true,
            "desc": "SQL query to format"
          },
          {
            "name": "language",
            "type": "string",
            "required": false,
            "desc": "sql|mysql|postgresql|bigquery|tsql"
          }
        ],
        "endpoint": "/api/v1/sql-formatter",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "json-schema",
        "name": "JSON Schema Generator",
        "description": "Infer JSON Schema from sample JSON data. Detects types, formats, required fields.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "Sample JSON data"
          }
        ],
        "endpoint": "/api/v1/json-schema",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "xml-json",
        "name": "XML to JSON / JSON to XML",
        "description": "Bidirectional conversion between XML and JSON. Preserves attributes.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "input",
            "type": "string",
            "required": true,
            "desc": "Input data"
          },
          {
            "name": "action",
            "type": "string",
            "required": false,
            "desc": "xml2json or json2xml"
          }
        ],
        "endpoint": "/api/v1/xml-json",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "dns-lookup",
        "name": "DNS Lookup",
        "description": "Look up DNS records: A, AAAA, MX, TXT, NS, CNAME, SOA, SRV, CAA, TLSA.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "name",
            "type": "string",
            "required": true,
            "desc": "Domain name"
          },
          {
            "name": "type",
            "type": "string",
            "required": false,
            "desc": "a|aaaa|mx|txt|ns|cname|soa"
          }
        ],
        "endpoint": "/api/v1/dns-lookup",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ssl-info",
        "name": "SSL/TLS Certificate Info",
        "description": "Get SSL certificate details for a domain. Links to SSLLabs, crt.sh, Security Headers.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "host",
            "type": "string",
            "required": true,
            "desc": "Hostname to check"
          }
        ],
        "endpoint": "/api/v1/ssl-info",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "whois",
        "name": "WHOIS Domain Lookup",
        "description": "Domain registration info via RDAP. Returns registrar, dates, name servers, status.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "domain",
            "type": "string",
            "required": true,
            "desc": "Domain name"
          }
        ],
        "endpoint": "/api/v1/whois",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "fake-data",
        "name": "Fake Data Generator",
        "description": "Generate realistic fake data: names, emails, phones, companies, addresses, IBANs. Up to 100 records.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "locale",
            "type": "string",
            "required": false,
            "desc": "en|nb_NO|sv|de|fr|es"
          },
          {
            "name": "count",
            "type": "number",
            "required": false,
            "desc": "Records to generate (1-100)"
          },
          {
            "name": "fields",
            "type": "string",
            "required": false,
            "desc": "Comma-separated field names"
          }
        ],
        "endpoint": "/api/v1/fake-data",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-text-rewrite",
        "name": "AI Text Rewriter",
        "description": "Rewrite text in different tones (professional, casual, formal, friendly, humorous). Uses Workers AI — no external API.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to rewrite"
          },
          {
            "name": "tone",
            "type": "string",
            "required": false,
            "desc": "professional|casual|formal|friendly|humorous|persuasive (default: professional)"
          }
        ],
        "endpoint": "/api/v1/ai-text-rewrite",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-grammar",
        "name": "AI Grammar Check",
        "description": "Fix grammar and spelling errors in text using AI. Returns corrected version.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to check"
          }
        ],
        "endpoint": "/api/v1/ai-grammar",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-sentiment",
        "name": "AI Sentiment Analysis",
        "description": "Analyze sentiment (positive/negative/neutral) and detect emotions (joy, anger, sadness, fear, surprise) in text.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to analyze"
          }
        ],
        "endpoint": "/api/v1/ai-sentiment",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-translate",
        "name": "AI Translation",
        "description": "Translate text between 50+ languages using Workers AI. Zero external API cost.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to translate"
          },
          {
            "name": "to",
            "type": "string",
            "required": false,
            "desc": "Target language code (default: en)"
          }
        ],
        "endpoint": "/api/v1/ai-translate",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-seo",
        "name": "AI SEO Generator",
        "description": "Generate SEO-optimized title tags and meta descriptions from content.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Content to generate SEO for"
          }
        ],
        "endpoint": "/api/v1/ai-seo",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-hashtags",
        "name": "AI Hashtag Generator",
        "description": "Generate relevant hashtags for social media from content.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Content to generate hashtags for"
          },
          {
            "name": "count",
            "type": "number",
            "required": false,
            "desc": "Number of hashtags (default: 5)"
          }
        ],
        "endpoint": "/api/v1/ai-hashtags",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-faq",
        "name": "AI FAQ Generator",
        "description": "Generate FAQ questions and answers from content.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Content to generate FAQs from"
          },
          {
            "name": "count",
            "type": "number",
            "required": false,
            "desc": "Number of FAQs (default: 3)"
          }
        ],
        "endpoint": "/api/v1/ai-faq",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-blog-outline",
        "name": "AI Blog Outline Generator",
        "description": "Generate blog post outlines with headings and bullet points from a topic.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "topic",
            "type": "string",
            "required": true,
            "desc": "Blog topic"
          }
        ],
        "endpoint": "/api/v1/ai-blog-outline",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-product-desc",
        "name": "AI Product Description",
        "description": "Write compelling product descriptions with tagline, benefits, and CTA.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "name",
            "type": "string",
            "required": true,
            "desc": "Product name"
          },
          {
            "name": "features",
            "type": "string",
            "required": false,
            "desc": "Key features comma-separated"
          }
        ],
        "endpoint": "/api/v1/ai-product-desc",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-social-post",
        "name": "AI Social Media Post",
        "description": "Generate social media posts for Twitter, LinkedIn, or Facebook from content.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Content to post about"
          },
          {
            "name": "platform",
            "type": "string",
            "required": false,
            "desc": "twitter|linkedin|facebook (default: twitter)"
          }
        ],
        "endpoint": "/api/v1/ai-social-post",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-summarize",
        "name": "AI Summarizer",
        "description": "Summarize long text into concise bullet points using AI. Better than TF-IDF version.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to summarize"
          },
          {
            "name": "bullets",
            "type": "number",
            "required": false,
            "desc": "Number of bullet points (default: 3)"
          }
        ],
        "endpoint": "/api/v1/ai-summarize",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "email-syntax",
        "name": "Email Syntax Checker",
        "description": "RFC 5322 email syntax validation with detailed breakdown of local part and domain.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "email",
            "type": "string",
            "required": true,
            "desc": "Email address to validate"
          }
        ],
        "endpoint": "/api/v1/email-syntax",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "email-role",
        "name": "Email Role Account Detector",
        "description": "Detect if email is a role-based account (admin@, info@, support@, etc.).",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "email",
            "type": "string",
            "required": true,
            "desc": "Email address"
          }
        ],
        "endpoint": "/api/v1/email-role",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "email-temp",
        "name": "Temporary Email Detector",
        "description": "Check if email uses a known temporary/disposable domain.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "email",
            "type": "string",
            "required": true,
            "desc": "Email address"
          }
        ],
        "endpoint": "/api/v1/email-temp",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "email-typosquat",
        "name": "Email Typosquat Detector",
        "description": "Detect homoglyph and typosquat domains (g00gle.com vs google.com).",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "domain",
            "type": "string",
            "required": true,
            "desc": "Domain to check"
          }
        ],
        "endpoint": "/api/v1/email-typosquat",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "email-deliverability",
        "name": "Email Deliverability Score",
        "description": "Composite score (0-100) based on syntax, role detection, temporary domain, and domain length.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "email",
            "type": "string",
            "required": true,
            "desc": "Email address"
          }
        ],
        "endpoint": "/api/v1/email-deliverability",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "mx-lookup",
        "name": "MX Record Lookup",
        "description": "Check MX records for a domain via Cloudflare DNS-over-HTTPS. Lists mail exchange servers with priorities.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "domain",
            "type": "string",
            "required": true,
            "desc": "Domain to look up"
          }
        ],
        "endpoint": "/api/v1/mx-lookup",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "pdf-page-count",
        "name": "PDF Page Count",
        "description": "Get page count from uploaded PDF. POST with PDF binary.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "body",
            "type": "file",
            "required": true,
            "desc": "PDF file in request body (POST)"
          }
        ],
        "endpoint": "/api/v1/pdf-page-count",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "pdf-merge",
        "name": "PDF Merge",
        "description": "Merge multiple PDFs into one. POST with 2+ files as form-data 'file' fields.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "file",
            "type": "file",
            "required": true,
            "desc": "Form-data file field (multiple)"
          }
        ],
        "endpoint": "/api/v1/pdf-merge",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "pdf-split",
        "name": "PDF Split",
        "description": "Split a PDF into individual pages. POST with PDF binary.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "body",
            "type": "file",
            "required": true,
            "desc": "PDF file in request body (POST)"
          }
        ],
        "endpoint": "/api/v1/pdf-split",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "pdf-info",
        "name": "PDF Metadata",
        "description": "Extract PDF metadata (title, author, subject, keywords, page count). POST with PDF binary.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "body",
            "type": "file",
            "required": true,
            "desc": "PDF file in request body (POST)"
          }
        ],
        "endpoint": "/api/v1/pdf-info",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "invoice-generator",
        "name": "Invoice Generator",
        "description": "Generate a professional PDF invoice from parameters. Returns downloadable PDF.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "recipient",
            "type": "string",
            "required": false,
            "desc": "Recipient name"
          },
          {
            "name": "amount",
            "type": "string",
            "required": false,
            "desc": "Invoice amount"
          },
          {
            "name": "invoice",
            "type": "string",
            "required": false,
            "desc": "Invoice number"
          },
          {
            "name": "items",
            "type": "string",
            "required": false,
            "desc": "Item description"
          }
        ],
        "endpoint": "/api/v1/invoice-generator",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "certificate-generator",
        "name": "Certificate Generator",
        "description": "Generate a completion/achievement certificate as PDF.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "name",
            "type": "string",
            "required": false,
            "desc": "Recipient name"
          },
          {
            "name": "course",
            "type": "string",
            "required": false,
            "desc": "Course/completion description"
          },
          {
            "name": "issuer",
            "type": "string",
            "required": false,
            "desc": "Issuing organization"
          }
        ],
        "endpoint": "/api/v1/certificate-generator",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "curl-to-code",
        "name": "cURL to Code Converter",
        "description": "Convert cURL commands to Python, JavaScript, Go, Rust, or PHP code.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "curl",
            "type": "string",
            "required": true,
            "desc": "cURL command to convert"
          },
          {
            "name": "language",
            "type": "string",
            "required": false,
            "desc": "python|javascript|node|go|rust|php (default: python)"
          }
        ],
        "endpoint": "/api/v1/curl-to-code",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "html-to-markdown",
        "name": "HTML to Markdown",
        "description": "Convert HTML documents to clean Markdown format.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "html",
            "type": "string",
            "required": true,
            "desc": "HTML content"
          }
        ],
        "endpoint": "/api/v1/html-to-markdown",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "markdown-to-html",
        "name": "Markdown to HTML",
        "description": "Render Markdown to HTML with full CommonMark support.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "markdown",
            "type": "string",
            "required": true,
            "desc": "Markdown content"
          }
        ],
        "endpoint": "/api/v1/markdown-to-html",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "rss-to-json",
        "name": "RSS/Atom to JSON",
        "description": "Parse RSS or Atom feeds into structured JSON with items, categories, and metadata.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "RSS/Atom feed URL"
          }
        ],
        "endpoint": "/api/v1/rss-to-json",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "jsonpath-query",
        "name": "JSONPath Query",
        "description": "Query JSON data using JSONPath expressions. Extract specific values from complex structures.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "json",
            "type": "string",
            "required": true,
            "desc": "JSON data"
          },
          {
            "name": "path",
            "type": "string",
            "required": false,
            "desc": "JSONPath expression (default: $)"
          }
        ],
        "endpoint": "/api/v1/jsonpath-query",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "html-to-text",
        "name": "HTML to Plain Text",
        "description": "Strip HTML tags and extract clean plain text from HTML content.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "html",
            "type": "string",
            "required": true,
            "desc": "HTML content"
          }
        ],
        "endpoint": "/api/v1/html-to-text",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "user-agent-parse",
        "name": "User Agent Parser",
        "description": "Parse User-Agent strings into browser, OS, device, and CPU info.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "ua",
            "type": "string",
            "required": false,
            "desc": "User-Agent string (uses request header if omitted)"
          }
        ],
        "endpoint": "/api/v1/user-agent-parse",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "hmac-generator",
        "name": "HMAC Generator",
        "description": "Generate HMAC signatures using SHA-256, SHA-384, or SHA-512.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to sign"
          },
          {
            "name": "key",
            "type": "string",
            "required": false,
            "desc": "Secret key (default: 'secret')"
          },
          {
            "name": "algorithm",
            "type": "string",
            "required": false,
            "desc": "sha256|sha384|sha512 (default: sha256)"
          }
        ],
        "endpoint": "/api/v1/hmac-generator",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "jwt-validate",
        "name": "JWT Decode + Validate",
        "description": "Decode JWT tokens, check expiry, and inspect header/payload claims.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "token",
            "type": "string",
            "required": true,
            "desc": "JWT token"
          }
        ],
        "endpoint": "/api/v1/jwt-validate",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "cors-check",
        "name": "CORS Checker",
        "description": "Test if a URL allows cross-origin requests from a specific origin.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "URL to test"
          },
          {
            "name": "origin",
            "type": "string",
            "required": false,
            "desc": "Origin to test (default: https://example.com)"
          }
        ],
        "endpoint": "/api/v1/cors-check",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ssl-check",
        "name": "SSL/TLS Checker",
        "description": "Check SSL/TLS status for a domain. Links to SSL Labs, crt.sh, and Security Headers.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "host",
            "type": "string",
            "required": true,
            "desc": "Hostname to check"
          }
        ],
        "endpoint": "/api/v1/ssl-check",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "timezone-by-coord",
        "name": "Timezone by Coordinates",
        "description": "Approximate timezone from latitude/longitude (based on longitude 15°/hour).",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "lat",
            "type": "number",
            "required": true,
            "desc": "Latitude"
          },
          {
            "name": "lng",
            "type": "number",
            "required": true,
            "desc": "Longitude"
          }
        ],
        "endpoint": "/api/v1/timezone-by-coord",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "timezone-by-city",
        "name": "Timezone by City",
        "description": "Look up timezone, UTC offset, and DST info for major cities worldwide.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "city",
            "type": "string",
            "required": true,
            "desc": "City name"
          }
        ],
        "endpoint": "/api/v1/timezone-by-city",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "distance",
        "name": "Distance Calculator",
        "description": "Calculate distance between two coordinates in km, miles, and nautical miles.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "lat1",
            "type": "number",
            "required": true,
            "desc": "First latitude"
          },
          {
            "name": "lng1",
            "type": "number",
            "required": true,
            "desc": "First longitude"
          },
          {
            "name": "lat2",
            "type": "number",
            "required": true,
            "desc": "Second latitude"
          },
          {
            "name": "lng2",
            "type": "number",
            "required": true,
            "desc": "Second longitude"
          }
        ],
        "endpoint": "/api/v1/distance",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "page-info",
        "name": "Page Info Extractor",
        "description": "Extract title, meta description, OG tags, H1s, and word count from a URL.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "Page URL"
          }
        ],
        "endpoint": "/api/v1/page-info",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "link-checker",
        "name": "Broken Link Checker",
        "description": "Check if a URL returns a 4xx/5xx status (HEAD request).",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "URL to check"
          }
        ],
        "endpoint": "/api/v1/link-checker",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "readability",
        "name": "Readability Score",
        "description": "Calculate Flesch Reading Ease, Flesch-Kincaid Grade Level, and text statistics.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to analyze"
          }
        ],
        "endpoint": "/api/v1/readability",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "sitemap-parse",
        "name": "Sitemap Parser",
        "description": "Parse sitemap.xml files into URL lists. Supports both urlset and sitemapindex.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "Sitemap.xml URL"
          }
        ],
        "endpoint": "/api/v1/sitemap-parse",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "business-days",
        "name": "Business Days Calculator",
        "description": "Calculate working days, weekends, and total days between two dates.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "from",
            "type": "string",
            "required": true,
            "desc": "Start date (YYYY-MM-DD)"
          },
          {
            "name": "to",
            "type": "string",
            "required": true,
            "desc": "End date (YYYY-MM-DD)"
          },
          {
            "name": "country",
            "type": "string",
            "required": false,
            "desc": "Country code for holidays (optional)"
          }
        ],
        "endpoint": "/api/v1/business-days",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "holidays",
        "name": "Holiday Calendar",
        "description": "Get public holidays for a country and year (NO, UK, US supported).",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "year",
            "type": "number",
            "required": false,
            "desc": "Year (default: current)"
          },
          {
            "name": "country",
            "type": "string",
            "required": false,
            "desc": "NO|UK|US (default: NO)"
          }
        ],
        "endpoint": "/api/v1/holidays",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "industry-code",
        "name": "Industry Code Lookup",
        "description": "Look up NACE industry codes or search by keyword.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "code",
            "type": "string",
            "required": false,
            "desc": "NACE code (e.g. 62)"
          },
          {
            "name": "search",
            "type": "string",
            "required": false,
            "desc": "Search by industry name keyword"
          },
          {
            "name": "system",
            "type": "string",
            "required": false,
            "desc": "nace|naics (default: nace)"
          }
        ],
        "endpoint": "/api/v1/industry-code",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "timestamp",
        "name": "Timestamp Converter",
        "description": "Convert between Unix timestamps and human-readable dates. Get current time or convert any value.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "value",
            "type": "string",
            "required": false,
            "desc": "Unix timestamp or ISO date (empty = current time)"
          },
          {
            "name": "to",
            "type": "string",
            "required": false,
            "desc": "unix|iso (default: unix)"
          }
        ],
        "endpoint": "/api/v1/timestamp",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "age-calc",
        "name": "Age Calculator",
        "description": "Calculate exact age from birthdate — years, months, days, and days until next birthday.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "dob",
            "type": "string",
            "required": true,
            "desc": "Birthdate (YYYY-MM-DD)"
          }
        ],
        "endpoint": "/api/v1/age-calc",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "week-number",
        "name": "ISO Week Number",
        "description": "Get the ISO 8601 week number, day of year, and days in year for any date.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "date",
            "type": "string",
            "required": false,
            "desc": "Date (YYYY-MM-DD, default: today)"
          }
        ],
        "endpoint": "/api/v1/week-number",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "random",
        "name": "Random Generator",
        "description": "Generate random numbers, strings, UUIDs, bytes, or booleans. Uses Web Crypto for true randomness.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "type",
            "type": "string",
            "required": false,
            "desc": "number|string|uuid|bytes|boolean (default: number)"
          },
          {
            "name": "length",
            "type": "number",
            "required": false,
            "desc": "Length for strings/bytes (default: 8)"
          },
          {
            "name": "count",
            "type": "number",
            "required": false,
            "desc": "How many to generate (default: 1, max: 100)"
          },
          {
            "name": "min",
            "type": "number",
            "required": false,
            "desc": "Min value for numbers (default: 0)"
          },
          {
            "name": "max",
            "type": "number",
            "required": false,
            "desc": "Max value for numbers (default: 100)"
          }
        ],
        "endpoint": "/api/v1/random",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "uuid-v7",
        "name": "UUID v7 Generator",
        "description": "Generate time-sortable UUID v7 identifiers. Unlike UUID v4, these encode the timestamp for chronological ordering.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "count",
            "type": "number",
            "required": false,
            "desc": "Number of UUIDs (default: 1, max: 100)"
          }
        ],
        "endpoint": "/api/v1/uuid-v7",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "nanoid",
        "name": "NanoID Generator",
        "description": "Generate compact, URL-safe unique IDs in the NanoID format. Customizable length and alphabet.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "length",
            "type": "number",
            "required": false,
            "desc": "ID length (default: 21, max: 256)"
          },
          {
            "name": "alphabet",
            "type": "string",
            "required": false,
            "desc": "Custom alphabet (default: URL-safe)"
          },
          {
            "name": "count",
            "type": "number",
            "required": false,
            "desc": "Number of IDs (default: 1, max: 100)"
          }
        ],
        "endpoint": "/api/v1/nanoid",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "math-eval",
        "name": "Math Expression Evaluator",
        "description": "Safely evaluate arithmetic expressions. Supports +, -, *, /, %, ^, parentheses, and functions like sqrt(), abs(), sin(), cos().",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "expr",
            "type": "string",
            "required": true,
            "desc": "Math expression (e.g. (2+3)*4 or sqrt(144))"
          }
        ],
        "endpoint": "/api/v1/math-eval",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "slug-generator",
        "name": "Slug Generator",
        "description": "Convert text into URL-friendly slugs. Handles Unicode normalization, custom separators, and length limits.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to slugify"
          },
          {
            "name": "separator",
            "type": "string",
            "required": false,
            "desc": "Separator character (default: -)"
          },
          {
            "name": "lowercase",
            "type": "string",
            "required": false,
            "desc": "true|false (default: true)"
          },
          {
            "name": "max_length",
            "type": "number",
            "required": false,
            "desc": "Max slug length"
          }
        ],
        "endpoint": "/api/v1/slug-generator",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "text-statistics",
        "name": "Text Statistics",
        "description": "Analyze text for word count, sentence count, readability, vocabulary density, and character composition.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to analyze"
          }
        ],
        "endpoint": "/api/v1/text-statistics",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "html-encoder",
        "name": "HTML Encoder/Decoder",
        "description": "Encode or decode HTML entities (&, <, >, \", ') for safe HTML rendering.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to encode/decode"
          },
          {
            "name": "mode",
            "type": "string",
            "required": false,
            "desc": "encode|decode (default: encode)"
          }
        ],
        "endpoint": "/api/v1/html-encoder",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "unicode-util",
        "name": "Unicode Utility",
        "description": "Escape or unescape Unicode characters in text (\\uXXXX format).",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to process"
          },
          {
            "name": "mode",
            "type": "string",
            "required": false,
            "desc": "escape|unescape (default: escape)"
          }
        ],
        "endpoint": "/api/v1/unicode-util",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "levenshtein",
        "name": "Levenshtein Distance",
        "description": "Calculate the Levenshtein edit distance and similarity ratio between two strings.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "a",
            "type": "string",
            "required": true,
            "desc": "First string"
          },
          {
            "name": "b",
            "type": "string",
            "required": true,
            "desc": "Second string"
          }
        ],
        "endpoint": "/api/v1/levenshtein",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "base32",
        "name": "Base32 Encode/Decode",
        "description": "Encode or decode data using RFC 4648 Base32 encoding.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to encode/decode"
          },
          {
            "name": "mode",
            "type": "string",
            "required": false,
            "desc": "encode|decode (default: encode)"
          }
        ],
        "endpoint": "/api/v1/base32",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "base58",
        "name": "Base58 Encode/Decode",
        "description": "Encode or decode data using Bitcoin-style Base58 encoding (no look-alike characters).",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to encode/decode"
          },
          {
            "name": "mode",
            "type": "string",
            "required": false,
            "desc": "encode|decode (default: encode)"
          }
        ],
        "endpoint": "/api/v1/base58",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "subnet-calc",
        "name": "Subnet Calculator",
        "description": "Calculate network address, broadcast address, subnet mask, and host ranges for any IPv4 CIDR range.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "cidr",
            "type": "string",
            "required": true,
            "desc": "CIDR notation (e.g. 192.168.1.0/24)"
          }
        ],
        "endpoint": "/api/v1/subnet-calc",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ip-validator",
        "name": "IP Address Validator",
        "description": "Validate IPv4 and IPv6 addresses. Detects private, reserved, and multicast ranges.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "ip",
            "type": "string",
            "required": true,
            "desc": "IP address to validate"
          }
        ],
        "endpoint": "/api/v1/ip-validator",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "cidr-parse",
        "name": "CIDR Range Parser",
        "description": "Expand a CIDR block into its individual IP addresses. Shows network address and total address count.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "cidr",
            "type": "string",
            "required": true,
            "desc": "CIDR notation (e.g. 10.0.0.0/28)"
          }
        ],
        "endpoint": "/api/v1/cidr-parse",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "http-status",
        "name": "HTTP Status Code Lookup",
        "description": "Look up HTTP status codes by number — get name, class, and description for any code.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "code",
            "type": "number",
            "required": false,
            "desc": "HTTP status code (e.g. 404)"
          }
        ],
        "endpoint": "/api/v1/http-status",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "mime-lookup",
        "name": "MIME Type Lookup",
        "description": "Look up MIME types by file extension, or get the complete list of 60+ supported types.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "ext",
            "type": "string",
            "required": false,
            "desc": "File extension (e.g. .json, .png)"
          }
        ],
        "endpoint": "/api/v1/mime-lookup",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "port-common",
        "name": "Common Port Lookup",
        "description": "Look up common port numbers — get service name, protocol, and description.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "port",
            "type": "number",
            "required": false,
            "desc": "Port number (e.g. 443)"
          },
          {
            "name": "protocol",
            "type": "string",
            "required": false,
            "desc": "Filter by protocol: tcp|udp"
          }
        ],
        "endpoint": "/api/v1/port-common",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "jwt-encode",
        "name": "JWT Token Encoder",
        "description": "Create signed JWT tokens with a JSON payload using HS256 (HMAC-SHA256).",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "payload",
            "type": "string",
            "required": true,
            "desc": "JSON payload for the token"
          },
          {
            "name": "secret",
            "type": "string",
            "required": false,
            "desc": "Secret key for signing (default: apimcp-secret)"
          }
        ],
        "endpoint": "/api/v1/jwt-encode",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "toml-parser",
        "name": "TOML Parser",
        "description": "Convert between TOML and JSON formats. Parse TOML config files or generate TOML from JSON.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "toml",
            "type": "string",
            "required": true,
            "desc": "TOML or JSON content"
          },
          {
            "name": "mode",
            "type": "string",
            "required": false,
            "desc": "toml2json|json2toml (default: toml2json)"
          }
        ],
        "endpoint": "/api/v1/toml-parser",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ini-parser",
        "name": "INI Parser",
        "description": "Convert between INI and JSON formats. Parse INI config files or generate INI from JSON.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "ini",
            "type": "string",
            "required": true,
            "desc": "INI or JSON content"
          },
          {
            "name": "mode",
            "type": "string",
            "required": false,
            "desc": "ini2json|json2ini (default: ini2json)"
          }
        ],
        "endpoint": "/api/v1/ini-parser",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "env-util",
        "name": "Environment (.env) Utility",
        "description": "Parse .env files into structured JSON, validate variable names, or generate .env from JSON.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "env",
            "type": "string",
            "required": true,
            "desc": ".env content or JSON object"
          },
          {
            "name": "mode",
            "type": "string",
            "required": false,
            "desc": "parse|generate (default: parse)"
          }
        ],
        "endpoint": "/api/v1/env-util",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "dockerfile-gen",
        "name": "Dockerfile Generator",
        "description": "Generate production-ready Dockerfiles for Node.js, Python, Go, Rust, Deno, or static sites.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "language",
            "type": "string",
            "required": false,
            "desc": "node|python|go|rust|static|deno (default: node)"
          },
          {
            "name": "port",
            "type": "number",
            "required": false,
            "desc": "Exposed port (default: 3000)"
          }
        ],
        "endpoint": "/api/v1/dockerfile-gen",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "gitignore-gen",
        "name": ".gitignore Generator",
        "description": "Generate .gitignore templates for common languages and frameworks.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "language",
            "type": "string",
            "required": false,
            "desc": "node|python|go|rust|java|php|ruby|swift|elixir (default: node)"
          }
        ],
        "endpoint": "/api/v1/gitignore-gen",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "license-gen",
        "name": "License Generator",
        "description": "Generate open-source license text for MIT, Apache 2.0, GPLv3, BSD 2/3-Clause, or Unlicense.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "type",
            "type": "string",
            "required": false,
            "desc": "mit|apache|gpl3|bsd2|bsd3|unlicense (default: mit)"
          },
          {
            "name": "year",
            "type": "string",
            "required": false,
            "desc": "Copyright year (default: current year)"
          },
          {
            "name": "name",
            "type": "string",
            "required": false,
            "desc": "Copyright holder (default: APImcp.site)"
          }
        ],
        "endpoint": "/api/v1/license-gen",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "chart-generator",
        "name": "SVG Chart Generator",
        "description": "Generate beautiful SVG charts (bar, line, pie) from JSON data. Returns chart as SVG or JSON metadata. Dark theme, axis labels, legends.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "data",
            "type": "string",
            "required": true,
            "desc": "JSON array: [{\"label\":\"x\",\"value\":5},...]"
          },
          {
            "name": "type",
            "type": "string",
            "required": false,
            "desc": "bar|line|pie (default: bar)"
          },
          {
            "name": "format",
            "type": "string",
            "required": false,
            "desc": "json (metadata+SVG) or svg (raw image)"
          },
          {
            "name": "title",
            "type": "string",
            "required": false,
            "desc": "Chart title"
          }
        ],
        "endpoint": "/api/v1/chart-generator",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "webhook-bin",
        "name": "Webhook Test Bin",
        "description": "Create temporary webhook endpoints for testing. GET ?create=1 to create, POST /webhook-bin/<id> to capture, GET /webhook-bin/<id> to inspect. Auto-expires after 24h.",
        "methods": [
          "GET",
          "POST"
        ],
        "params": [
          {
            "name": "create",
            "type": "boolean",
            "required": false,
            "desc": "Set to create a new webhook bin"
          },
          {
            "name": "id",
            "type": "string",
            "required": false,
            "desc": "Bin ID (from URL path)"
          }
        ],
        "endpoint": "/api/v1/webhook-bin",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "http-debugger",
        "name": "HTTP Debugger",
        "description": "Make arbitrary HTTP requests and get full debug info: timing, redirect chain, response headers, body preview, TLS version, and server info.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "URL to debug"
          },
          {
            "name": "method",
            "type": "string",
            "required": false,
            "desc": "GET|POST|HEAD|PUT|DELETE (default: GET)"
          },
          {
            "name": "headers",
            "type": "string",
            "required": false,
            "desc": "JSON object of custom headers"
          },
          {
            "name": "body",
            "type": "string",
            "required": false,
            "desc": "Request body for POST/PUT"
          }
        ],
        "endpoint": "/api/v1/http-debugger",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "regex-tester",
        "name": "Regex Tester & Explainer",
        "description": "Test regular expressions against text. Shows all matches with positions, capturing groups, named groups, and explains what each pattern component does.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "pattern",
            "type": "string",
            "required": true,
            "desc": "Regex pattern"
          },
          {
            "name": "text",
            "type": "string",
            "required": true,
            "desc": "Text to test against"
          },
          {
            "name": "flags",
            "type": "string",
            "required": false,
            "desc": "Regex flags (g, i, m, s, u) default: g"
          }
        ],
        "endpoint": "/api/v1/regex-tester",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "cron-explainer",
        "name": "Cron Expression Explainer",
        "description": "Parse cron expressions into human-readable descriptions. Shows field breakdown, next 5 run times in ISO 8601, and schedule summary.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "expression",
            "type": "string",
            "required": true,
            "desc": "5-field cron expression (e.g. '*/15 * * * *')"
          }
        ],
        "endpoint": "/api/v1/cron-explainer",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "code-formatter",
        "name": "Code Formatter",
        "description": "Format code in JSON, CSS, JavaScript, TypeScript, and HTML. Returns formatted code with size comparison.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "code",
            "type": "string",
            "required": true,
            "desc": "Code to format"
          },
          {
            "name": "language",
            "type": "string",
            "required": false,
            "desc": "json|css|javascript|typescript|html (default: json)"
          }
        ],
        "endpoint": "/api/v1/code-formatter",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ip-info",
        "name": "IP Info Suite",
        "description": "Full IP intelligence using Cloudflare headers: country, city, ASN, threat score, TLS version, bot score, latency. Works automatically for your IP too.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "ip",
            "type": "string",
            "required": false,
            "desc": "IP address (omit for your own IP via Cloudflare headers)"
          }
        ],
        "endpoint": "/api/v1/ip-info",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "duration-calculator",
        "name": "Date Duration Calculator",
        "description": "Calculate precise time between two dates. Returns ms, seconds, minutes, hours, days, weeks, months, years + human-readable summary.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "from",
            "type": "string",
            "required": true,
            "desc": "Start date (ISO 8601: 2026-01-15 or 2026-01-15T14:30:00Z)"
          },
          {
            "name": "to",
            "type": "string",
            "required": true,
            "desc": "End date (ISO 8601)"
          },
          {
            "name": "action",
            "type": "string",
            "required": false,
            "desc": "diff (default: diff)"
          }
        ],
        "endpoint": "/api/v1/duration-calculator",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "bulk-checker",
        "name": "Bulk URL Health Check",
        "description": "Check up to 20 URLs simultaneously. Returns status codes, response times, and summary statistics (alive/dead, average latency, success rate).",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "urls",
            "type": "string",
            "required": true,
            "desc": "Comma or newline-separated URLs to check (max 20)"
          }
        ],
        "endpoint": "/api/v1/bulk-checker",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "json-to-table",
        "name": "JSON to HTML Table",
        "description": "Convert JSON arrays/objects into beautiful dark-themed HTML tables. Returns HTML or JSON with the rendered HTML.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "json",
            "type": "string",
            "required": true,
            "desc": "JSON data to convert"
          },
          {
            "name": "format",
            "type": "string",
            "required": false,
            "desc": "json (default) or html (return raw HTML)"
          }
        ],
        "endpoint": "/api/v1/json-to-table",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ssl-cert-info",
        "name": "SSL Certificate Info",
        "description": "Get SSL/TLS certificate details from Certificate Transparency logs. Shows issuer, SANs, expiry dates, days remaining via crt.sh.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "host",
            "type": "string",
            "required": true,
            "desc": "Hostname to check (e.g. google.com)"
          }
        ],
        "endpoint": "/api/v1/ssl-cert-info",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "ai-image-caption",
        "name": "AI Image Caption",
        "description": "Generate descriptive captions for images using Workers AI vision model. Submit a public image URL and get AI-generated description.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "Public image URL to analyze"
          }
        ],
        "endpoint": "/api/v1/ai-image-caption",
        "docs": "https://apimcp.site/api/v1/openapi"
      },
      {
        "id": "og-preview",
        "name": "Open Graph Preview",
        "description": "Extract full Open Graph and meta tags from any URL. Returns title, description, image, favicon, and raw OG tag map.",
        "methods": [
          "GET"
        ],
        "params": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "desc": "URL to extract OG data from"
          }
        ],
        "endpoint": "/api/v1/og-preview",
        "docs": "https://apimcp.site/api/v1/openapi"
      }
    ],
    "count": 135,
    "version": "1.0",
    "base_url": "https://apimcp.site/api/v1"
  },
  "meta": {
    "version": "1.0",
    "tool": "index",
    "duration_ms": 0
  }
}