twilio-regulatory-compliance-bundles
This skill manages regulatory compliance bundles for international phone numbers, enabling agents to verify end-user identity and upload supporting documents…
Identity proven by GitHub's verified organisation badge (twilio)
- Agents
- Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, claude.ai and API
- License
- MIT (permissive)
- Pin
- 8aba46fpinned Oct 9, 2026
- Context cost
- about 1,800 tokenswhen the skill loads
- GitHub stars
- 37on twilio/ai
- Scripts
- None found
What it does
“Manage regulatory compliance for international phone numbers. Covers what bundles are, which countries require them, how to create End-Users and Supporting Documents, evaluate and submit bundles, fix evaluation failures, update bundles when regulations change, and ISV multi-account patterns. Use this skill when provisioning numbers outside the US.”
Generated summary from the skill's own text
This skill manages regulatory compliance bundles for international phone numbers, enabling agents to verify end-user identity and upload supporting documents required by different countries. It guides creation of bundles containing End-User records and Supporting Documents, evaluates them against country-specific regulations, submits them for approval, and handles updates when regulations change. The skill covers single-account provisioning and ISV multi-account patterns where each customer needs their own bundle.
When to use it
- Provisioning phone numbers outside the US that require identity verification
- Setting up bundles for international business or individual end-users
- Fixing bundle evaluation failures before submitting for regulatory approval
- Updating existing approved bundles when country regulations change
When not to
- Provisioning numbers in the US, which typically do not require bundles
- Reusing one bundle across different number types or countries
- Creating new bundles instead of fixing existing non-compliant bundles
Install
These commands install from the publisher's repository and need no account.
skills CLI
npx skills add twilio/ai --skill twilio-regulatory-compliance-bundlesInstalls from the repository's default branch, which may have changed since the commit we checked.
GitHub CLI 2.90 or later
gh skill install twilio/ai twilio-regulatory-compliance-bundles@8aba46fb65dc8d9a20f4b301a68352064b4159a5Installs the commit we checked (8aba46f).
Copy by hand
Download the folder at 8aba46f and put it in .claude/skills/twilio-regulatory-compliance-bundles for Claude Code and in .agents/skills/twilio-regulatory-compliance-bundles for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.
Claude Code plugin
/plugin install twilio-developer-kit@claude-plugins-officialThe publisher's plugin in Claude's official marketplace. It may hold more than this skill, and we have not pinned it.
Copy for your agent
A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.
Prompt
Install the agent skill "twilio-regulatory-compliance-bundles" by Twilio. Source, pinned to commit 8aba46fb65dc8d9a20f4b301a68352064b4159a5: https://github.com/twilio/ai/tree/8aba46fb65dc8d9a20f4b301a68352064b4159a5/skills/twilio/twilio-regulatory-compliance-bundles 1. Download that folder at exactly this commit. Do not use the default branch. 2. Copy every file unchanged, keeping the folder structure, into .claude/skills/twilio-regulatory-compliance-bundles/ for Claude Code and .agents/skills/twilio-regulatory-compliance-bundles/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist. 3. Do not edit the files, and do not run any script in the folder unless I ask you to. 4. When you are done, list the files you copied and where you put them. Listing and checks: https://www.agentnative.dev/skills/twilio/twilio-regulatory-compliance-bundles
SKILL.md at the pin
---
name: twilio-regulatory-compliance-bundles
description: >
Manage regulatory compliance for international phone numbers. Covers
what bundles are, which countries require them, how to create End-Users
and Supporting Documents, evaluate and submit bundles, fix evaluation
failures, update bundles when regulations change, and ISV multi-account
patterns. Use this skill when provisioning numbers outside the US.
---
## Overview
Phone numbers are national resources — many countries require **identity verification of the end-user** before provisioning. A Regulatory Bundle is a container holding an End-User record + Supporting Documents that proves your right to use numbers in a specific country.
**Not all countries require bundles** — check the [Regulatory Guidelines page](https://www.twilio.com/en-us/guidelines/regulatory) for country-specific requirements. If a country requires a bundle, provisioning fails without one.
---
## Key Concepts
| Resource | What it is |
|----------|-----------|
| **Regulation** | Country-specific requirement defining what End-User types and document types are needed |
| **Bundle** | Container that holds an End-User + Supporting Documents for a specific regulation |
| **End-User** | The entity answering calls or receiving messages (`individual` or `business` type) |
| **Supporting Document** | Identity/address verification documents (business registration, proof of address, etc.) |
| **Evaluation** | Synchronous check that validates a bundle against its regulation before submission |
| **Item Assignment** | Links an End-User or Supporting Document to a Bundle |
---
## Quickstart: Provision a Number with a Bundle
### Step 1 — Query the Regulation
Find out what's required for the country and number type:
**Python**
```python
import os, requests
account_sid = os.environ["TWILIO_ACCOUNT_SID"]
auth_token = os.environ["TWILIO_AUTH_TOKEN"]
# What does Germany require for local business numbers?
regulations = requests.get(
"https://numbers.twilio.com/v2/RegulatoryCompliance/Regulations",
params={"IsoCountry": "DE", "NumberType": "local", "EndUserType": "business"},
auth=(account_sid, auth_token)
).json()
for reg in regulations["results"]:
print(f"Regulation: {reg['sid']}")
print(f"Requirements: {reg['requirements']}")
```
### Step 2 — Create an End-User
**Python**
```python
end_user = requests.post(
"https://numbers.twilio.com/v2/RegulatoryCompliance/EndUsers",
data={
"FriendlyName": "Acme GmbH",
"Type": "business",
"Attributes": '{"business_name": "Acme GmbH", "business_registration_number": "HRB12345"}'
},
auth=(account_sid, auth_token)
).json()
```
### Step 3 — Upload Supporting Documents
**Python**
```python
document = requests.post(
"https://numbers.twilio.com/v2/RegulatoryCompliance/SupportingDocuments",
data={
"FriendlyName": "Acme Business Registration",
"Type": "business_registration",
"Attributes": '{"business_name": "Acme GmbH"}'
},
auth=(account_sid, auth_token)
).json()
```
### Step 4 — Create a Bundle and Assign Items
**Python**
```python
# Create the bundle
bundle = requests.post(
"https://numbers.twilio.com/v2/RegulatoryCompliance/Bundles",
data={
"FriendlyName": "Germany Local - Acme",
"RegulationSid": regulations["results"][0]["sid"],
"IsoCountry": "DE",
"EndUserType": "business",
"Email": "compliance@acme.com"
},
auth=(account_sid, auth_token)
).json()
bundle_sid = bundle["sid"]
# Assign End-User to bundle
requests.post(
f"https://numbers.twilio.com/v2/RegulatoryCompliance/Bundles/{bundle_sid}/ItemAssignments",
data={"ObjectSid": end_user["sid"]},
auth=(account_sid, auth_token)
)
# Assign Supporting Document to bundle
requests.post(
f"https://numbers.twilio.com/v2/RegulatoryCompliance/Bundles/{bundle_sid}/ItemAssignments",
data={"ObjectSid": document["sid"]},
auth=(account_sid, auth_token)
)
```
### Step 5 — Evaluate and Submit
**Python**
```python
# Run evaluation (synchronous — returns field-level failures)
evaluation = requests.post(
f"https://numbers.twilio.com/v2/RegulatoryCompliance/Bundles/{bundle_sid}/Evaluations",
auth=(account_sid, auth_token)
).json()
if evaluation["status"] == "noncompliant":
for violation in evaluation["results"]:
print(f"Field: {violation['friendly_name']} — {violation['description']}")
# Fix the issues, then re-evaluate
else:
# Submit for review
requests.post(
f"https://numbers.twilio.com/v2/RegulatoryCompliance/Bundles/{bundle_sid}",
data={"Status": "pending-review"},
auth=(account_sid, auth_token)
)
```
### Step 6 — Provision Number with Bundle
Once the bundle is approved:
**Python**
```python
from twilio.rest import Client
client = Client(account_sid, auth_token)
number = client.incoming_phone_numbers.create(
phone_number="+4930xxxxxxx",
bundle_sid=bundle_sid
)
```
---
## Updating an Approved Bundle
When regulations change, you'll receive an email. Update without deprovisioning numbers:
1. **Copy** the approved bundle into a mutable state via the Bundle Copies resource
2. **Update** the End-User or Supporting Document on the copy
3. **Re-evaluate** the copy
4. **Replace** items in the original bundle via the Replace Items resource
Phone numbers remain provisioned throughout this process.
**Alternative:** Create a new bundle → get it approved → remap numbers to the new bundle.
**Docs:** [Bundle Copies](https://www.twilio.com/docs/phone-numbers/regulatory/api/bundles-copies) | [Replace Items](https://www.twilio.com/docs/phone-numbers/regulatory/api/bundles-replace-items)
---
## ISV / Multi-Account Pattern
If managing Twilio subaccounts for multiple customers:
- **Each customer needs their own bundle** — Do not reuse your business information in customer bundles
- Use the **Bundle Clones** resource to duplicate bundle structures across subaccounts
- End-User records must reflect the actual end-user (your customer), not you
**Docs:** [Bundle Clones](https://www.twilio.com/docs/phone-numbers/regulatory/api/bundles-clones)
---
## CANNOT
- **Cannot provision numbers without required bundles** — Provisioning fails immediately. Check Regulations resource first.
- **Cannot reuse one bundle across different number types** — Each bundle is tied to a specific regulation (country + number type + end-user type).
- **Locality-matching addresses required in ~33 countries** — Germany (and others) require the End-User address to be within the region of the phone number prefix, not just any address in the country. US HQ address will fail for a Berlin number.
- **Cannot hardcode regulation requirements** — Regulations change periodically. Always query the Regulations resource dynamically.
- **Do not create a new bundle when evaluation fails** — Fix the existing bundle. Creating new ones wastes time and clutters your account.
- **Cannot reuse your ISV info in customer bundles** — Bundles must represent the actual end-user. Twilio audits this.
- **Some markets are business-only** — Individual provisioning not allowed. Check the `EndUserType` in the Regulation.
---
## Next Steps
- **Choose number type before provisioning:** `twilio-numbers-senders`
- **Register numbers after provisioning:** `twilio-compliance-onboarding`
- **Country-specific requirements:** [Regulatory Guidelines](https://www.twilio.com/en-us/guidelines/regulatory)
- **API reference:** [Regulatory Compliance API](https://www.twilio.com/docs/phone-numbers/regulatory/api)
From twilio/ai at 8aba46f, shown as plain text under its license: MIT (permissive). The license text is in LICENSE.
View SKILL.md on GitHub at 8aba46fFiles
- SKILL.md7.7 KB · c5877b728fb7
- agents/
- openai.yaml498 B · e4cb727bb607
- assets/
- icon-large.png9.6 KB · 0ba822e01172
- icon-small.png5.6 KB · 400e3f49b6c1
4 files, 23 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.
Skill folder on GitHub at 8aba46fMore from Twilio
twilio-account-setup
Sets up a Twilio account from scratch, including free trial signup, credential retrieval, phone number purchase, and enabling specific products like AI…
Claude Code, Codex, Cursor +4 · about 2.5K tokens · pinned 6 days ago
twilio-agent-augmentation-architect
This skill helps developers design AI-augmented contact center systems that enhance human agents with real-time intelligence.
Claude Code, Codex, Cursor +3 · about 3.6K tokens · pinned 6 days ago
twilio-agent-connect
Twilio Agent Connect is middleware that integrates LLM agents with Twilio communication channels (voice, SMS, RCS, WhatsApp, chat).
Claude Code, Codex, Cursor +4 · about 4.1K tokens · pinned 6 days ago
twilio-ai-agent-architect
Planning skill that helps developers design AI-powered conversational agents by assessing their use case across outcome sophistication, channels, and customer…
Claude Code, Codex, Cursor +3 · about 4.9K tokens · pinned 6 days ago
twilio-call-recordings
This skill teaches agents to record Twilio voice calls correctly using the appropriate method for the use case.
Claude Code, Codex, Cursor +4 · about 2.6K tokens · pinned 6 days ago
twilio-cli-reference
The Twilio CLI reference enables agents to manage Twilio resources directly from the terminal, including phone number provisioning, sending SMS and email…
Claude Code, Codex, Cursor +4 · about 1.8K tokens · pinned 6 days ago
Related in Backend and APIs
twilio-conference-calls
This skill enables multi-party call handling using Twilio Conference, covering warm and cold transfers, hold versus mute, supervisor coaching with whisper…
by TwilioOfficial publisher
Claude Code, Codex, Cursor +4 · about 2.8K tokens · pinned 6 days ago
twilio-content-template-builder
This skill enables agents to create, manage, and send message templates through Twilio's Content API across WhatsApp, SMS, RCS, and MMS channels.
by TwilioOfficial publisher
Claude Code, Codex, Cursor +4 · about 1.3K tokens · pinned 6 days ago
twilio-conversation-orchestrator
This skill configures Twilio Conversation Orchestrator to automatically capture and route SMS, voice, WhatsApp, RCS, and web chat into unified conversations.
by TwilioOfficial publisher
Claude Code, Codex, Cursor +4 · about 8.3K tokens · pinned 6 days ago
twilio-conversations-classic-api
Build multi-channel messaging conversations using Twilio's classic API, combining SMS, WhatsApp, and web chat participants in persistent threads with message…
by TwilioOfficial publisher
Claude Code, Codex, Cursor +4 · about 4.2K tokens · pinned 6 days ago
twilio-iam-auth-setup
This skill guides agents through setting up Twilio authentication methods including Auth Tokens, API Keys (Standard, Main, Restricted), Access Tokens for…
by TwilioOfficial publisher
Claude Code, Codex, Cursor +4 · about 2.3K tokens · pinned 6 days ago
twilio-isv-sms-best-practices
This skill guides ISVs building multi-tenant SMS platforms on Twilio through subaccount architecture, customer onboarding for A2P 10DLC and toll-free…
by TwilioOfficial publisher
Claude Code, Codex, Cursor +4 · about 2.7K tokens · pinned 6 days ago