Keeping them apart means you can inspect a tool’s auth setup without exposing the
secret, and rotate the secret without touching the shape.
Declaring
options are alternatives
The list is acceptable alternatives — satisfying any one entry is enough.
That is how you say “either an API key or a bearer token”:
options must have at least one entry.
The typo guard
Every key inauthTokens must be declared in
httpSecurityOptions.options[].requirements. Otherwise:
bookingKey requirement, and surface weeks later as an unexplained 401 from your
own endpoint — with nothing in the logs naming which credential was missing.
The reverse is not enforced: declaring two alternatives and filling one is
intentional.
Inspecting
Values are never returned. AGET shows which slots are filled:
setCredentials exists so a UI can render •••••••• for a filled slot and an
empty field for an unfilled one, without ever handling the secret.
Rotating
Send only the new value. Zero downtime — the change takes effect on the next call."authTokens": null. The same null-clears behaviour
applies to agentReaction, httpSecurityOptions, and timeout.