Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

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

+28 this week 79 Trust /100
Trust breakdown (6 categories)

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
Install

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

# add to Claude Code
claude mcp add ringer-warp -- npx -y warp-mcp
# add to Codex CLI
codex mcp add ringer-warp -- npx -y warp-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ringer-warp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "warp-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add ringer-warp --command npx --arg -y --arg warp-mcp
# ~/.hermes/config.yaml
mcp_servers:
  ringer-warp:
    command: "npx"
    args: ["-y", "warp-mcp"]
// mcp.json
{
  "mcpServers": {
    "ringer-warp": {
      "command": "npx",
      "args": [
        "-y",
        "warp-mcp"
      ]
    }
  }
}
Changelog

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.

Diagnostics

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.

MCP tools — 135 exposed · ~17,617 tokens

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.

Tool Tokens
acct_get_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 ~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 ~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 ~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 ~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 ~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.

NameTypeReqDescription
invoice_idstringyesInvoice id (from bill_list_invoices)

No output schema declared.

No examples provided.

bill_get_invoice_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.

NameTypeReqDescription
invoice_idstringyesInvoice id (from bill_list_invoices)

No output schema declared.

No examples provided.

bill_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 ~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'.

NameTypeReqDescription
limitintegerMax rows to return (1-500, default 100)

No output schema declared.

No examples provided.

cdr_export_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.

NameTypeReqDescription
anistringFilter by ANI (calling number)
directionstringFilter by call direction
dispositionstringFilter by call disposition (e.g. ANSWERED, NO ANSWER, BUSY, FAILED)
dnistringFilter by DNI (called number)
end_datestringEnd date (YYYY-MM-DD, inclusive)
start_datestringStart date (YYYY-MM-DD)
tz_offset_minutesintegerOperator 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 ~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 ~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.

NameTypeReqDescription
anistringFilter by ANI (calling number)
directionstringFilter by call direction
dispositionstringFilter by call disposition (e.g. ANSWERED, NO ANSWER, BUSY, FAILED)
dnistringFilter by DNI (called number)
end_datestringEnd date (YYYY-MM-DD, inclusive)
pageintegerPage (1-based, default 1)
per_pageintegerPage size (1-500, default 50)
start_datestringStart date (YYYY-MM-DD)
tz_offset_minutesintegerOperator 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 ~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.

NameTypeReqDescription
end_datestringEnd date (YYYY-MM-DD, inclusive)
start_datestringStart date (YYYY-MM-DD)
tz_offset_minutesintegerOperator 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 ~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.

NameTypeReqDescription
end_datestringEnd date (YYYY-MM-DD, inclusive)
granularitystringBucket size (default day)
start_datestringStart date (YYYY-MM-DD)
tz_offset_minutesintegerOperator 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 ~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.

NameTypeReqDescription
customer_idstringyesYour customer UUID (shown in the WARP portal under Settings)
key_idstringyesAPI key UUID

No output schema declared.

No examples provided.

key_get_audit ~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.

NameTypeReqDescription
customer_idstringyesYour customer UUID (shown in the WARP portal under Settings)
key_idstringyesAPI key UUID

No output schema declared.

No examples provided.

key_get_audit_all ~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.

NameTypeReqDescription
customer_idstringyesYour customer UUID (shown in the WARP portal under Settings)

No output schema declared.

No examples provided.

key_list ~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.

NameTypeReqDescription
customer_idstringyesYour customer UUID (shown in the WARP portal under Settings)
include_revokedbooleanInclude revoked keys (default false)

No output schema declared.

No examples provided.

msg_assign_numbers ~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).

NameTypeReqDescription
idstringyesCampaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign)
phone_numbersarrayyesTelephone numbers to attach, NANP format, e.g. ["13039813633"]

No output schema declared.

No examples provided.

msg_create_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).

