[code]Understand “anoint [something]” as anointing. [Note: this grammar line is intentionally missing the second noun!]
Rule for supplying a missing second noun when anointing:
if the player can see the oils:
now the second noun is the oils;
otherwise:
now the second noun is the location. [Nonsensical value]
Check anointing something with the location: say “You have nothing on hand that would be useful.” instead.[/code]
So, the system used by default is rather convoluted and not explained well in the documentation.
If there’s a grammar line without the second noun (like I added in my example), it’ll call the “supplying a missing second noun” activity.
If there’s no grammar line without the second noun, it’ll check if there’s exactly one viable item, where “viable” depends on the action but usually means “in scope”. “Take”, for example, requires its noun to be in scope and not held. If so, it’ll use that item automatically.
If both of those fail, it’ll say you have to be more specific.
You can use the Disambiguation Control extension to control these behaviors more precisely.