Saperly
Operate Saperly through your OOMOL-connected account. This skill calls the saperly connector with the oo CLI; OOMOL injects credentials server-side, so you never handle raw tokens.
Running an action
Assume the user has already installed the oo CLI, signed in, and connected Saperly. Do not run oo auth login or open the connection URL proactively — just run the action. Fall back to First-time setup only when a command actually fails with an auth or connection error.
1. Inspect the contract to get the authoritative input/output schema before building a payload:
oo connector schema "saperly" --action "<action_name>"
2. Run the action with a JSON payload that matches the input schema:
oo connector run "saperly" --action "<action_name>" --data '<json>' --json
--datatakes a JSON object string or@path/to/file.json; omit it to send{}.- The response is
{ "data": ..., "meta": { "executionId": "..." } }; the execution id lives undermeta.executionId.
Each action is listed below with a one-line description; actions that change state carry a [write] or [destructive] tag. Before constructing --data, fetch the action’s live schema with oo connector schema to get its authoritative input fields.
Available actions
ask_assistant— Ask the workspace assistant a question; the assistant may use workspace tools. [destructive]assign_connection— Bind a connection to a number [write]check_consent— Check whether a contact has active consentcreate_connection— Create a connection (provisions inline) [write]create_custom_voice— Upload a voice sample from a public URL; poll get_custom_voice until the voice is active or failed. [write]create_workspace_key— Create a scoped API token [write]create_workspace_webhook— Create a webhook endpoint [write]delete_connection— Delete a connection [destructive]delete_custom_voice— Delete custom voice [destructive]end_call— End a live call [destructive]get_call— Get a call by idget_connection— Get a connection by idget_custom_voice— Get custom voiceget_number— Get a phone number by idget_price_quote— Quote the price of a phone numberget_recording— Get a temporary download URL for a completed call recording.get_transcript— Get a call transcriptget_usage— Get a usage summary (optionally since a timestamp)health— Liveness probelist_calls— List callslist_connections— List all connections in the workspacelist_consent— List all consent records in the workspacelist_custom_voices— List custom voiceslist_keys— List the workspace’s API keyslist_languages— List the supported spoken languageslist_messages— List messages (optionally filtered by number)list_numbers— List all phone numbers in the workspacelist_voices— List available voices (optionally filtered by language)list_webhook_deliveries— List a webhook endpoint’s recent delivery attemptslist_workspace_audit_events— List the workspace audit-log eventslist_workspace_keys— List the workspace API tokenslist_workspace_members— List the workspace memberslist_workspace_webhooks— List the workspace webhook endpointsmint_key— Mint a scoped API key [write]place_call— Place an outbound call [write]provision_number— Provision a phone number [write]record_consent— Record consent for a contact [write]release_number— Release a phone number [destructive]revoke_consent— Revoke consent for a contact [destructive]revoke_key— Revoke an API key [destructive]revoke_workspace_key— Revoke an API token [destructive]send_message— Send an SMS message [write]send_workspace_invitation— Invite a member by email [write]set_caller_id— Set the outbound caller ID name (CNAM) [write]set_number_webhook— Set a number’s manual-mode brain URL [write]set_sms_sender— Set the alphanumeric SMS sender id [write]transfer_call— Blind-transfer a live call [write]update_connection— Update a connection (re-syncs the carrier) [write]
Safety
- Untagged actions are reads (get / list / search) — safe to run directly.
- Actions tagged
[write]change Saperly state — confirm the exact payload and effect with the user before running. - Actions tagged
[destructive]remove or overwrite data — always confirm the target and get explicit approval first.
First-time setup
These are one-time steps — do not repeat them on every call. Run a step only when a command fails for the matching reason.
-
oo: command not found— install the oo CLI (other platforms: https://cli.oomol.com/install-guide.md):curl -fsSL https://cli.oomol.com/install.sh | bash # macOS / Linuxirm https://cli.oomol.com/install.ps1 | iex # Windows PowerShell -
Not signed in / authentication error — sign in to your OOMOL account once:
oo auth login -
scope_missing/credential_expired/app_not_ready/app_not_found— Saperly is not connected, or the connection expired or lacks a scope. Connect once (auth type: API key) at:https://console.oomol.com/app-connections?provider=saperly -
HTTP 402 /
OOMOL_INSUFFICIENT_CREDIT— billing stop. Recharge athttps://console.oomol.com/billing/token-rechargebefore retrying.
Resources
- Saperly homepage: https://saperly.com