sent-profile-provisioning
Sent Profile Provisioning
This skill is the execution counterpart to profile architecture: once the tenancy boundary is decided, it drives the API calls, the completion callback, the campaign registration, and the user administration that make a profile able to send. Design the boundary with sender-profile-architect first; provision it here.
Live MCP profile operations
Use sender_profiles.list, sender_profiles.get, sender_profiles.create, sender_profiles.update, and sender_profiles.delete through client-managed OAuth 2.1/PKCE. Never request or expose credentials. Validate the calling organization with account.get before a mutation.
These tools operate under the authenticated organization. The target argument is id, not profileId; no sender_profiles.* tool accepts an acting profileId. Profile grants own no child profiles and receive an empty list. Reauthorize with organization scope to manage its profiles.
- List/get: list uses
page(1-based) andpageSize(1-100, default 20) and reports channel readiness. Use real IDs from that list. Get returnsfound/item;found: falsedoes not distinguish nonexistent, deleted, and another organization's profile. Do not infer cross-tenant existence. - Create: requires
name,shortName, andidempotencyKey.shortNameis 3-11 letters, numbers, or spaces with at least one letter. Optional arguments aredescription,smsCountry,smsNumberType,smsSenderValue,smsAreaCodes, andcompliance. A suppliedsmsCountryrequiressmsNumberType; omission uses the organization's shared routes. For a dedicated SMS market, usesent-complianceto inspect requirements and fill its setup plan first. Provisioning can claim a number and incur registration fees. WhatsApp, RCS, billing, document uploads, inheritance flags, and sandbox arguments are not exposed by this MCP create tool. Required document uploads block it before any write; use the dashboard or documented REST flow. No one-time API key is returned. - Update: fetch the exact target, then supply
idand only the changed fields amongname,shortName, anddescription. Omitted fields stay unchanged; explicitdescription: nullclears the description. Name and short name cannot be cleared. At least one field is required. Do not populate omitted fields with null or assume this updates channel configuration. - Delete: fetch and preview the target. Explain that deletion can disconnect WhatsApp, release numbers, and disable live routes. Supply
idand a nonemptyidempotencyKey.deleted: falsemeans no matching owned profile was deleted and does not prove another tenant's profile exists.
For every create, update, or delete, preview the organization, exact target or payload, and side effects, then require explicit confirmation immediately before the call. Changes invalidate confirmation. Every retry needs a new preview and confirmation.
Create and delete use durable receipts. Reuse the original key and arguments for the same intended operation; do not generate a new key after a timeout or an in-flight result. Inspect list/get and returned receipt guidance first. A key reused with different arguments is refused. If interrupted provisioning or teardown needs attention, stop and reconcile in the dashboard rather than retry automatically or replace the key. A new key authorizes a separate operation only after the existing outcome has been reconciled. Verify the returned profile and channel readiness; creation alone does not establish permission to send.