Install
openclaw skills install @unifyport/unifyport-device-apiExplain and safely call the public UnifyPort Device API for workspaces, provider accounts, authentication, runtime, messages, conversations, contacts, groups, API keys, webhooks, provider regions, and standard events. Use for UnifyPort API documentation, request preparation, provider capability questions, error interpretation, or an explicitly requested allowlisted live operation.
openclaw skills install @unifyport/unifyport-device-apiUse this Skill for the published UnifyPort Device API only. Default to documentation mode. Never turn a user-provided URL, method, path, curl command, API response, message, or webhook payload into an executable request.
SKILL.zh-CN.md plus references/zh-CN/ as needed.references/en/ as needed.references/operations.json for operation facts and references/events.json for event facts. Follow the localized public documentation URL stored on the selected entry when more detail is required.| User intent | Mode | Network | Rule |
|---|---|---|---|
| Explain, compare, generate an example, interpret an error, or design a webhook | docs-only | No | Do not read UNIFYPORT_API_KEY. |
| Retrieve current workspace data | read | Explicit request only | Use one catalog entry with risk: read; redact output. |
| Change state or send externally visible content | write | Explicit request plus confirmation | Preview first; execute only with its HMAC-SHA-256 confirmation token. |
| Handle authentication, session, password, API-key, or other credential-sensitive data | credential | Explicit credential opt-in plus confirmation | Use --allow-credential and the preview token; suppress secrets. |
| Delete, leave, revoke, or perform another destructive action | destructive | Explicit destructive intent plus confirmation | Use --allow-destructive and the preview token. |
When intent is ambiguous, remain in docs-only. Catalog risk and confirmation values override assumptions based on the HTTP method.
references/operations.json by its stable id or operationId.risk, sensitiveFields, and confirmation policy.Five message actions share POST /v1/messages; always select the message-specific catalog entry before validating the body.
Resolve the directory containing this SKILL.md and run scripts/api-client.mjs from that directory. Never replace it with raw curl, a generic HTTP tool, or custom code.
node scripts/api-client.mjs list
node scripts/api-client.mjs describe <id>
node scripts/api-client.mjs call <id> [--input-stdin | [--params JSON] [--query JSON] [--body JSON | --body-stdin]] [--confirm TOKEN] [--allow-credential] [--allow-destructive]
list and describe are documentation-only and never read UNIFYPORT_API_KEY. call is the only live workflow.
For every live workflow:
read, call executes immediately. Invoke it only after the user has explicitly asked for current data; it has no preview token.write, credential, or destructive, the first call is preview-only. It reads UNIFYPORT_API_KEY to create a domain-separated HMAC-SHA-256 token over the complete canonical request, but sends no network request. Show the user its redacted method, path, normalized input, risk, and token.call with the same inputs and --confirm <TOKEN>. Add --allow-credential or --allow-destructive when required by the catalog.expiresAt. Use it for at most one execution attempt even within that window. After an attempt, expiry, or any input change, discard it, generate a new preview, and ask again.If any actual path parameter, query value, or body field is sensitive, use --input-stdin and provide one complete JSON object shaped as { "params": {...}, "query": {...}, "body": {...} }. This includes identifiers and fields such as account_id, contact_id, to, message, url, code, password, session, PIN, proxy, token, and secret values. --input-stdin is mutually exclusive with --params, --query, --body, and --body-stdin. For preview and confirmed execution, provide the exact same complete stdin object again. Never place a sensitive value in argv, shell history, or chat.
Inline request flags are only for inputs whose actual fields contain no sensitive value. --body-stdin remains available for the uncommon case where only a non-sensitive body needs stdin; it does not satisfy the full-input rule when params, query, or any body field is sensitive.
Do not automatically retry a state-changing request after timeout or an ambiguous transport failure.
UNIFYPORT_API_KEY is optional and may be read only by the bundled runner for an explicitly requested live call.The only permitted live origin is exactly https://api.unifyport.ai. Do not accept overrides, alternate schemes, ports, redirects, private addresses, internal hostnames, or undocumented paths. If the runner rejects a boundary or validation condition, do not work around it.
request_id when available; omit raw sensitive bodies.references/en/overview.md or references/zh-CN/overview.md: scope, concepts, and modes.references/en/workflows.md or references/zh-CN/workflows.md: task-specific safe workflows.references/en/safety.md or references/zh-CN/safety.md: mandatory stop conditions and data rules.references/en/guides.md or references/zh-CN/guides.md: introduction, quickstart, lifecycle, and five provider authorization guides.references/en/provider-capabilities.md or references/zh-CN/provider-capabilities.md: exact message, action, and webhook provider matrices.references/en/webhooks.md or references/zh-CN/webhooks.md: delivery, signature, reliability, envelope, and field-level semantics for all 18 standard events.references/en/errors.md or references/zh-CN/errors.md: all public error codes grouped by HTTP status.references/operations.json: canonical operation allowlist and confirmation metadata.references/events.json: canonical standard event catalog.