NameTypeReqDescription
alt_business_idstringAlternate business identifier, e.g. DUNS number
alt_business_id_typestringType of the alternate business ID, e.g. DUNS, LEI, GIIN
citystringCity, e.g. "Denver"
company_namestringLegal company name as registered, e.g. "Acme Coffee LLC". Required for non-SOLE_PROPRIETOR entity types.
countrystringCountry as 2-letter ISO code, e.g. "US"
display_namestringBrand display/marketing name, e.g. "Acme Coffee"
einstringTax ID / EIN, e.g. "12-3456789" (US). Required for company registrations; improves trust score.
ein_issuing_countrystringEIN issuing country as 2-letter ISO code, e.g. "US"
emailstringBrand contact email address
entity_typestringBrand entity type (see msg_list_entity_types for the valid list), e.g. PRIVATE_PROFIT
first_namestringContact first name (required for SOLE_PROPRIETOR)
last_namestringContact last name (required for SOLE_PROPRIETOR)
mobile_phonestringMobile phone in E.164 format (used for SOLE_PROPRIETOR OTP verification)
phonestringSupport/contact phone in E.164 format, e.g. "+13035551212"
postal_codestringPostal/ZIP code, e.g. "80202"
reference_idstringYour own free-form reference ID for this brand
statestringState/region code, e.g. "CO"
stock_exchangestringStock exchange, e.g. NASDAQ, NYSE (PUBLIC_PROFIT brands only)
stock_symbolstringStock ticker symbol (PUBLIC_PROFIT brands only)
streetstringStreet address, e.g. "123 Main St"
verticalstringIndustry vertical code (see msg_list_verticals for the valid list), e.g. RETAIL
websitestringBrand website URL, e.g. "https://acme.example.com"

No output schema declared.

No examples provided.

msg_create_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).

NameTypeReqDescription
age_gatedbooleanTrue if content is age-gated (alcohol, gambling, etc.)
auto_renewalbooleanAuto-renew the campaign at TCR each billing cycle
brand_idstringParent brand ID (messaging-backend UUID from msg_list_brands). Required when creating a campaign.
descriptionstringWhat this campaign sends and to whom (reviewed by carriers)
direct_lendingbooleanTrue if content relates to direct lending or loan arrangements
embedded_linkbooleanTrue if messages may contain URLs/links
embedded_phonebooleanTrue if messages may contain phone numbers
help_keywordsstringComma-separated help keywords, e.g. "HELP,INFO"
help_messagestringReply sent when a subscriber texts a help keyword
message_flowstringHow subscribers opt in to receive messages (consent flow description; heavily weighted in carrier review)
number_poolbooleanTrue if the campaign uses 50+ sending numbers (number pooling)
optin_keywordsstringComma-separated opt-in keywords, e.g. "START,SUBSCRIBE"
optin_messagestringConfirmation message sent after a subscriber opts in
optout_keywordsstringComma-separated opt-out keywords, e.g. "STOP,UNSUBSCRIBE"
optout_messagestringConfirmation message sent after a subscriber opts out
reference_idstringYour own free-form reference ID for this campaign
sample1stringSample message 1 (representative outbound text)
sample2stringSample message 2
sample3stringSample message 3
sample4stringSample message 4
sample5stringSample message 5
sub_usecasesarraySub-use-case codes for MIXED/LOW_VOLUME campaigns
subscriber_helpbooleanTrue if subscribers can request help via keyword (HELP handling)
subscriber_optinbooleanTrue if subscribers can opt in via keyword
subscriber_optoutbooleanTrue if subscribers can opt out via keyword (STOP handling)
terms_and_conditionsbooleanAffirm the campaign complies with carrier terms and conditions
usecasestringCampaign 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 ~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).

NameTypeReqDescription
idstringyesBrand ID (messaging-backend UUID, as returned by msg_list_brands / msg_create_brand)

No output schema declared.

No examples provided.

msg_elect_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).

NameTypeReqDescription
bodyobjectFree-form CNP election payload passed through to the messaging backend, e.g. {"cnp_id": "SYNIVERSE"}
idstringyesCampaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign)

No output schema declared.

No examples provided.

msg_get ~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).

NameTypeReqDescription
idstringyesWARP message UUID

No output schema declared.

No examples provided.

msg_get_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).

NameTypeReqDescription
idstringyesBrand ID (messaging-backend UUID, as returned by msg_list_brands / msg_create_brand)

No output schema declared.

No examples provided.

msg_get_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).

NameTypeReqDescription
idstringyesCampaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign)

No output schema declared.

No examples provided.

msg_get_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).

NameTypeReqDescription
idstringyesCampaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign)

No output schema declared.

No examples provided.

msg_get_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).

NameTypeReqDescription
idstringyesCampaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign)

No output schema declared.

No examples provided.

msg_get_stats ~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 ~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).

NameTypeReqDescription
trust_scoreintegeryesBrand trust score, 0-100 (from the TCR brand object)
vettedbooleanWhether the brand is externally vetted

No output schema declared.

No examples provided.

msg_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).

NameTypeReqDescription
use_casestringyesUse case code from msg_list_use_cases, e.g. MARKETING, 2FA

No output schema declared.

No examples provided.

msg_link_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).

