{"id":"doi-parse","version":"1.0.0","description":"Parse a DOI (bare, doi: or doi.org URL) into prefix, suffix, directory indicator, registrant code and canonical forms.","supported_operations":["parse a doi","extract doi prefix and suffix","convert a doi to a doi.org link","normalize a doi url","get the registrant code from a doi","strip the doi colon prefix","turn this doi into a clickable link"],"unsupported_operations":["resolving a DOI to the resource it names (no network access)","validating that a DOI is actually registered","a suffix containing a raw percent-encoded byte, whitespace or a non-ASCII character (see semantics; unsupported_input)"],"semantics":["Wrapper stripping: if doi starts with one of 'doi:', 'https://doi.org/', 'http://doi.org/', 'https://dx.doi.org/', 'http://dx.doi.org/' (matched case-insensitively, checked in that order), that wrapper alone is removed; at most one wrapper is stripped, and an unmatched string is used as-is.","After stripping, the remainder must match 10.<digits>(.<digits>)*/<suffix>: literal directory indicator 10, a dot, one or more digit-only registrant-code groups separated by single dots, a single slash, then a non-empty suffix. The first slash after the registrant code is the boundary; everything after it, including further slashes, belongs to suffix. Anything else throws invalid_input.","suffix characters are restricted to ASCII unreserved URI characters (A-Z a-z 0-9 - . _ ~), '/', and ( ) + , ; = @ ! * ' $ :. A suffix with any other character (including non-ASCII, '%' or whitespace) is well-formed DOI syntax but outside this tool's declared charset, so it throws unsupported_input.","prefix is '10.' + the registrant-code groups; directory_indicator is the literal '10'; registrant_code is prefix with the leading '10.' removed (it may itself contain dots for sub-registrant groups).","normalized_lowercase is prefix + '/' + suffix with a simple ASCII-only A-Z -> a-z mapping applied to the whole string; every other character, including non-ASCII, is left unchanged.","uri is 'https://doi.org/' + prefix + '/' + suffix, in the original case (never lowercased)."],"limits":{"max_doi_bytes":200},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["doi"],"properties":{"doi":{"type":"string","minLength":1,"maxLength":200}}},"output_schema":{"type":"object","additionalProperties":false,"required":["prefix","suffix","directory_indicator","registrant_code","normalized_lowercase","uri"],"properties":{"prefix":{"type":"string"},"suffix":{"type":"string"},"directory_indicator":{"type":"string","const":"10"},"registrant_code":{"type":"string"},"normalized_lowercase":{"type":"string"},"uri":{"type":"string"}}},"examples":[{"input":{"doi":"10.1000/182"},"output":{"prefix":"10.1000","suffix":"182","directory_indicator":"10","registrant_code":"1000","normalized_lowercase":"10.1000/182","uri":"https://doi.org/10.1000/182"}},{"input":{"doi":"doi:10.1000/182"},"output":{"prefix":"10.1000","suffix":"182","directory_indicator":"10","registrant_code":"1000","normalized_lowercase":"10.1000/182","uri":"https://doi.org/10.1000/182"}}],"execute_url":"/v1/tools/doi-parse/versions/1.0.0/execute"}