Auth
- Every call requires a Bearer token (JARVIS_BEARER_TOKEN). Missing/wrong → HTTP 403.
- Optional capability grants: JARVIS_UTCP_CAPABILITIES=policy:check,run:create (empty = full owner grant).
- Missing capability on invoke → HTTP 403 with reason "capability denied".
- Audit actor is a token fingerprint (tok_<prefix>_<sha256[0..4]>), never the raw secret.
- Loopback bind only in v0 (127.0.0.1).
Discover manifest
curl -sS \
-H "Authorization: Bearer $JARVIS_BEARER_TOKEN" \
http://127.0.0.1:7777/utcp