Capabilities
The Capabilities operations of the Hub REST API (14 operations).
bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
workspaceId?stringuuidintent?string^[a-z][a-z0-9_]{0,63}$Capability read-model
application/json- response
capabilities*array<>curl -X GET 'https://pod.example.com/api/hub/capabilities'{ "capabilities": [ { "property1": null, "property2": null } ]}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
workspaceId?stringuuidquery?stringintent?string^[a-z][a-z0-9_]{0,63}$limit?integer0 < valueCapability containers with their member parts
application/json- response
capabilities*array<>curl -X GET 'https://pod.example.com/api/hub/capabilities/containers'{ "capabilities": [ { "property1": null, "property2": null } ]}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
definition?templateKey?string^[a-z0-9-]+$length <= 64params?workspaceId?stringuuidApplied capability (created + proposed resources)
application/json- response
capabilityKey*stringcreated*proposals*array<string>webhooks*array<>curl -X POST 'https://pod.example.com/api/hub/capabilities/apply' \ -H 'Content-Type: application/json' \ -d '{}'{ "capabilityKey": "string", "created": { "vault": [ { "property1": null, "property2": null } ], "mcpServers": [ { "property1": null, "property2": null } ], "tools": [ { "property1": null, "property2": null } ], "skills": [ { "property1": null, "property2": null } ], "playbooks": [ { "property1": null, "property2": null } ], "automations": [ { "property1": null, "property2": null } ] }, "proposals": [ "string" ], "webhooks": [ { "property1": null, "property2": null } ]}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
dryRun?booleanReconcile report
application/json- response
checked*numberdryRun*booleanapplied*array<>skipped*array<>updatesAvailable*array<>conflicts*array<>curl -X POST 'https://pod.example.com/api/hub/capabilities/reconcile' \ -H 'Content-Type: application/json' \ -d '{}'{ "checked": 0, "dryRun": true, "applied": [ { "containerId": "string", "name": "string", "templateKey": "string", "reason": "string" } ], "skipped": [ { "containerId": "string", "name": "string", "templateKey": "string", "reason": "string" } ], "updatesAvailable": [ { "containerId": "string", "name": "string", "templateKey": "string", "reason": "string" } ], "conflicts": [ { "containerId": "string", "name": "string", "templateKey": "string", "reason": "string" } ]}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
dryRun?booleanReconcile report
application/json- response
checked*numberdryRun*booleanupdated*array<>ownerOwnedSkipped*array<>skipped*array<>conflicts*array<>curl -X POST 'https://pod.example.com/api/hub/configs/reconcile' \ -H 'Content-Type: application/json' \ -d '{}'{ "checked": 0, "dryRun": true, "updated": [ { "kind": "view", "id": "string", "name": "string", "packageSlug": "string", "reason": "string" } ], "ownerOwnedSkipped": [ { "kind": "view", "id": "string", "name": "string", "packageSlug": "string", "reason": "string" } ], "skipped": [ { "kind": "view", "id": "string", "name": "string", "packageSlug": "string", "reason": "string" } ], "conflicts": [ { "kind": "view", "id": "string", "name": "string", "packageSlug": "string", "reason": "string" } ]}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
kind*string"view""skill""automation"id*stringuuidDetach result
application/json- response
detached*booleankind*string"view""skill""automation"id*stringoutcome?string"updated""proposed"reason?stringcurl -X POST 'https://pod.example.com/api/hub/configs/detach' \ -H 'Content-Type: application/json' \ -d '{ "kind": "view", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"}'{ "detached": true, "kind": "view", "id": "string", "outcome": "updated", "reason": "string"}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
id*stringuuidDeleted
application/json- response
ok*booleancurl -X DELETE 'https://pod.example.com/api/hub/capabilities/containers/497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "ok": true}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
workspaceId*stringuuidkey?stringCapability catalog (pack cards)
application/json- response
capabilities*array<>automations*array<>curl -X GET 'https://pod.example.com/api/hub/capabilities/catalog?workspaceId=497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "capabilities": [ { "id": "string", "key": "string", "name": "string", "description": "string", "source": "installed", "status": "available", "connection": { "required": true, "kind": "provider", "provider": "string", "state": "connected", "account": "string", "internal": true, "unverified": { "reason": "string", "message": "string" } }, "verbs": [ { "verbId": "string", "skillId": "string", "label": "string", "description": "string", "type": "read", "enabled": true, "governance": "auto", "runnable": true, "params": [ "string" ], "paramsSchema": [ { "name": "string", "type": "string", "required": true, "description": "string" } ], "category": "string", "intent": "string" } ], "anatomy": { "tools": [ "string" ], "skills": [ "string" ], "credential": "string" }, "installParams": [ { "name": "string", "label": "string", "type": "string", "required": true, "description": "string", "secret": true } ], "builtIn": true, "nextAction": { "kind": "add", "hint": "string", "url": "string", "opensIn": "web" } } ], "automations": [ { "kind": "automation", "id": "string", "key": "string", "name": "string", "description": "string", "source": "installed", "status": "available", "lifecycle": "draft", "triggerType": "event", "nextAction": { "kind": "add", "hint": "string" } } ]}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
workspaceId*stringuuidquery?stringkind?stringintent?string^[a-z][a-z0-9_]{0,63}$limit?integer0 < value <= 100Runnable actions
application/json- response
actions*array<>curl -X GET 'https://pod.example.com/api/hub/capabilities/actions?workspaceId=497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "actions": [ { "skillId": "string", "verbId": "string", "label": "string", "description": "string", "tool": "string", "connection": { "required": true, "state": "connected", "provider": "string" }, "governance": "auto", "enabled": true, "executionMode": "string", "kind": "read", "intent": "string", "parameters": { "property1": null, "property2": null } } ]}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
verbId?stringThe capability verb to run — the backing skill's NAME (e.g. 'gmail_send'). One of verbId/skillId is required.
1 <= lengthskillId?stringDirect backing-skill id (alternative to verbId).
1 <= lengthparameters?The capability's own inputs, passed to the skill sandbox as args — e.g. { to, subject, body } for gmail_send.
workspaceId?stringActing workspace — an optional lens narrowing the skill lookup and the gate. Omit for a pod-wide run.
uuidconnectionSelector?Which of the capability's connections this run uses, when it has more than one. A selector matching nothing fails the run.
idempotencyKey?stringA stable key correlating retries of THIS logical run, so an external-send verb is at-most-once. Omitted → a content hash is derived.
1 <= lengthchannelId?stringInstruction-provenance: the acting channel of this agent turn. A run triggered from an untrusted-origin channel force-proposes instead of auto-running.
sourceMessageId?stringThe triggering inbound message id, resolved server-side to the acting channel when channelId is not passed explicitly.
sessionId?stringThe focus session this run belongs to. Persisted as the proposals.session_id column so a reviewer sees which operation the action was part of.
Execution result
application/json- response
status*string"run""dry-run"skillId*stringresult?unknowndryRun?booleancorrelationId?stringackState?string"applied""proposed""duplicate-ignored"curl -X POST 'https://pod.example.com/api/hub/capabilities/execute' \ -H 'Content-Type: application/json' \ -d '{}'{ "status": "run", "skillId": "string", "result": null, "dryRun": true, "correlationId": "string", "ackState": "applied"}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
capabilityId*stringuuidCredentials
application/json- response
credentials*array<>curl -X GET 'https://pod.example.com/api/hub/capabilities/497f6eca-6276-4993-bfeb-53cbbbba6f08/credentials'{ "credentials": [ { "id": "string", "label": "string", "contextType": "string", "contextId": "string", "isDefault": true, "accountHint": "string", "kind": "nango", "isPodWide": true, "provider": "string", "health": "connected", "persisted": true } ]}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
capabilityId*stringuuidapplication/json- body
label*string1 <= length <= 255value?stringcontextType?string|nullcontextId?string|nullaccountHint?string|nullisDefault?booleanisPodWide?booleanCreated credential
application/json- response
id*stringlabel*stringcontextType*string|nullcontextId*string|nullisDefault*booleanaccountHint*string|nullkind*string"nango""vault"isPodWide*booleanprovider*string|nullhealth*string"connected""needs_reauth"persisted*booleancurl -X POST 'https://pod.example.com/api/hub/capabilities/497f6eca-6276-4993-bfeb-53cbbbba6f08/credentials' \ -H 'Content-Type: application/json' \ -d '{ "label": "string"}'{ "id": "string", "label": "string", "contextType": "string", "contextId": "string", "isDefault": true, "accountHint": "string", "kind": "nango", "isPodWide": true, "provider": "string", "health": "connected", "persisted": true}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
capabilityId*stringuuidid*stringuuidapplication/json- body
label?string1 <= length <= 255value?stringcontextType?string|nullcontextId?string|nullaccountHint?string|nullisDefault?booleanisPodWide?booleanUpdated credential
application/json- response
id*stringlabel*stringcontextType*string|nullcontextId*string|nullisDefault*booleanaccountHint*string|nullkind*string"nango""vault"isPodWide*booleanprovider*string|nullhealth*string"connected""needs_reauth"persisted*booleancurl -X PATCH 'https://pod.example.com/api/hub/capabilities/497f6eca-6276-4993-bfeb-53cbbbba6f08/credentials/497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Content-Type: application/json' \ -d '{}'{ "id": "string", "label": "string", "contextType": "string", "contextId": "string", "isDefault": true, "accountHint": "string", "kind": "nango", "isPodWide": true, "provider": "string", "health": "connected", "persisted": true}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
capabilityId*stringuuidid*stringuuidRemoved
application/json- response
ok*booleanpromotedDefaultId*string|nullcurl -X DELETE 'https://pod.example.com/api/hub/capabilities/497f6eca-6276-4993-bfeb-53cbbbba6f08/credentials/497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "ok": true, "promotedDefaultId": "string"}