{"id":"ulid-format","version":"1.0.0","description":"Format an explicit 48-bit timestamp and ten random bytes as one canonical uppercase ULID.","supported_operations":["format ULID from bytes","build ULID from timestamp","encode explicit ULID fields","convert timestamp and random bytes to ULID","serialize ULID binary fields","make deterministic ULID value"],"unsupported_operations":["generate random ULID","use the current clock"],"semantics":["Canonical ULID text is exactly 26 uppercase ASCII Crockford Base32 characters; I, L, O, U, lowercase, whitespace, and first characters 8 through Z are rejected.","The 48-bit timestamp is represented as a canonical unsigned decimal string, avoiding JSON number precision loss.","Inputs are never trimmed or normalized; operations are synchronous, pure, offline, bounded, and deterministic."],"limits":{"max_timestamp_bytes":15,"max_random_bytes":10},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["timestamp_ms","random_bytes"],"properties":{"timestamp_ms":{"type":"string","minLength":1,"maxLength":15,"pattern":"^(0|[1-9][0-9]*)$"},"random_bytes":{"type":"array","minItems":10,"maxItems":10,"items":{"type":"integer","minimum":0,"maximum":255}}}},"output_schema":{"type":"object","additionalProperties":false,"required":["ulid"],"properties":{"ulid":{"type":"string","minLength":26,"maxLength":26,"pattern":"^[0-7][0-9A-HJKMNP-TV-Z]{25}$"}}},"examples":[{"input":{"timestamp_ms":"0","random_bytes":[0,0,0,0,0,0,0,0,0,0]},"output":{"ulid":"00000000000000000000000000"}},{"input":{"timestamp_ms":"281474976710655","random_bytes":[255,255,255,255,255,255,255,255,255,255]},"output":{"ulid":"7ZZZZZZZZZZZZZZZZZZZZZZZZZ"}}],"execute_url":"/v1/tools/ulid-format/versions/1.0.0/execute"}