If you were going to go the API route, it would depend on how you wrote the script. I'd probably go with having the command syntax be something like: !toggle <abilityName> [Character Name] The script would then look for an ability in the character linked to the selected token if no character name is passed or in the first character that matches the name passed if a character name is passed. It would evaluate the current state of that ability's "istokenaction" property and flip it to the opposite state (true -> false or false -> true). The downside here is that the display of token actions doesn't update until you unselect the token and then reselect it, so it's not really intuitive to use. If you were going to go the ability command button menu route (the route I'd recommend), then you'd make an ability(or a global macro if everyone is going to have the same ones) and then it will output a menu to chat for people to click on the necessary skill. You can of course set these up so that they whisper to the appropriate player (keeping the actual chat clear of menu spam). And if you want to get fancy and put lots of work into your menu, you can make it a roll query dropdown prompt that pops up and players then select what they want to do. This method is probably the closest to your original goal, but it is also by far the hardest to implement. It is very slick once done though. If you were going to do this, I would highly recommend making them as a character ability instead of a global macro as the html replacements that you will need to do will be parsed out by the global macro whenever you reopen it. Advanced Roll Query Wiki: <a href="https://wiki.roll20.net/Macros#Advanced_Usage_for_" rel="nofollow">https://wiki.roll20.net/Macros#Advanced_Usage_for_</a>... If you want some good examples of what is necessary for the query method, do a forum search for nested roll queries, roll query abilities, or similar terms; there are many threads on the topic already.