That’s a bug.
Case-insensitive property deserialization refers to Json.NET being able to map a JSON property with the name “Key” to either a .NET class’s “Key” or “key” member.
The bug is KeyValuePair requires its own JsonConverter but misses out of the case insensitive mapping.
https://github.com/JamesNK/Newtonsoft.Json/blob/fe200fbaeb5bad3852812db1e964473e1f881d93/Src/Newtonsoft.Json/Converters/KeyValuePairConverter.cs
Use that as a base and add the lower case “key” and “value” to the case statement when reading JSON.