{
  "slug": "vcard-normalize",
  "name": "gizza-ai/vcard-normalize",
  "version": "0.1.0",
  "title": "vCard Normalize — clean emails, phones, and names in VCF — gizza.ai",
  "description": "Normalize vCard address books locally: lowercase emails, format valid phone numbers, tidy names, and preserve custom fields.",
  "tags": [
    "vcard normalize",
    "vcf cleaner",
    "address book",
    "contact cleanup",
    "e164 phone",
    "email lowercase",
    "vcard formatter",
    "contacts"
  ],
  "category": "data",
  "urls": {
    "page": "https://gizza.ai/tools/vcard-normalize/",
    "markdown": "https://gizza.ai/tools/vcard-normalize/index.md",
    "descriptor": "https://gizza.ai/tools/vcard-normalize/tool.json",
    "deep_link_example": "https://gizza.ai/tools/vcard-normalize/?data=BEGIN%3AVCARD%0AVERSION%3A3.0%0AFN%3A%20jane%20%20%20DOE%0AN%3ADOE%3Bjane%3B%3B%3B%0ATEL%3BTYPE%3DCELL%3A%28415%29%20555-2671%0AEMAIL%3A%20Jane.DOE%40Example.COM%20%0AEND%3AVCARD&default_country=US&name_case=keep&lowercase_email=true"
  },
  "cli": "gizza tool vcard-normalize \"BEGIN:VCARD\nVERSION:3.0\nFN: jane   DOE\nN:DOE;jane;;;\nTEL;TYPE=CELL:(415) 555-2671\nEMAIL: Jane.DOE@Example.COM \nEND:VCARD\"",
  "tool": {
    "description": "Normalize a vCard/.vcf address book while preserving unknown properties and card structure. EMAIL values are trimmed and lowercased by default. TEL values are conservatively reformatted toward E.164 when they parse and validate, using optional default_country for national numbers. FN, N, and NICKNAME whitespace is tidied and can be recased with name_case=keep/title/upper/lower. Folded lines are unfolded, CRLF/LF style is preserved, invalid phone numbers are left untouched, and malformed input without a vCard returns an error.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "description": "Raw vCard / .vcf text containing one or more BEGIN:VCARD ... END:VCARD blocks. Folded lines are unfolded before normalization.",
          "type": "string"
        },
        "default_country": {
          "default": "",
          "description": "Optional ISO-3166 alpha-2 country/region hint (for example US, GB, DE) used to parse phone numbers that do not start with '+'. Leave blank to only normalize already-international numbers.",
          "type": "string"
        },
        "lowercase_email": {
          "default": true,
          "description": "Trim and lowercase EMAIL values. Default true; set false to preserve mailbox case while still trimming surrounding spaces.",
          "type": "boolean"
        },
        "name_case": {
          "default": "keep",
          "description": "How to recase FN, N, and NICKNAME values after whitespace cleanup. 'keep' (default) preserves case; 'title' title-cases each word; 'upper' uppercases; 'lower' lowercases.",
          "enum": [
            "keep",
            "title",
            "upper",
            "lower"
          ],
          "type": "string"
        }
      },
      "required": [
        "data"
      ],
      "type": "object"
    }
  }
}