Context
Wiring SBO3L's KeeperHubExecutor::live() against a real KeeperHub workflow during the ETHGlobal Open Agents 2026 hackathon.
Pain point
From outside the docs, the kh_* (KeeperHub-native API tokens) vs wfb_* (workflow-webhook tokens) prefix split wasn't obvious. We hit "wrong header" errors before realising the workflow webhook expected wfb_* specifically.
Suggested improvement
A short "which token does which thing" page in the public docs, with worked examples showing the exact header each token belongs in:
| Token type |
Prefix |
Header |
Use case |
| API token |
kh_* |
Authorization: Bearer kh_... |
KeeperHub-native API calls |
| Workflow webhook token |
wfb_* |
Authorization: Bearer wfb_... |
Inbound to workflow webhook URLs |
Plus a CLI sanity-check (keeperhub token check <token>) that prints "this is a workflow-webhook token, use it against /webhook/* endpoints".
Why it matters
This single doc page would shave ~30 min off every third-party adapter integration.
Tracked downstream: https://github.com/B2JK-Industry/SBO3L-ethglobal-openagents-2026/blob/main/FEEDBACK.md
Context
Wiring SBO3L's
KeeperHubExecutor::live()against a real KeeperHub workflow during the ETHGlobal Open Agents 2026 hackathon.Pain point
From outside the docs, the
kh_*(KeeperHub-native API tokens) vswfb_*(workflow-webhook tokens) prefix split wasn't obvious. We hit "wrong header" errors before realising the workflow webhook expectedwfb_*specifically.Suggested improvement
A short "which token does which thing" page in the public docs, with worked examples showing the exact header each token belongs in:
kh_*Authorization: Bearer kh_...wfb_*Authorization: Bearer wfb_...Plus a CLI sanity-check (
keeperhub token check <token>) that prints "this is a workflow-webhook token, use it against/webhook/*endpoints".Why it matters
This single doc page would shave ~30 min off every third-party adapter integration.
Tracked downstream: https://github.com/B2JK-Industry/SBO3L-ethglobal-openagents-2026/blob/main/FEEDBACK.md