One remaining issue: uri should be required, not optional.
The schema says:
interface ResourceContents {
uri: string; // required
mimeType?: string; // optional
}
But our C++ ResourceContents has uri as optional<std::string>. This means a server could omit uri from contents, which would be a schema violation.