NameTypeReqDescription
tcr_brand_idstringyesTCR brand ID to link into this account, e.g. "BABC123"

No output schema declared.

No examples provided.

msg_link_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).

NameTypeReqDescription
tcr_campaign_idstringyesTCR campaign ID to link into this account, e.g. "CABC123"

No output schema declared.

No examples provided.

msg_list ~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).

NameTypeReqDescription
directionstringFilter by message direction
pageintegerPage number, 1-based (default 1)
per_pageintegerPage size (default 20, max 100)
statusstringFilter by delivery status, e.g. queued, sent, delivered, failed

No output schema declared.

No examples provided.

msg_list_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.

NameTypeReqDescription
pageintegerPage number, 1-based (default 1)
per_pageintegerPage size (default 20, max 100)

No output schema declared.

No examples provided.

msg_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).

NameTypeReqDescription
idstringyesCampaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign)
pageintegerPage number, 1-based (default 1)
per_pageintegerPage size (default 50, max 500)

No output schema declared.

No examples provided.

msg_list_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.

NameTypeReqDescription
brand_idstringFilter by parent brand ID (messaging-backend UUID)
pageintegerPage number, 1-based (default 1)
per_pageintegerPage size (default 20, max 100)

No output schema declared.

No examples provided.

msg_list_carriers ~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 ~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 ~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 ~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 ~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 ~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 ~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).

NameTypeReqDescription
tcr_brand_idstringyesTCR brand ID, e.g. "BABC123"

No output schema declared.

No examples provided.

msg_lookup_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).

NameTypeReqDescription
tcr_campaign_idstringyesTCR campaign ID, e.g. "CABC123"

No output schema declared.

No examples provided.

msg_nudge_cnp ~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).

NameTypeReqDescription
idstringyesCampaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign)

No output schema declared.

No examples provided.

msg_remove_numbers ~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).

NameTypeReqDescription
idstringyesCampaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign)
phone_numbersarrayyesTelephone numbers to detach, NANP format, e.g. ["13039813633"]

No output schema declared.

No examples provided.

msg_resubmit_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).

NameTypeReqDescription
idstringyesCampaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign)

No output schema declared.

No examples provided.

msg_send ~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.

NameTypeReqDescription
bodystringyesMessage text, e.g. "Your verification code is 123456". Encoding (GSM-7 vs UCS-2) and segment count are computed automatically.
fromstringyesSending 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_keystringClient-supplied Idempotency-Key: retrying with the same key returns the original message instead of sending a duplicate. Strongly recommended.
status_callbackstringOptional webhook URL that receives message-status callbacks (queued → sent → delivered/failed), e.g. "https://example.com/webhooks/sms"
tostringyesDestination 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 ~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).

NameTypeReqDescription
alt_business_idstringAlternate business identifier, e.g. DUNS number
alt_business_id_typestringType of the alternate business ID, e.g. DUNS, LEI, GIIN
citystringCity, e.g. "Denver"
company_namestringLegal company name as registered, e.g. "Acme Coffee LLC". Required for non-SOLE_PROPRIETOR entity types.
countrystringCountry as 2-letter ISO code, e.g. "US"
display_namestringBrand display/marketing name, e.g. "Acme Coffee"
einstringTax ID / EIN, e.g. "12-3456789" (US). Required for company registrations; improves trust score.
ein_issuing_countrystringEIN issuing country as 2-letter ISO code, e.g. "US"
emailstringBrand contact email address
entity_typestringBrand entity type (see msg_list_entity_types for the valid list), e.g. PRIVATE_PROFIT
first_namestringContact first name (required for SOLE_PROPRIETOR)
idstringyesBrand ID (messaging-backend UUID, as returned by msg_list_brands / msg_create_brand)
last_namestringContact last name (required for SOLE_PROPRIETOR)
mobile_phonestringMobile phone in E.164 format (used for SOLE_PROPRIETOR OTP verification)
phonestringSupport/contact phone in E.164 format, e.g. "+13035551212"
postal_codestringPostal/ZIP code, e.g. "80202"
reference_idstringYour own free-form reference ID for this brand
statestringState/region code, e.g. "CO"
stock_exchangestringStock exchange, e.g. NASDAQ, NYSE (PUBLIC_PROFIT brands only)
stock_symbolstringStock ticker symbol (PUBLIC_PROFIT brands only)
streetstringStreet address, e.g. "123 Main St"
verticalstringIndustry vertical code (see msg_list_verticals for the valid list), e.g. RETAIL
websitestringBrand website URL, e.g. "https://acme.example.com"

No output schema declared.

No examples provided.