
sender-profile-architect
Designs Sent Sender Profile architecture for multi-tenant, multi-brand, and multi-channel systems. Use for API-key scoping, x-profile-id, isolation, inheritance, sharing, billing, WABA, 10DLC campaigns, webhooks, or tenant offboarding.
- Installs
- 2.9K
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/sentdm/sent-plugin --skill sender-profile-architect- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads sender-profile-architect automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Sender Profile Architect
A Sender Profile is the operational boundary for tenant identity, channel configuration, inherited resources, billing, and credentials. Use this skill before provisioning when a poor boundary would mix brands, compliance posture, rate-limit impact, or webhook ownership.
For live MCP profile lifecycle operations use sent-profile-provisioning; for market requirements use sent-compliance. MCP selects an acting profile with optional profileId on ordinary account tools for organization grants only. sender_profiles.* tools operate on target id and reject acting profileId. REST headers below are not MCP arguments.
Recommended tenancy model
When tenants require isolation, recommend one Sent organization with one Sender Profile per tenant. A shared profile is appropriate only when the tenants genuinely share one brand, sender resources, compliance posture, billing/rate-limit expectations, and operational blast radius.
Do not recommend pooled-by-default architecture. Make the isolation decision explicit using references/multi-tenancy-patterns.md.
Authentication patterns
Sent v3 supports both:
| Pattern | Headers | Blast radius |
|---|---|---|
| Profile-specific API key | x-api-key | Profile-scoped credentials and rate-limit context. Do not add x-profile-id. |
| Organization API key acting for a child | x-api-key plus x-profile-id: <profile UUID> | Organization credential can reach permitted child profiles; rate limits remain in the organization pool. |
Only organization keys may send x-profile-id. A profile key that sends it receives 403. A profile outside the organization returns 404. X-Profile-Id can be echoed in scoped responses.
x-sender-id is legacy v1/v2 terminology only. Do not use it for v3 authentication or routing.
Choose profile keys when tenant-level credential isolation and revocation are primary. Choose organization-key scoping for centrally controlled integrations that can protect a broader credential and deliberately accept a shared organization rate-limit pool.
Profile creation model
Create with POST /v3/profiles. name is required. Current optional areas include:
- identity:
icon,description,short_name; - sharing:
allow_contact_sharing,allow_template_sharing; - inheritance:
inherit_contacts,inherit_templates,inherit_tcr_brand,inherit_tcr_campaign; - billing:
billing_model,billing_contact, and ephemeralpayment_details; - dedicated WABA credentials:
whatsapp_business_accountwithwaba_id, optionalphone_number_id, andaccess_token; - a dedicated brand:
brand.contact,brand.business, andbrand.compliance.
Do not add a separate brand endpoint. A dedicated brand is created with the profile; campaigns are managed under /v3/profiles/{profileId}/campaigns.
Inheritance rules
inherit_tcr_brand: truemeans the profile uses the organization's brand and cannot submit its ownbrandobject.inherit_tcr_campaign: truemakes inherited campaigns read-only for that profile.- An inherited brand with
inherit_tcr_campaign: falseis a supported dedicated-campaign pattern. - Sharing flags expose a profile's contacts/templates; inheritance flags consume organization resources. Treat those directions separately.
Billing and number references
billing_model currently supports profile, organization, and profile_and_organization. A profile or fallback billing model requires billing_contact when none exists. Card fields are forwarded to the payment processor and must not be logged or persisted.
Profile update can manage sending_phone_number_profile_id, sending_whatsapp_number_profile_id, sending_phone_number, whatsapp_phone_number, and allow_number_change_during_onboarding. Model reference IDs and direct numbers separately, and prevent cycles when one profile references another.
WABA choices
There are three distinct paths:
- Organization Embedded Signup in the dashboard.
- Child profile inheritance by omitting
whatsapp_business_accountafter the organization has a WABA. - Dedicated profile WABA using
waba_idandaccess_token;phone_number_idis optional.
There is no public endpoint that starts organization Embedded Signup. Direct credentials on POST /v3/profiles are not an “Embedded Signup endpoint.” Use waba-embedded-signup for the operational flow.
10DLC and campaigns
Use a profile brand object for a dedicated brand. Manage campaigns at:
GET|POST /v3/profiles/{profileId}/campaignsPUT|DELETE /v3/profiles/{profileId}/campaigns/{campaignId}
Use sms-10dlc-registration for the payload and policy layer.
Completion and status handling
Complete a profile with POST /v3/profiles/{profileId}/complete and a required webHookUrl:
{
"webHookUrl": "https://example.com/webhooks/profile-complete",
"sandbox": true
}
Status is surface-specific:
- Create response currently demonstrates lowercase
incomplete. - Completion
202means processing started and does not contain a final status. - Completion
200currently demonstrates lowercasecompletedfor an already-complete profile. - Completion callbacks can report
COMPLETED,SUBMITTED, orfailed. - REST guides and OpenAPI publish different profile status sets.
Do not assert a closed REST enum. Preserve unknown strings and record the endpoint/callback surface that produced them.
Webhook attribution
Sent events do not contain your application tenant ID. Before sending, persist the returned message_id with the tenant and profile. Route outbound status events through that mapping. For inbound messages, map the receiving number/profile resource to the tenant.
message_id -> tenant_id, profile_id, logical_send_id, channel
receiving_number -> tenant_id, profile_id
Do not infer tenant ownership from account_id alone. Multiple tenant profiles can belong to one organization.
Design checklist
- Tenant/brand isolation decision is explicit.
- Credential pattern and rate-limit/blast radius are documented.
- Sharing and inheritance directions are intentional.
- Billing ownership is named.
- Number references cannot form cycles.
- WABA path is organization signup, inheritance, or dedicated credentials—not an invented hybrid.
- Dedicated brand/campaign paths are profile-based.
-
message_idand inbound-number mappings support webhook attribution. - Unknown profile statuses are tolerated.
- Tenant offboarding revokes credentials, disables sends, detaches resources safely, and retains audit evidence.
See references/sender-profile-data-model.md and references/profile-boundary-examples.md for implementation patterns.
FAQ
What does the sender-profile-architect skill do?
Designs Sent Sender Profile architecture for multi-tenant, multi-brand, and multi-channel systems. Use for API-key scoping, x-profile-id, isolation, inheritance, sharing, billing, WABA, 10DLC campaigns, webhooks, or tenant offboarding.
How do I install sender-profile-architect?
Run npx skills add https://github.com/sentdm/sent-plugin --skill sender-profile-architect in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/sender-profile-architect/ (personal) or .claude/skills/sender-profile-architect/ (project).
Which AI agents can use sender-profile-architect?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is sender-profile-architect safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains sender-profile-architect?
It is published by sentdm in sentdm/sent-plugin. It has 2,901 recorded installs.
More from sentdm/sent-plugin
sent
sentdm/sent-plugin
Routes broad or ambiguous Sent requests to the correct MCP-backed operation or specialist skill. Use when the user asks what Sent can do, says "help me with Sent" or "set up messaging," needs several Sent workflows, or has not made the channel, task, or desired operation clear enough to select a more specific skill.
waba-template-author
sentdm/sent-plugin
Writes, classifies, validates, and repairs WhatsApp templates using the Sent v3 template definition contract. Use for utility, marketing, authentication, OTP, Meta review, rejected templates, variables, buttons, channel overrides, or submission-ready Sent payloads.
waba-embedded-signup
sentdm/sent-plugin
Guides WhatsApp Business Account onboarding through Sent, separating dashboard Embedded Signup, organization WABA inheritance, and direct child-profile credentials. Use for WABA connection, Meta signup, profile creation, access-token handling, phone number mapping, completion callbacks, or WhatsApp onboarding failures.
messaging-performance-analyzer
sentdm/sent-plugin
Analyzes Sent message delivery, webhook, and activity data to explain funnel drop-offs, delivery failures, read-rate gaps, channel fallback, and suspicious performance changes. Use when a user says MDR, delivery report, message activity, webhook event, failed messages, low delivery rate, RCS fallback, WhatsApp read rate, SMS filtering, campaign performance, or asks why messages did not arrive.
sms-10dlc-registration
sentdm/sent-plugin
Prepares and validates Sent US A2P 10DLC brand and campaign registration through Sender Profiles, including inheritance, all campaign use cases, opt-in evidence, sample-message policy, autoresponses, sandbox validation, TCR status, and rejection remediation.
rcs-agent-onboarding
sentdm/sent-plugin
Guides current Sent RCS and RBM onboarding, launch evidence, carrier approval, text and suggestion-chip templates, Sender Profile readiness, and safe routing. Use for RCS launch, fallback, pinned-channel tests, or broadcast prevention.
Popular backend & apis skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
entra-app-registration
microsoft/azure-skills
Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.
google-agents-cli-adk-code
google/agents-cli
This skill should be used when the user wants to "write agent code", "build an agent with ADK", "add a tool", "create a callback", "define an agent", "use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).
embedded-captions
heygen-com/hyperframes
Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet anchor rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.
entra-agent-id
microsoft/azure-skills
Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmipath token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registration (use entra-app-registration), Microsoft Foundry agent authoring (use microsoft-foundry).
neon
neondatabase/agent-skills
Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, the AI Gateway, and Realtime. Start here to choose Neon for undecided login, files, APIs, and LLM calls, set up the CLI or MCP server, and follow the branch-first workflow. Use when building an app or backend on Neon, or when "Neon" or "Lakebase Postgres" is mentioned. Child skill neon-postgres wins for an existing DATABASEURL, SQL, schema, inspect, or search. Child skill neon-auth wins for login, users, sessions, identity routing, and Managed Better Auth setup. Child skill neon-realtime wins for live queries in reactive apps and agents. Also use for object storage, S3, buckets, serverless functions, function triggers, cron, AI gateway, LLM calls, realtime, logs, Loki, Grafana, observability, postgres, database, backend, Claimable Neon, neon.new, or a no-signup database.