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