io.github.Ringer/warp
NPM · WARP-MCP · SCANNED AUG 3
SIP trunking, numbers, porting, messaging, billing, and CDR analytics on the Ringer WARP platform
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security80
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.Partial
- Runs a script at install time (postinstall) that we could not recognise. It may be perfectly ordinary, but we do not read the published tarball, so we cannot say what it does. View diagnostics → Partial
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to Ringer/warp-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 27 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 21646 tokens (~160/item across 135 items; 135 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · warp-mcp
claude mcp add ringer-warp -- npx -y warp-mcp
codex mcp add ringer-warp -- npx -y warp-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ringer-warp": {
"type": "local",
"command": [
"npx",
"-y",
"warp-mcp"
],
"enabled": true
}
}
} openclaw mcp add ringer-warp --command npx --arg -y --arg warp-mcp
mcp_servers:
ringer-warp:
command: "npx"
args: ["-y", "warp-mcp"] {
"mcpServers": {
"ringer-warp": {
"command": "npx",
"args": [
"-y",
"warp-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Aug 26 +53
- Known CVEs: unverified → partial ▲ security
- Provenance: unverified → pass ▲ security
- Install scripts: unverified → partial ▲ security
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- The scripts that run when this package is installed changed: postinstall security
- The attested source repository moved: Ringer/warp-mcp security
- Stability: unverified → 0.23 ▲ functional
- Maintenance: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- License: unverified → pass ▲ functional
- Schema quality: unverified → excellent ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Licence: MIT functional
- 1 Aug 26 −27
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 31 Jul 26 +1
- Malware scan: pass → unverified ▼ security
- Install scripts: unverified → partial ▲ security
- Provenance: unverified → pass ▲ security
- The scripts that run when this package is installed changed: postinstall security
- The attested source repository moved: Ringer/warp-mcp security
- Maintenance: unverified → pass ▲ functional
- License: unverified → pass ▲ functional
- Licence: MIT functional
- 27 Jul 26 51
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed npm/[email protected]
Provenance verified
Ecosystem: npm · Outcome: verified
Reason: verified
- Source repo:
- Ringer/warp-mcp
- Certificate issuer:
- https://token.actions.githubusercontent.com
- Certificate SAN:
- https://github.com/Ringer/warp-mcp/.github/workflows/publish.yml@refs/tags/v1.0.2
- Rekor log index:
- 2084915860
- Predicate type:
- https://slsa.dev/provenance/v1
- Subject digest:
- sha512:b72983e1441c9dab7ac2adf29c971e8d57c5b6a03ec6d41de2cb3cf260b115ccad4d8bc63ac7971093c7baad17210682485b7f58b9988eec9aa7d132c
- Discovery method:
- attestation_endpoint
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| postinstall | unreviewed | node postinstall.js |
Dependencies 94 packages
94 packages in the resolved dependency tree · 94 deprecated · 29 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
acct_get_balance Get prepaid balance ~53
Get your prepaid balance and currency. Use for a quick balance check; for the full billing snapshot (credit limit, available, suspension flag) use bill_get_balance. POSTPAID customers always see prepaid_balance=0.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
acct_get_capacity Get account capacity ~42
Get your account's per-class × per-direction CPS (calls-per-second) and channel capacity ceilings. Use when planning traffic loads or diagnosing capacity-related call rejections.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
acct_get_utilization Get capacity utilization ~53
Get your aggregate CPS/channel capacity and current concurrent usage across trunk groups. Use to check how close live traffic is to capacity ceilings. current_* fields are null when live counters cannot be read (counters_available=false).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
acct_list_scopes List permission scope catalog ~48
List every permission scope in the WARP platform registry, grouped by category. Use when building or editing team roles or API keys to see what scopes exist. Requires the team:read scope.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
bill_get_balance Get billing balance snapshot ~46
Get your full billing balance snapshot: current balance, credit limit, available credit, suspension flag, and currency. Use for billing questions; for just the prepaid number use acct_get_balance.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
bill_get_invoice Get an invoice ~65
Get one invoice in full: header, line items, tax lines, and payment applications. Use after finding the invoice id via bill_list_invoices. Returns 404 for invoices not owned by you.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | Invoice id (from bill_list_invoices) |
No output schema declared.
No examples provided.
bill_get_invoice_html Render invoice as HTML ~86
Render one invoice as a branded HTML document (returned as text). Use when the user wants a presentable invoice document; for structured data use bill_get_invoice. A PDF variant exists at GET /v1/invoices/{id}/pdf but is binary — direct users to the portal for PDF downloads.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | Invoice id (from bill_list_invoices) |
No output schema declared.
No examples provided.
bill_list_invoices List invoices ~33
List your invoices, newest billing period first. Use to find an invoice id before fetching details with bill_get_invoice.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
bill_list_ledger List ledger transactions ~61
List your billing ledger journal entries, most recent first. Use to trace payments, charges, and adjustments — e.g. 'why did my balance drop yesterday'.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max rows to return (1-500, default 100) |
No output schema declared.
No examples provided.
cdr_export_csv Export CDRs as CSV ~199
Export up to 10,000 call detail records for a date range as CSV text. Use only when the user explicitly wants a CSV export; for browsing or analysis prefer cdr_get_details (paginated). Output over 40k characters is truncated — narrow the date range or filters if that happens.
| Name | Type | Req | Description |
|---|---|---|---|
| ani | string | — | Filter by ANI (calling number) |
| direction | string | — | Filter by call direction |
| disposition | string | — | Filter by call disposition (e.g. ANSWERED, NO ANSWER, BUSY, FAILED) |
| dni | string | — | Filter by DNI (called number) |
| end_date | string | — | End date (YYYY-MM-DD, inclusive) |
| start_date | string | — | Start date (YYYY-MM-DD) |
| tz_offset_minutes | integer | — | Operator timezone offset in minutes, as returned by JS getTimezoneOffset() (e.g. 420 for US Mountain in summer) |
No output schema declared.
No examples provided.
cdr_get_dashboard_stats Get dashboard statistics ~43
Get the key dashboard metrics (counts, revenue, growth) scoped to your accessible customers. Use for a quick account health overview rather than detailed CDR analysis.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
cdr_get_details List call detail records ~222
List paginated call detail records (CDRs) for a date range with optional filters. Use to investigate specific calls, verify traffic, or debug call failures. For aggregate metrics use cdr_get_statistics; for chart data use cdr_get_trends.
| Name | Type | Req | Description |
|---|---|---|---|
| ani | string | — | Filter by ANI (calling number) |
| direction | string | — | Filter by call direction |
| disposition | string | — | Filter by call disposition (e.g. ANSWERED, NO ANSWER, BUSY, FAILED) |
| dni | string | — | Filter by DNI (called number) |
| end_date | string | — | End date (YYYY-MM-DD, inclusive) |
| page | integer | — | Page (1-based, default 1) |
| per_page | integer | — | Page size (1-500, default 50) |
| start_date | string | — | Start date (YYYY-MM-DD) |
| tz_offset_minutes | integer | — | Operator timezone offset in minutes, as returned by JS getTimezoneOffset() (e.g. 420 for US Mountain in summer) |
No output schema declared.
No examples provided.
cdr_get_statistics Get call statistics ~121
Get aggregated CDR metrics (totals, durations, dispositions) for a date range. Use for summary questions like 'how many calls last week' or ASR/ACD analysis. For individual calls use cdr_get_details.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | — | End date (YYYY-MM-DD, inclusive) |
| start_date | string | — | Start date (YYYY-MM-DD) |
| tz_offset_minutes | integer | — | Operator timezone offset in minutes, as returned by JS getTimezoneOffset() (e.g. 420 for US Mountain in summer) |
No output schema declared.
No examples provided.
cdr_get_trends Get call trend data ~128
Get time-bucketed CDR aggregates for a date range, suitable for charts and spotting traffic patterns over time. Choose hour granularity for a single day, day for weeks, week for months.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | — | End date (YYYY-MM-DD, inclusive) |
| granularity | string | — | Bucket size (default day) |
| start_date | string | — | Start date (YYYY-MM-DD) |
| tz_offset_minutes | integer | — | Operator timezone offset in minutes, as returned by JS getTimezoneOffset() (e.g. 420 for US Mountain in summer) |
No output schema declared.
No examples provided.
key_get Get an API key ~74
Get one API key's metadata and scopes by key UUID (never the secret). Use to inspect a specific key found via key_list. Requires the api_keys:read scope.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | yes | Your customer UUID (shown in the WARP portal under Settings) |
| key_id | string | yes | API key UUID |
No output schema declared.
No examples provided.
key_get_audit Get API key audit trail ~82
Get the most recent 100 audit events (create/rotate/revoke/auth activity) for one API key. Use when investigating suspicious key usage or verifying rotation history. Requires the api_keys:read scope.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | yes | Your customer UUID (shown in the WARP portal under Settings) |
| key_id | string | yes | API key UUID |
No output schema declared.
No examples provided.
key_get_audit_all Get customer-wide API key audit trail ~77
Get the most recent 100 audit events across ALL of your API keys. Use for a security review of key activity account-wide; for a single key's history use key_get_audit. Requires the api_keys:read scope.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | yes | Your customer UUID (shown in the WARP portal under Settings) |
No output schema declared.
No examples provided.
key_list List API keys ~79
List your API keys with their scopes and prefixes (secrets are never returned). Use to audit which keys exist and what they can do. Requires the api_keys:read scope.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | yes | Your customer UUID (shown in the WARP portal under Settings) |
| include_revoked | boolean | — | Include revoked keys (default false) |
No output schema declared.
No examples provided.
msg_assign_numbers Attach numbers to campaign ~172
Attach telephone numbers you own to one of your 10DLC campaigns. This is STEP 3 of the 10DLC flow (msg_create_brand → msg_create_campaign → assign numbers) and is required before msg_send will accept a number as `from`. Returns per-TN assigned/failed lists (failure reasons: not_found, not_owned, lookup_error, write_error); the response is NOT wrapped in the standard envelope. Errors: INVALID_PAYLOAD (400), NOT_FOUND (404, campaign not owned), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Campaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign) |
| phone_numbers | array | yes | Telephone numbers to attach, NANP format, e.g. ["13039813633"] |
No output schema declared.
No examples provided.
msg_create_brand Create 10DLC brand ~586
Register a new 10DLC brand with TCR (The Campaign Registry) for your account. This is STEP 1 of the 10DLC flow: create brand → msg_create_campaign → msg_assign_numbers. Check msg_list_entity_types and msg_list_verticals for valid enum values first. Registration may incur TCR fees. Errors: INVALID_PAYLOAD/TNIQ_VALIDATION (400), TNIQ_ERROR (502, upstream TCR failure).
| Name | Type | Req | Description |
|---|---|---|---|
| alt_business_id | string | — | Alternate business identifier, e.g. DUNS number |
| alt_business_id_type | string | — | Type of the alternate business ID, e.g. DUNS, LEI, GIIN |
| city | string | — | City, e.g. "Denver" |
| company_name | string | — | Legal company name as registered, e.g. "Acme Coffee LLC". Required for non-SOLE_PROPRIETOR entity types. |
| country | string | — | Country as 2-letter ISO code, e.g. "US" |
| display_name | string | — | Brand display/marketing name, e.g. "Acme Coffee" |
| ein | string | — | Tax ID / EIN, e.g. "12-3456789" (US). Required for company registrations; improves trust score. |
| ein_issuing_country | string | — | EIN issuing country as 2-letter ISO code, e.g. "US" |
| string | — | Brand contact email address | |
| entity_type | string | — | Brand entity type (see msg_list_entity_types for the valid list), e.g. PRIVATE_PROFIT |
| first_name | string | — | Contact first name (required for SOLE_PROPRIETOR) |
| last_name | string | — | Contact last name (required for SOLE_PROPRIETOR) |
| mobile_phone | string | — | Mobile phone in E.164 format (used for SOLE_PROPRIETOR OTP verification) |
| phone | string | — | Support/contact phone in E.164 format, e.g. "+13035551212" |
| postal_code | string | — | Postal/ZIP code, e.g. "80202" |
| reference_id | string | — | Your own free-form reference ID for this brand |
| state | string | — | State/region code, e.g. "CO" |
| stock_exchange | string | — | Stock exchange, e.g. NASDAQ, NYSE (PUBLIC_PROFIT brands only) |
| stock_symbol | string | — | Stock ticker symbol (PUBLIC_PROFIT brands only) |
| street | string | — | Street address, e.g. "123 Main St" |
| vertical | string | — | Industry vertical code (see msg_list_verticals for the valid list), e.g. RETAIL |
| website | string | — | Brand website URL, e.g. "https://acme.example.com" |
No output schema declared.
No examples provided.
msg_create_campaign Create 10DLC campaign ~635
Register a new 10DLC campaign under one of your brands. This is STEP 2 of the 10DLC flow: msg_create_brand → create campaign → msg_assign_numbers. Check msg_get_use_case_requirements for the chosen use case first (sample counts, opt-in rules). Carrier review can take days; monitor with msg_get_mno_status. Registration incurs recurring TCR fees. Errors: INVALID_PAYLOAD/TNIQ_VALIDATION (400), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| age_gated | boolean | — | True if content is age-gated (alcohol, gambling, etc.) |
| auto_renewal | boolean | — | Auto-renew the campaign at TCR each billing cycle |
| brand_id | string | — | Parent brand ID (messaging-backend UUID from msg_list_brands). Required when creating a campaign. |
| description | string | — | What this campaign sends and to whom (reviewed by carriers) |
| direct_lending | boolean | — | True if content relates to direct lending or loan arrangements |
| embedded_link | boolean | — | True if messages may contain URLs/links |
| embedded_phone | boolean | — | True if messages may contain phone numbers |
| help_keywords | string | — | Comma-separated help keywords, e.g. "HELP,INFO" |
| help_message | string | — | Reply sent when a subscriber texts a help keyword |
| message_flow | string | — | How subscribers opt in to receive messages (consent flow description; heavily weighted in carrier review) |
| number_pool | boolean | — | True if the campaign uses 50+ sending numbers (number pooling) |
| optin_keywords | string | — | Comma-separated opt-in keywords, e.g. "START,SUBSCRIBE" |
| optin_message | string | — | Confirmation message sent after a subscriber opts in |
| optout_keywords | string | — | Comma-separated opt-out keywords, e.g. "STOP,UNSUBSCRIBE" |
| optout_message | string | — | Confirmation message sent after a subscriber opts out |
| reference_id | string | — | Your own free-form reference ID for this campaign |
| sample1 | string | — | Sample message 1 (representative outbound text) |
| sample2 | string | — | Sample message 2 |
| sample3 | string | — | Sample message 3 |
| sample4 | string | — | Sample message 4 |
| sample5 | string | — | Sample message 5 |
| sub_usecases | array | — | Sub-use-case codes for MIXED/LOW_VOLUME campaigns |
| subscriber_help | boolean | — | True if subscribers can request help via keyword (HELP handling) |
| subscriber_optin | boolean | — | True if subscribers can opt in via keyword |
| subscriber_optout | boolean | — | True if subscribers can opt out via keyword (STOP handling) |
| terms_and_conditions | boolean | — | Affirm the campaign complies with carrier terms and conditions |
| usecase | string | — | Campaign use case code, e.g. MARKETING, 2FA, CUSTOMER_CARE (see msg_list_use_cases; check msg_get_use_case_requirements first) |
No output schema declared.
No examples provided.
msg_delete_brand Delete 10DLC brand ~87
Permanently delete one of your 10DLC brands from TCR and this account. Campaigns under the brand become unusable — only do this when decommissioning a brand. Errors: NOT_FOUND (404), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Brand ID (messaging-backend UUID, as returned by msg_list_brands / msg_create_brand) |
No output schema declared.
No examples provided.
msg_elect_cnp Elect connectivity partner (CNP) ~146
Elect a Connectivity Partner / DCA for one of your campaigns (required before carriers will pass traffic; see msg_list_dcas for available partners). The body is a free-form object passed through to the messaging backend. Check election/sharing progress with msg_get_sharing_status. Errors: INVALID_PAYLOAD (400), NOT_FOUND (404), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | — | Free-form CNP election payload passed through to the messaging backend, e.g. {"cnp_id": "SYNIVERSE"} |
| id | string | yes | Campaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign) |
No output schema declared.
No examples provided.
msg_get Get a message ~63
Get a single SMS/MMS message by its WARP message UUID, including delivery status. Use after msg_send or msg_list to check one message's details. Errors: INVALID_ID (400), NOT_FOUND (404).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | WARP message UUID |
No output schema declared.
No examples provided.
msg_get_brand Get 10DLC brand ~105
Get one of your 10DLC brands by its messaging-backend UUID (snake_case TCR brand object, including identity status and trust score). For brands not registered in this account use msg_lookup_brand with the TCR brand ID instead. Errors: NOT_FOUND (404, includes cross-tenant access), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Brand ID (messaging-backend UUID, as returned by msg_list_brands / msg_create_brand) |
No output schema declared.
No examples provided.
msg_get_campaign Get 10DLC campaign ~101
Get one of your 10DLC campaigns by its messaging-backend UUID (snake_case TCR campaign object, including registration status). For campaigns not registered in this account use msg_lookup_campaign with the TCR campaign ID. Errors: NOT_FOUND (404, includes cross-tenant access), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Campaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign) |
No output schema declared.
No examples provided.
msg_get_mno_status Get campaign MNO status ~100
Get per-mobile-carrier (MNO) registration status for one of your campaigns — shows whether AT&T, T-Mobile, Verizon, etc. have approved it. Use after msg_create_campaign or msg_resubmit_campaign to track carrier approval. Errors: NOT_FOUND (404), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Campaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign) |
No output schema declared.
No examples provided.
msg_get_sharing_status Get campaign sharing status ~104
Get the connectivity-partner (CNP) sharing status for one of your campaigns — whether the campaign has been shared with and accepted by the elected CNP/DCA. Use after msg_elect_cnp; if stuck, try msg_nudge_cnp. Errors: NOT_FOUND (404), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Campaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign) |
No output schema declared.
No examples provided.
msg_get_stats Get message statistics ~62
Get aggregate message counts for your account: overall totals (total, inbound, outbound, delivered, failed) plus a per-campaign breakdown. Use for a quick health check of messaging volume and delivery rates. Errors: NO_ACTIVE_CUSTOMER/UNAUTHORIZED (401).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
msg_get_throughput_estimate Get throughput estimate ~110
Estimate messaging throughput (messages/sec, daily cap) and get a recommendation for a brand given its trust score and vetting status. Use after msg_get_brand (which includes the trust score) to understand sending capacity and whether external vetting would help. Errors: MISSING_PARAM/INVALID_PARAM (400).
| Name | Type | Req | Description |
|---|---|---|---|
| trust_score | integer | yes | Brand trust score, 0-100 (from the TCR brand object) |
| vetted | boolean | — | Whether the brand is externally vetted |
No output schema declared.
No examples provided.
msg_get_use_case_requirements Get use case requirements ~91
Get the submission requirements for a specific 10DLC campaign use case: required sample-message count, opt-in rules, approval difficulty, and notes. Use before msg_create_campaign to build a compliant submission. Errors: MISSING_PARAM/INVALID_USE_CASE (400).
| Name | Type | Req | Description |
|---|---|---|---|
| use_case | string | yes | Use case code from msg_list_use_cases, e.g. MARKETING, 2FA |
No output schema declared.
No examples provided.
msg_link_brand Link existing TCR brand ~92
Link a brand that already exists at TCR (registered elsewhere) into this account, instead of creating a new one with msg_create_brand. Use msg_lookup_brand first to verify the TCR brand ID. Errors: INVALID_PAYLOAD (400), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| tcr_brand_id | string | yes | TCR brand ID to link into this account, e.g. "BABC123" |
No output schema declared.
No examples provided.
msg_link_campaign Link existing TCR campaign ~92
Link a campaign that already exists at TCR (registered elsewhere) into this account, instead of creating a new one with msg_create_campaign. Use msg_lookup_campaign first to verify the TCR campaign ID. Errors: INVALID_PAYLOAD (400), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| tcr_campaign_id | string | yes | TCR campaign ID to link into this account, e.g. "CABC123" |
No output schema declared.
No examples provided.
msg_list List messages ~139
List your SMS/MMS messages (inbound and outbound), most recent first, optionally filtered by direction or delivery status. Use to review message history or check recent delivery outcomes; for a single message use msg_get, for aggregate counts use msg_get_stats. Errors: NO_ACTIVE_CUSTOMER/UNAUTHORIZED (401).
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | — | Filter by message direction |
| page | integer | — | Page number, 1-based (default 1) |
| per_page | integer | — | Page size (default 20, max 100) |
| status | string | — | Filter by delivery status, e.g. queued, sent, delivered, failed |
No output schema declared.
No examples provided.
msg_list_brands List 10DLC brands ~95
List your registered 10DLC brands (snake_case TCR brand objects). A brand is step 1 of the 10DLC flow (create brand → create campaign → assign numbers); use this to find an existing brand before creating campaigns.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | — | Page number, 1-based (default 1) |
| per_page | integer | — | Page size (default 20, max 100) |
No output schema declared.
No examples provided.
msg_list_campaign_numbers List campaign numbers ~125
List the telephone numbers attached to one of your 10DLC campaigns. Use to verify which numbers can send under a campaign; for account-wide messaging status of every DID use msg_list_numbers. Errors: NOT_FOUND (404), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Campaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign) |
| page | integer | — | Page number, 1-based (default 1) |
| per_page | integer | — | Page size (default 50, max 500) |
No output schema declared.
No examples provided.
msg_list_campaigns List 10DLC campaigns ~112
List your 10DLC campaigns (snake_case TCR campaign objects), optionally filtered by parent brand. A number must be attached to an approved campaign (msg_assign_numbers) before msg_send will accept it as a `from` number.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Filter by parent brand ID (messaging-backend UUID) |
| page | integer | — | Page number, 1-based (default 1) |
| per_page | integer | — | Page size (default 20, max 100) |
No output schema declared.
No examples provided.
msg_list_carriers List mobile carriers (MNOs) ~49
List the mobile network operators (MNOs) relevant to 10DLC registration (AT&T, T-Mobile, Verizon, etc.). Reference data for interpreting msg_get_mno_status results.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
msg_list_dcas List connectivity partners (DCAs/CNPs) ~54
List the Direct Connect Aggregators / connectivity partners (CNPs) that WARP elects against (only the common ones, not the full upstream list). Use before msg_elect_cnp to pick a partner.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
msg_list_entity_types List brand entity types ~41
List the valid 10DLC brand entity types (e.g. PRIVATE_PROFIT, NON_PROFIT). Reference data — check before msg_create_brand.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
msg_list_numbers List messaging-enabled numbers ~79
List every active DID you own joined to its messaging association: attached campaign/brand, messaging status, MMS enablement, and whether a per-TN inbound webhook is configured (has_webhook). Use to check which numbers are ready to send with msg_send or still need msg_assign_numbers. Errors: NO_ACTIVE_CUSTOMER/UNAUTHORIZED (401).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
msg_list_use_cases List campaign use cases ~51
List the valid 10DLC campaign use cases (e.g. MARKETING, 2FA). Reference data — check before msg_create_campaign, then fetch details with msg_get_use_case_requirements.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
msg_list_verticals List industry verticals ~35
List the valid 10DLC brand industry verticals. Reference data — check before msg_create_brand or msg_update_brand.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
msg_lookup_brand Look up TCR brand ~80
Read brand details directly from TCR by TCR brand ID, without requiring the brand to be registered in this account. Use before msg_link_brand to verify a brand exists. Errors: NOT_FOUND (404), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| tcr_brand_id | string | yes | TCR brand ID, e.g. "BABC123" |
No output schema declared.
No examples provided.
msg_lookup_campaign Look up TCR campaign ~80
Read campaign details directly from TCR by TCR campaign ID, without requiring the campaign to be registered in this account. Use before msg_link_campaign to verify a campaign exists. Errors: NOT_FOUND (404), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| tcr_campaign_id | string | yes | TCR campaign ID, e.g. "CABC123" |
No output schema declared.
No examples provided.
msg_nudge_cnp Nudge connectivity partner ~93
Prompt the elected Connectivity Partner to re-review a campaign that is stuck in review. Use when msg_get_sharing_status shows a pending CNP review for too long. Returns 202 Accepted with no body. Errors: NOT_FOUND (404), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Campaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign) |
No output schema declared.
No examples provided.
msg_remove_numbers Detach numbers from campaign ~149
Detach telephone numbers from one of your 10DLC campaigns — those numbers can no longer send SMS until re-attached to an approved campaign. Returns per-TN removed/failed lists (failure reasons: not_found, not_owned, lookup_error, write_error); the response is NOT wrapped in the standard envelope. Errors: INVALID_PAYLOAD (400), NOT_FOUND (404, campaign not owned), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Campaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign) |
| phone_numbers | array | yes | Telephone numbers to detach, NANP format, e.g. ["13039813633"] |
No output schema declared.
No examples provided.
msg_resubmit_campaign Resubmit 10DLC campaign ~87
Resubmit a 10DLC campaign for carrier review, typically after fixing rejection reasons with msg_update_campaign. Check current per-carrier status with msg_get_mno_status first. Errors: NOT_FOUND (404), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Campaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign) |
No output schema declared.
No examples provided.
msg_send Send an SMS message ~315
SENDS A REAL SMS TEXT MESSAGE to a real phone number — the recipient's device will receive it immediately; there is no test/sandbox mode, so confirm the destination and body before calling. The `from` number must be assigned to your account AND enrolled in an approved 10DLC campaign (register via msg_create_brand → msg_create_campaign → msg_assign_numbers), otherwise the request is rejected. Errors: INVALID_PAYLOAD/MISSING_PARAM/INVALID_TO (400), NO_ACTIVE_CUSTOMER/UNAUTHORIZED (401), FROM_* rejections for unenrolled numbers.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Message text, e.g. "Your verification code is 123456". Encoding (GSM-7 vs UCS-2) and segment count are computed automatically. |
| from | string | yes | Sending telephone number in NANP format, e.g. "13039813633". Must be assigned to your account and enrolled in an approved 10DLC campaign (see msg_list_numbers). |
| idempotency_key | string | — | Client-supplied Idempotency-Key: retrying with the same key returns the original message instead of sending a duplicate. Strongly recommended. |
| status_callback | string | — | Optional webhook URL that receives message-status callbacks (queued → sent → delivered/failed), e.g. "https://example.com/webhooks/sms" |
| to | string | yes | Destination telephone number in E.164 / NANP format, e.g. "13125551212". A real device receives the message. |
No output schema declared.
No examples provided.
msg_update_brand Update 10DLC brand ~583
Full replace (PUT) of one of your 10DLC brands — supply the complete brand object, not just changed fields. Use to correct brand identity details, which may trigger TCR re-verification. Errors: INVALID_PAYLOAD (400), NOT_FOUND (404), TNIQ_ERROR (502).
| Name | Type | Req | Description |
|---|---|---|---|
| alt_business_id | string | — | Alternate business identifier, e.g. DUNS number |
| alt_business_id_type | string | — | Type of the alternate business ID, e.g. DUNS, LEI, GIIN |
| city | string | — | City, e.g. "Denver" |
| company_name | string | — | Legal company name as registered, e.g. "Acme Coffee LLC". Required for non-SOLE_PROPRIETOR entity types. |
| country | string | — | Country as 2-letter ISO code, e.g. "US" |
| display_name | string | — | Brand display/marketing name, e.g. "Acme Coffee" |
| ein | string | — | Tax ID / EIN, e.g. "12-3456789" (US). Required for company registrations; improves trust score. |
| ein_issuing_country | string | — | EIN issuing country as 2-letter ISO code, e.g. "US" |
| string | — | Brand contact email address | |
| entity_type | string | — | Brand entity type (see msg_list_entity_types for the valid list), e.g. PRIVATE_PROFIT |
| first_name | string | — | Contact first name (required for SOLE_PROPRIETOR) |
| id | string | yes | Brand ID (messaging-backend UUID, as returned by msg_list_brands / msg_create_brand) |
| last_name | string | — | Contact last name (required for SOLE_PROPRIETOR) |
| mobile_phone | string | — | Mobile phone in E.164 format (used for SOLE_PROPRIETOR OTP verification) |
| phone | string | — | Support/contact phone in E.164 format, e.g. "+13035551212" |
| postal_code | string | — | Postal/ZIP code, e.g. "80202" |
| reference_id | string | — | Your own free-form reference ID for this brand |
| state | string | — | State/region code, e.g. "CO" |
| stock_exchange | string | — | Stock exchange, e.g. NASDAQ, NYSE (PUBLIC_PROFIT brands only) |
| stock_symbol | string | — | Stock ticker symbol (PUBLIC_PROFIT brands only) |
| street | string | — | Street address, e.g. "123 Main St" |
| vertical | string | — | Industry vertical code (see msg_list_verticals for the valid list), e.g. RETAIL |
| website | string | — | Brand website URL, e.g. "https://acme.example.com" |
No output schema declared.
No examples provided.