For client developers
The catalogue is a set of static files. One public index describes every menu; a client downloads it and matches it locally against its own library. Nothing about a library is ever sent anywhere.
The index
v1/index.json, described by its JSON Schema.
Within format version 1 fields are only ever added, so ignore fields you don't know. A breaking change would appear under /v2/ and leave /v1/ alone.
entries[].matchis the menu's ownmatchblock: item type and provider ids to compare with your library.entries[].urlis relative tobaseUrl. A revision's file never changes and never disappears. Checksha256before you install it.minPluginVersionandfeaturessay what a client must support.needsLocalArtlists files the user must supply.hostedArtlists openly licensed files the menu links to atv1/art/<menuId>/(with theirCREDITS.txt); nothing to install for those.withdrawnlists menus that were removed, so you can tell a user who installed one.
The menu format
Menus follow the plugin's menu schema. Treat every menu as untrusted: render text as text, never as markup, and build URLs only from validated pieces. The plugin's reference renderer and its tests are in the main repository.
The index right now lists 6 menus, generated 2026-10-29T16:43:27Z.