The way scope works with MastoAPI is partly in the BE and partly in the FE. When you hit certain endpoints, like the local timeline endpoint, it only returns ones for your instance, and it filters them for ones that are listed as public before the FE even sees it. If we did add another scope, it would have to be like that.
Also, you can add new metadata to AP. It’s one of the big advantages of it, and it’s also how I added a url field to PleromaBE’s scrobble endpoint. To no small extent AP is a non-standard that really only has guidelines for the federation part, but the rest is freeform JSON. It’s why Audio documents can link to literal Audio files or just a bunch of metadata about those audio files, and that metadata can be shaped however you want it to be shaped.
In Funkwhale’s Audio “document” shape, the url field is an array that links to both webpages about the track and audio files of the track itself. It literally does both.
In my implementation of PleromaBE’s url field it’s just a string that links to an article.
But both are valid. Both are possible. And for this reason, I considered making the url field on this end just an array with a single element in it, but decided against it because the examples the official documentation give are that it can be either a single string, an array of strings, an object with subfields, or an array of strings/objects with subfields.
It can be anything. Once you get the shape of the JSON blobs right for the purpose of federating, AP is the Wild West as far as standards are concerned. So not only are you allowed to make shit up on the fly, you basically have to.