{"id":"email-address-spans","version":"1.0.0","description":"Locate every email address occurrence in text with exact half-open code point, UTF-16 and UTF-8 offsets.","supported_operations":["find email address positions in text","character offsets of each email in a string","highlight email addresses with start and end index","annotate every email mention with its span","redact emails by exact offsets","utf-8 byte offsets of email addresses in text","מיקום כתובות אימייל בטקסט"],"unsupported_operations":["redact or rewrite the text itself","deduplicate occurrences (use email-addresses-extract)","parse display names, comments or group syntax","verify that an address exists or accepts mail"],"semantics":["Uses exactly the email-addresses-extract scanner: dot-atom local-part, \"@\", at least two ASCII LDH labels; left to right, non-overlapping; failing candidates are skipped, never shortened.","Every occurrence is returned in text order, duplicates included. Offsets are half-open [start, end): start/end count Unicode code points, utf16_start/utf16_end count UTF-16 code units, utf8_start/utf8_end count UTF-8 bytes.","text is the exact source substring at the span; address is its normalized form (local-part NFC with case preserved, domain ASCII-lowercased), so text and address differ only by normalization.","Symmetric wrappers (' ` * _ ~ { }) and trailing dots are outside the span; angle brackets, quotes, commas and parentheses are boundaries.","More than 65536 UTF-8 bytes of text, or more than 256 occurrences, is limit_exceeded; empty text returns an empty list. Unicode classes and NFC come from the runtime Unicode version."],"limits":{"max_text_bytes":65536,"max_occurrences":256},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["text"],"properties":{"text":{"type":"string","description":"Free text to scan (at most 65536 UTF-8 bytes)."}}},"output_schema":{"type":"object","additionalProperties":false,"required":["spans","count"],"properties":{"spans":{"type":"array","maxItems":256,"items":{"type":"object","additionalProperties":false,"required":["text","address","start","end","utf16_start","utf16_end","utf8_start","utf8_end"],"properties":{"text":{"type":"string","minLength":5,"maxLength":254},"address":{"type":"string","minLength":5,"maxLength":254},"start":{"type":"integer","minimum":0,"maximum":65536},"end":{"type":"integer","minimum":0,"maximum":65536},"utf16_start":{"type":"integer","minimum":0,"maximum":65536},"utf16_end":{"type":"integer","minimum":0,"maximum":65536},"utf8_start":{"type":"integer","minimum":0,"maximum":65536},"utf8_end":{"type":"integer","minimum":0,"maximum":65536}}}},"count":{"type":"integer","minimum":0,"maximum":256}}},"examples":[{"input":{"text":"Cc: <boss@nil.test>, sysservices@example.net"},"output":{"spans":[{"text":"boss@nil.test","address":"boss@nil.test","start":5,"end":18,"utf16_start":5,"utf16_end":18,"utf8_start":5,"utf8_end":18},{"text":"sysservices@example.net","address":"sysservices@example.net","start":21,"end":44,"utf16_start":21,"utf16_end":44,"utf8_start":21,"utf8_end":44}],"count":2}},{"input":{"text":"📧 José@Example.ORG"},"output":{"spans":[{"text":"José@Example.ORG","address":"José@example.org","start":2,"end":18,"utf16_start":3,"utf16_end":19,"utf8_start":5,"utf8_end":22}],"count":1}}],"execute_url":"/v1/tools/email-address-spans/versions/1.0.0/execute"}