That’s not how real world works  (And as the tags says it’s already implemented for Navidrome).
 (And as the tags says it’s already implemented for Navidrome).
Each function have differences and sometimes multiple versions. Like to sync I need support for empty queries to search3 endpoint there’s 3 different ways depending on servers to send that, and handle the fallback for servers that do not handle correctly that case.
And that also means that I need to fully test and maintain a compatibility matrix for every single functions and all the servers. Something that I absolutely not have time for.
As you can see : Explicit server name and version it was already a lot of work to have servers expose what they are. And there’s still the majority that do not expose their version yet. Meaning I can’t even build that compatibility matrix properly 
So until the work is done with API extensions and servers proper handling of things, every variation is a support burden and time loss for every future changes to manage regressions.
you can have a feature set for each server
I support Emby / Jellyfin / Kodi / Plex / Android / Subsonic. That’s already 6 (8 actually as 3 modes for android) different set of features to maintain and evolve with their versions.
Adding 20 more for 20 different Subsonic servers is just not possible. Specially for edge cases.