Register a class-B agent-client integration (operator)
ic_admin_agent_client_registerProvision an external integration (another company's CRM bot, a research-collab tool) with a client_id + one-time client_secret it later exchanges for a scoped bearer token (DESIGN §2 Class B). Operator-only: gates on admin:agent_clients AND a live operator-tier re-check. The plaintext secret is returned EXACTLY ONCE (only its hash is stored) — a lost secret means re-register. Grantable scopes are limited to the agent:* family (directory:read / request_meeting / send_intro / ping / thread:write / inbox:read / policy:read); any other requested scope (esp. admin:*) is REFUSED and listed in denied_scopes. Args: { name, operator_human, scopes: string[], contact, autonomy?, requires_signature?, budget_overrides? }. Returns: { ok, client_id, client_secret_once, client }. Required scope: admin:agent_clients.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name of the integration (e.g. 'Skew meeting bot'). | |
| scopes | Yes | Explicitly-enumerated scopes — must be a non-empty subset of the grantable agent:* family. Non-grantable scopes are refused (denied_scopes). | |
| contact | Yes | Contact for the operator-of-record (email / handle / URL) so a revoke decision has a human to reach. | |
| operator_human | Yes | The human operator-of-record who vouches for this integration. | |
| requires_signature | No | When true, the eventual bearer must ALSO carry a valid Ed25519 signature (the pubkey is bound at grant time). |