{"id":"email-address-normalize","version":"1.0.0","description":"Validate one email addr-spec and return its canonical form: minimal quoting, NFC local-part, lowercase domain.","supported_operations":["normalize an email address","canonical form of an email address","lowercase the domain of an email address","remove unnecessary quotes from an email local part","are these two email addresses the same mailbox","validate email address syntax strictly","נרמול כתובת אימייל"],"unsupported_operations":["lowercase the local-part or strip dots and +tags (provider-specific, not standard)","convert internationalized domains between U-labels and A-labels (IDNA)","parse \"Name <addr>\" display-name forms, comments or domain literals","check deliverability with DNS, MX or SMTP"],"semantics":["Accepts exactly one addr-spec: a dot-atom or RFC 5321 Quoted-string local-part (no FWS, no HTAB), \"@\", and a domain of at least two ASCII LDH labels; non-ASCII local-part characters must be Unicode letters, marks or numbers (RFC 6531 3.3 subset).","The quoted form is decoded (each quoted-pair stands for its character, RFC 5322 3.2.1), NFC-normalized (RFC 6532 3.1), then written with minimum quoting (RFC 5321 4.1.2): unquoted when it is valid dot-atom text, otherwise quoted with only \"\\\" and DQUOTE escaped.","Local-part case is preserved (RFC 5321 2.4: local-parts are case sensitive); the domain is ASCII-lowercased (domains are not case sensitive). No provider-specific rules are applied.","Limits: local-part at most 64 octets (as written and as normalized), labels at most 63, address at most 254 (RFC 5321 4.5.3.1); the top-level label must not be all-numeric (RFC 3696 2).","invalid_input (details.reason) for syntax errors; unsupported_input for well-formed features outside the subset: comments or surrounding white space, display names, domain literals, single-label or U-label domains, obsolete local-parts, non-letter non-ASCII characters.","requires_smtputf8 is true when the normalized address contains non-ASCII characters (RFC 6531). changed is true when the normalized address differs from the input. Unicode classes and NFC come from the runtime Unicode version.","An address longer than 254 UTF-8 bytes is limit_exceeded, checked before parsing."],"limits":{"max_address_bytes":254},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["address"],"properties":{"address":{"type":"string","minLength":1,"description":"One addr-spec, at most 254 UTF-8 bytes, no surrounding white space."}}},"output_schema":{"type":"object","additionalProperties":false,"required":["address","local_part","domain","local_part_form","requires_smtputf8","changed"],"properties":{"address":{"type":"string","minLength":5,"maxLength":254},"local_part":{"type":"string","minLength":1,"maxLength":64},"domain":{"type":"string","minLength":3,"maxLength":252},"local_part_form":{"type":"string","enum":["dot-atom","quoted-string"]},"requires_smtputf8":{"type":"boolean"},"changed":{"type":"boolean"}}},"examples":[{"input":{"address":"\"john.q.public\"@Example.COM"},"output":{"address":"john.q.public@example.com","local_part":"john.q.public","domain":"example.com","local_part_form":"dot-atom","requires_smtputf8":false,"changed":true}},{"input":{"address":"\"Fred\\ Bloggs\"@example.com"},"output":{"address":"\"Fred Bloggs\"@example.com","local_part":"\"Fred Bloggs\"","domain":"example.com","local_part_form":"quoted-string","requires_smtputf8":false,"changed":true}},{"input":{"address":"Smith@EXAMPLE.com"},"output":{"address":"Smith@example.com","local_part":"Smith","domain":"example.com","local_part_form":"dot-atom","requires_smtputf8":false,"changed":true}}],"execute_url":"/v1/tools/email-address-normalize/versions/1.0.0/execute"}