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.
msg_update_campaign Update 10DLC campaign ~619
Update (PUT) one of your 10DLC campaigns — e.g. fix sample messages or opt-in flow after a carrier rejection, then resubmit with msg_resubmit_campaign. Errors: INVALID_PAYLOAD (400), NOT_FOUND (404), 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 |
| id | string | yes | Campaign ID (messaging-backend UUID, as returned by msg_list_campaigns / msg_create_campaign) |
| 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.
net_get_ingress_ips Get WARP SIP ingress servers ~54
Get the customer-facing WARP SIP edge servers (UDP/TCP/TLS hosts, IPs, ports) to point a trunk or PBX at. Use when configuring SIP endpoints or firewall rules toward WARP.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
net_get_vendor_ips Get WARP origination IPs ~52
Get the WARP egress/origination IPs you must allowlist in your firewall for symmetric SIP signaling. Use when inbound calls from WARP are being blocked or when setting up a new network edge.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
num_bulk_order Bulk order (assign) numbers ~298
Procure and assign up to 200 telephone numbers in one idempotent batch. THIS COSTS MONEY — each number incurs purchase and recurring charges, so confirm the list with the user first. Requires a UUID idempotency key (reused as procurement_request_id); reuse the same key to safely retry. Per-TN failures do not abort the batch. Find candidates with num_search; for a single number use num_order; to route many held numbers to a trunk use num_bulk_route. Errors: INVALID_REQUEST, MISSING_IDEMPOTENCY_KEY, INVALID_IDEMPOTENCY_KEY, TRUNK_UNOWNED (whole-request 403 on default_trunk_id).
| Name | Type | Req | Description |
|---|---|---|---|
| default_trunk_id | string | — | Trunk-group UUID to route all assigned numbers to (403 TRUNK_UNOWNED if not yours) |
| idempotency_key | string | yes | UUID idempotency key for the batch (sent as the Idempotency-Key header; reuse it to retry the same batch safely) |
| note | string | — | Free-text note recorded on the procurement request |
| per_tn_overrides | object | — | Map of TN -> per-number override object, overriding tn_metadata/default_trunk_id for that TN |
| tn_metadata | object | — | Metadata applied to every TN in the batch (e.g. friendly_name, description fields) |
| tns | array | yes | Telephone numbers to procure and assign (max 200) |
No output schema declared.
No examples provided.
num_bulk_route Bulk route numbers to a trunk ~118
Assign up to 200 HELD numbers you already own to a single voice trunk-group in one request (idempotent at the SQL level). Use after num_bulk_order to bring purchased numbers into service, or to re-home existing numbers. For per-number routing details use num_update_voice. Errors: INVALID_REQUEST, TRUNK_UNOWNED (whole-request 403).
| Name | Type | Req | Description |
|---|---|---|---|
| tns | array | yes | Held telephone numbers to route (max 200) |
| trunk_id | string | yes | Voice trunk-group UUID to route all listed numbers to |
No output schema declared.
No examples provided.
num_delete_sms_config Clear SMS configuration ~79
Remove the SMS usage row from a number you own, disabling SMS on it. To change SMS settings instead of removing them, use num_update_sms. Errors: TN_NOT_OWNED.
| Name | Type | Req | Description |
|---|---|---|---|
| tn | string | yes | Telephone number, 10 digits (e.g. "3035551234") or 11 digits with leading 1 |
No output schema declared.
No examples provided.
num_delete_voice_config Clear voice configuration ~88
Remove the voice usage row from a number you own, DISABLING voice routing on it (inbound calls will stop routing). To change routing instead of removing it, use num_update_voice. Errors: TN_NOT_OWNED.
| Name | Type | Req | Description |
|---|---|---|---|
| tn | string | yes | Telephone number, 10 digits (e.g. "3035551234") or 11 digits with leading 1 |
No output schema declared.
No examples provided.
num_get Get a number ~80
Get one telephone number you own, including its voice and SMS usage configuration. Use after num_list to inspect a specific TN before updating it with num_update_voice, num_update_sms, or num_update_metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| tn | string | yes | Telephone number, 10 digits (e.g. "3035551234") or 11 digits with leading 1 |
No output schema declared.
No examples provided.
num_get_port_out_pin Get port-out PIN status ~106
Check whether a port-out PIN is set on a number you own, and if verification attempts locked it out, when the lock expires (locked_until). The PIN itself is never returned. Set a PIN with num_set_port_out_pin; clear it with num_remove_port_out_pin. Errors: TN_NOT_OWNED.
| Name | Type | Req | Description |
|---|---|---|---|
| tn | string | yes | Telephone number, 10 digits (e.g. "3035551234") or 11 digits with leading 1 |
No output schema declared.
No examples provided.
num_list List your numbers ~197
List the telephone numbers you own, with each number's voice/SMS configuration state. Use to browse or audit your DID/TFN inventory; filter by status, type, search text, or configuration flags. To find NEW purchasable numbers use num_search instead; to inspect one owned number use num_get.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | — | Page number, 1-based (default 1) |
| search | string | — | Free-text search on TN digits or metadata |
| size | integer | — | Results per page (default 50) |
| sms_configured | boolean | — | Filter to numbers with (true) or without (false) SMS configuration |
| status | string | — | Filter by number status |
| type | string | — | Filter by number type: did (local) or tfn (toll-free) |
| voice_configured | boolean | — | Filter to numbers with (true) or without (false) voice configuration |
No output schema declared.
No examples provided.
num_order Order (assign) a number ~161
Procure a telephone number from upstream inventory and assign it to your account. THIS COSTS MONEY — ordering a number incurs purchase and recurring charges, so confirm the TN with the user first. Find candidates with num_search; after ordering, configure it with num_update_voice / num_update_sms. For up to 200 numbers at once use num_bulk_order. Errors: TN_ALREADY_ASSIGNED, TN_UNAVAILABLE, TNIQ_UPSTREAM_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | Free-text description to set on the new number |
| friendly_name | string | — | Human-friendly label to set on the new number |
| tn | string | yes | Telephone number, 10 digits (e.g. "3035551234") or 11 digits with leading 1 |
No output schema declared.
No examples provided.
num_release Release a number ~124
Release a telephone number you own back to inventory. IRREVERSIBLE from your account's perspective — the number leaves your inventory and may be picked up by others, so confirm with the user first. Errors: TN_NOT_OWNED, POI_LOCKED (number is a POI fallback ANI), TNIQ_UPSTREAM_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| reason | string | — | Free-text reason for releasing the number (for audit) |
| tn | string | yes | Telephone number, 10 digits (e.g. "3035551234") or 11 digits with leading 1 |
No output schema declared.
No examples provided.
num_remove_port_out_pin Clear port-out PIN ~105
Clear the port-out PIN on a number you own (idempotent), removing PIN protection against port-outs. Requires step-up MFA. Returns 204 No Content on success. Check state with num_get_port_out_pin; set a new PIN with num_set_port_out_pin. Errors: TN_NOT_OWNED.
| Name | Type | Req | Description |
|---|---|---|---|
| tn | string | yes | Telephone number, 10 digits (e.g. "3035551234") or 11 digits with leading 1 |
No output schema declared.
No examples provided.
num_search Search available numbers ~270
Search upstream inventory for PURCHASABLE telephone numbers by area code, rate center, locality, or digit pattern. Returns paginated candidates you do not yet own. Use this before ordering; then buy a candidate with num_order (or many with num_bulk_order). For numbers you already own use num_list.
| Name | Type | Req | Description |
|---|---|---|---|
| city | string | — | City name |
| last_4_prefix | string | — | Prefix the last 4 digits must start with |
| locality | string | — | Locality name |
| npa | string | — | Area code (NPA), 3 digits, e.g. "303" |
| nxx | string | — | Exchange (NXX), 3 digits, e.g. "629" |
| page | integer | — | Page number, 1-based (default 1) |
| pattern | string | — | Digit pattern to match within the number, e.g. "1234" |
| rate_center | string | — | LERG rate center name, e.g. "DENVER" |
| size | integer | — | Results per page (default 25) |
| state | string | — | 2-letter state code, e.g. "CO" |
| type | string | — | Number type: "did" (local, default) or "tfn" (toll-free) |
No output schema declared.
No examples provided.
num_set_port_out_pin Set port-out PIN ~136
Set the customer-chosen 4-10 digit port-out PIN on a number you own (hashed at rest; also resets the failed-attempt lock). Requires step-up MFA on the session. Check current state with num_get_port_out_pin; clear with num_remove_port_out_pin. Errors: INVALID_REQUEST, INVALID_PIN, TN_NOT_OWNED.
| Name | Type | Req | Description |
|---|---|---|---|
| pin | string | yes | Port-out PIN, 4-10 digits, e.g. "482913" |
| tn | string | yes | Telephone number, 10 digits (e.g. "3035551234") or 11 digits with leading 1 |
No output schema declared.
No examples provided.
num_update_metadata Update number metadata ~126
Update the friendly name and/or description on a number you own. Use to label numbers for humans; for routing/E911/CNAM use num_update_voice, for messaging use num_update_sms. Errors: INVALID_REQUEST, TN_NOT_OWNED.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | Longer free-text description of the number's purpose |
| friendly_name | string | — | Human-friendly label for the number, e.g. "Support line" |
| tn | string | yes | Telephone number, 10 digits (e.g. "3035551234") or 11 digits with leading 1 |
No output schema declared.
No examples provided.
num_update_sms Update SMS configuration ~179
Update the customer-owned SMS fields on a number you own: inbound webhook URL/secret, fallback URL, and MMS toggle. Requests containing tniq-owned fields are rejected. To remove SMS entirely use num_delete_sms_config. Errors: INVALID_REQUEST, TN_NOT_OWNED.
| Name | Type | Req | Description |
|---|---|---|---|
| fallback_inbound_url | string | — | Fallback URL used when the primary inbound webhook fails |
| inbound_webhook_secret | string | — | Shared secret used to sign inbound webhook deliveries |
| inbound_webhook_url | string | — | HTTPS URL that receives inbound SMS webhooks, e.g. "https://example.com/sms" |
| mms_enabled | boolean | — | Enable or disable MMS on this number |
| tn | string | yes | Telephone number, 10 digits (e.g. "3035551234") or 11 digits with leading 1 |
No output schema declared.
No examples provided.
num_update_voice Update voice configuration ~290
Set or update the voice routing, E911, and CNAM configuration on a number you own. Use after ordering a number (num_order) to bring it into voice service, or to change routing later. To disable voice entirely use num_delete_voice_config; to route many numbers to one trunk use num_bulk_route. Errors: INVALID_REQUEST, TN_NOT_OWNED.
| Name | Type | Req | Description |
|---|---|---|---|
| cnam_display_name | string | — | CNAM display name shown to called parties (typically max 15 chars) |
| cnam_enabled | boolean | — | Enable or disable outbound CNAM (caller name) on this number |
| e911_address_id | string | — | Validated E911 address record ID to associate with this number |
| e911_enabled | boolean | — | Enable or disable E911 emergency service on this number |
| tn | string | yes | Telephone number, 10 digits (e.g. "3035551234") or 11 digits with leading 1 |
| trunk_id | string | — | Voice trunk-group UUID to route inbound calls to |
| voice_destination | string | — | Primary inbound voice destination (e.g. SIP URI or endpoint) |
| voice_failover_destination | string | — | Failover destination used when the primary is unreachable |
| voice_routing_type | string | — | Routing type for inbound voice (e.g. "trunk" or a URI-based type per your account setup) |
No output schema declared.
No examples provided.
port_activate Activate ported numbers ~94
Activate numbers that have reached FOC (the final step of the port-in lifecycle). Gated on the project being activatable — check port_get_progress first. Requires step-up MFA. To have this happen automatically instead, use port_set_auto_activation. Errors: NOT_FOUND, CONFLICT (not activatable), TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_add_note Add a port-in note ~119
Add a note to the port request. visibility="internal" is operator-only (customers get FORBIDDEN); customers may only post "customer" notes. Read notes with port_list_notes. Errors: INVALID_PAYLOAD, FORBIDDEN, NOT_FOUND, INTERNAL_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Note text |
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
| visibility | string | — | Note visibility: "customer" (default; visible to the customer) or "internal" (operator-only) |
No output schema declared.
No examples provided.
port_add_tns Add TNs to a port-in request ~115
Normalise a free-form TN list and upload it to the draft port request's TNIQ project. Step 2 of the port-in lifecycle, after port_create_request and before port_set_group_details / port_validate_request. Errors: INVALID_PAYLOAD, VALIDATION_ERROR, NOT_FOUND, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
| tns | array | yes | Free-form list of 10-digit telephone numbers to add to the port request |
No output schema declared.
No examples provided.
port_auto_fix Auto-fix port-in errors ~134
Apply TNIQ auto-fixes to the project, optionally scoped to one error group (from port_get_error_groups) or a TN subset. After fixing, run port_revalidate_tns or port_resubmit_request as appropriate. Errors: NOT_FOUND, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| error_group_id | string | — | Error group ID (from port_get_error_groups) to scope the fix to |
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
| tns | array | — | Optional subset of 10-digit TNs to fix; omit to fix all affected TNs |
No output schema declared.
No examples provided.
port_cancel_request Cancel a port-in request ~78
Cancel a submitted port. Gated on the project being cancellable — a CONFLICT is returned otherwise. For unsubmitted drafts use port_delete_draft instead. Requires step-up MFA. Errors: NOT_FOUND, CONFLICT, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_create_request Create a port-in draft ~153
Create a draft port-in request (TNIQ project + WARP mirror row). This is step 1 of the port-in lifecycle: create draft → port_add_tns → port_set_group_details → port_validate_request → port_generate_loa → port_submit_request → track with port_get_progress → port_activate. Run port_preview first to check portability. Errors: NO_ACTIVE_CUSTOMER, INVALID_PAYLOAD, TNIQ_ERROR, INTERNAL_ERROR, GATEWAY_UNAVAILABLE.
| Name | Type | Req | Description |
|---|---|---|---|
| desired_due_date | string | — | Desired port due date (FOC date), ISO 8601 date, e.g. 2026-08-01 |
| name | string | — | Human-friendly name for the port request |
No output schema declared.
No examples provided.
port_delete_document Delete a port document ~93
Delete a document from the port project. Get document IDs from port_list_documents. Deleting a group's only current LOA will re-block port_submit_request for that group. Errors: NOT_FOUND, TNIQ_VALIDATION, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_id | string | yes | Document ID (from port_list_documents) |
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_delete_draft Delete a port-in draft ~90
Delete a pre-submission draft port request (TNIQ project + WARP mirror row). Only allowed in states with zero submitted TNs — after submission use port_cancel_request instead. Requires step-up MFA. Errors: NOT_FOUND, CONFLICT (already submitted), TNIQ_ERROR, INTERNAL_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_download_document Download a port document ~105
Download one port document's raw bytes (Content-Type mirrors the stored document). Get document IDs from port_list_documents. Note: binary content (e.g. PDF) is returned inline and may not be readable as text. Errors (JSON): NOT_FOUND, TNIQ_VALIDATION, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_id | string | yes | Document ID (from port_list_documents) |
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_execute_transfer Execute an on-net transfer ~135
Transfer on-net numbers between WARP tenants without an NPAC port. Each item authorizes with the current owner's port-out PIN; items succeed or fail INDEPENDENTLY within an HTTP 200 response — check per-TN results. Per-TN failure reasons: not_in_warp_inventory, already_yours, poi_locked, invalid_pin, pin_locked, lookup_failed, transfer_failed, invalid_tn. Preview eligibility first with port_preview_transfer. Requires step-up MFA. Errors: NO_ACTIVE_CUSTOMER, INVALID_PAYLOAD.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Numbers to transfer, each with the owning tenant's port-out PIN |
No output schema declared.
No examples provided.
port_generate_loa Generate a Letter of Authorization ~249
Render a WARP-branded LOA PDF for one off-net SPID group and upload it to the project, superseding prior LOAs for that group. Only valid BEFORE the port is submitted; every off-net group needs a current LOA before port_submit_request will succeed. Requires attestation=true plus all authorizing-party, losing-carrier, and signer fields. Requires step-up MFA. Alternatively upload an existing signed LOA with port_upload_document. Errors: INVALID_PAYLOAD (error.details.fields lists missing fields), INVALID_PARAM, CONFLICT (already submitted), TNIQ_ERROR, INTERNAL_ERROR, GATEWAY_UNAVAILABLE.
| Name | Type | Req | Description |
|---|---|---|---|
| attestation | boolean | yes | Must be true — attests the signer is authorized to port the numbers |
| authorizing_party | object | — | Authorizing party details for the LOA |
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
| losing_carrier | object | — | Losing-carrier account details for the LOA |
| signer | object | — | Signer details for the LOA |
| spid | string | yes | Losing-carrier SPID (from port_get_request's SPID groups) |
No output schema declared.
No examples provided.
port_get_error_groups Get port-in error groups ~88
Get the TNIQ validation/port error groups for the project. Use after port_validate_request or a rejected submission to see what's blocking the port, then resolve with port_auto_fix (pass an error_group_id) or port_set_group_details. Errors: NOT_FOUND, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_get_history Get port-in audit history ~72
Get the audit timeline for the port request (tenant-scoped, newest-first). Use to see who did what and when — submissions, cancels, document uploads, state changes. Errors: NOT_FOUND, INTERNAL_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_get_progress Get port-in progress ~87
Get the live TNIQ progress snapshot for the port project. Use to track a submitted port (per-TN states, FOC readiness) and to check whether it is activatable before port_activate. For aggregate counts use port_get_statistics. Errors: NOT_FOUND, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_get_request Get a port-in request ~107
Get one port-in request: the WARP mirror row, the live TNIQ project, and per-SPID grouped TN details. Also reconciles any ACTIVATED TNs into inventory (idempotent). Use this as the primary status view for a port; for the lighter progress snapshot use port_get_progress. Errors: NO_ACTIVE_CUSTOMER, INVALID_ID, NOT_FOUND, CONFLICT.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_get_statistics Get port-in statistics ~77
Get the live TNIQ statistics for the port project (also opportunistically refreshes the WARP snapshot). Use for aggregate TN state counts; for per-TN detail use port_get_progress. Errors: NOT_FOUND, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_list_documents List port documents ~117
List the port project's documents (LOAs, bills, CSRs, etc.), optionally filtered by doc_type or TN. signer_ip is present only for operator callers. Use to verify LOA coverage before port_submit_request. Errors: NOT_FOUND, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_type | string | — | Filter by document type: LOA | BILL | CSR | OTHER |
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
| tn | string | — | Filter by 10-digit telephone number |
No output schema declared.
No examples provided.
port_list_notes List port-in notes ~64
List the port request's notes. Operators also see internal notes; customers see only customer-visibility notes. Add notes with port_add_note. Errors: NOT_FOUND, INTERNAL_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_list_requests List port-in requests ~53
List the active customer's port-in requests, most-recent first. Use to find an existing port request's UUID before calling port_get_request or any other per-request tool. Errors: NO_ACTIVE_CUSTOMER, INTERNAL_ERROR.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
port_lookup_company_details Lookup company details by name and address ~150
Retrieve detailed company information from TinComply by company name and optional address. Used during the port-in flow for entity verification (e.g. before drafting an LOA). See also port_lookup_ein (by EIN) and port_verify_tin_name (TIN/name match). Errors: INVALID_REQUEST, COMPANY_NAME_REQUIRED, TINCOMPLY_ERROR, LOOKUP_FAILED.
| Name | Type | Req | Description |
|---|---|---|---|
| city | string | — | City |
| company_name | string | yes | Legal company name to look up |
| state | string | — | State, 2-letter code, e.g. CO |
| street | string | — | Street address |
| zip_code | string | — | ZIP code, e.g. 80202 |
No output schema declared.
No examples provided.
port_lookup_ein Lookup company by EIN ~100
Retrieve company information from TinComply by EIN/Tax ID. Used during the port-in flow for entity verification. Validate the format first with port_validate_ein_format if unsure. Errors: EIN_REQUIRED, INVALID_EIN, TINCOMPLY_ERROR, LOOKUP_FAILED.
| Name | Type | Req | Description |
|---|---|---|---|
| ein | string | yes | EIN/Tax ID, 9 digits with or without hyphen, e.g. 12-3456789 or 123456789 |
No output schema declared.
No examples provided.
port_preview Preview a port-in ~133
Run an instant Telique-backed portability preview for a free-form list of TNs, grouped by current losing-carrier SPID. No project is created — use this BEFORE port_create_request to see which carriers hold the numbers and whether they are portable. For numbers already on-net (WARP-to-WARP), use port_preview_transfer instead. Errors: NO_ACTIVE_CUSTOMER, INVALID_PAYLOAD, VALIDATION_ERROR, GATEWAY_UNAVAILABLE.
| Name | Type | Req | Description |
|---|---|---|---|
| tns | array | yes | Free-form list of 10-digit telephone numbers to check for portability, e.g. ["3035551234", "7205556789"] |
No output schema declared.
No examples provided.
port_preview_transfer Preview an on-net transfer ~131
For a free-form TN list, report which numbers are on-net (an active WARP assignment) and eligible for on-net transfer between WARP tenants (no NPAC port needed). The owning customer's BAN is masked. Per-TN ineligibility reasons: not_in_warp_inventory, already_yours, poi_locked, lookup_failed. Use before port_execute_transfer; for off-net numbers use port_preview instead. Errors: NO_ACTIVE_CUSTOMER, INVALID_PAYLOAD, VALIDATION_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| tns | array | yes | Free-form list of 10-digit telephone numbers to check for on-net transfer eligibility |
No output schema declared.
No examples provided.
port_resubmit_request Resubmit a port-in request ~86
Resubmit a port that is in an error/rejection/exception state (e.g. after fixing issues with port_auto_fix or port_set_group_details). Only valid from those states — a CONFLICT is returned otherwise. Errors: NOT_FOUND, CONFLICT, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_revalidate_tns Revalidate selected port-in TNs ~109
Send a REVALIDATE bulk action for selected (or all) TNs in the port request. Use after fixing individual TN errors when you don't need the full re-validation of port_validate_request. Errors: NOT_FOUND, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
| tns | array | — | Optional subset of 10-digit TNs to revalidate; omit to revalidate all TNs in the request |
No output schema declared.
No examples provided.
port_set_auto_activation Set auto-activation policy ~166
Update the port project's auto-activation mode so numbers activate without a manual port_activate call. Modes: DISABLED (manual only), ASAP (activate as soon as FOC is reached), SCHEDULED (activate at scheduled_at, which is required for that mode). Errors: INVALID_PAYLOAD, NOT_FOUND, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
| mode | string | yes | Auto-activation mode: DISABLED | ASAP | SCHEDULED (SCHEDULED requires scheduled_at) |
| scheduled_at | string | — | ISO 8601 timestamp for SCHEDULED mode, e.g. 2026-08-01T14:00:00Z; required when mode=SCHEDULED |
No output schema declared.
No examples provided.
port_set_group_details Apply carrier-group details ~222
Apply losing-carrier account details (account number, BTN, PIN, service address, names) to EVERY TN in one SPID group. Group membership is recomputed from live TNIQ details, not client-supplied. Get SPID groups from port_get_request; run before port_validate_request. Errors: INVALID_PAYLOAD, INVALID_PARAM, NOT_FOUND, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| account_number | string | — | Account number with the losing carrier |
| btn | string | — | Billing telephone number (10-digit) on the losing account |
| business_name | string | — | Business name on the losing account |
| end_user_name | string | — | End-user name on the losing account |
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
| pin | string | — | Account PIN/passcode with the losing carrier |
| service_address | string | — | Service address on file with the losing carrier |
| spid | string | yes | Losing-carrier SPID (from port_get_request's SPID groups) |
No output schema declared.
No examples provided.
port_submit_request Submit a port-in request ~170
Submit the port to NPAC. Gated on (1) every off-net SPID group having a current LOA (generate one with port_generate_loa or upload with port_upload_document) and (2) the project being submittable (validate first with port_validate_request). Requires step-up MFA. On the LOA gate a 409 CONFLICT is returned whose error.details has reason="loa_required" and groups=[{spid, tn_count, reason: "missing"|"stale"}]; other 409s carry error.details.reason from the submit blocker. After submitting, track with port_get_progress and port_get_statistics. Errors: NOT_FOUND, CONFLICT, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_supplement_due_date Supplement the due date ~142
Change the desired due date of a submitted port (SUP_DDD), optionally for a subset of TNs. Only valid before activation — a CONFLICT is returned otherwise. Errors: INVALID_PAYLOAD, NOT_FOUND, CONFLICT, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
| new_ddd | string | yes | New desired due date (FOC date), ISO 8601 date, e.g. 2026-08-15 |
| tns | array | — | Optional subset of 10-digit TNs to supplement; omit to apply to all TNs |
No output schema declared.
No examples provided.
port_upload_document Upload a port document ~150
Upload a supporting document (LOA, bill copy, CSR, or other; max 25MB) to the port's TNIQ project from a local file. Use for a customer-signed LOA or supporting evidence; to have WARP generate the LOA instead, use port_generate_loa. Errors: INVALID_PAYLOAD, NOT_FOUND, TNIQ_VALIDATION, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_type | string | yes | Document type: LOA | BILL | CSR | OTHER |
| file_path | string | yes | Absolute path to the local file to upload (max 25MB) |
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.
port_validate_ein_format Validate EIN format ~75
Check whether an EIN is well-formed (9 digits) WITHOUT calling the external TinComply API. Use as a cheap pre-check before port_lookup_ein or port_verify_tin_name. Errors: EIN_REQUIRED.
| Name | Type | Req | Description |
|---|---|---|---|
| ein | string | yes | EIN to validate, e.g. 12-3456789 |
No output schema declared.
No examples provided.
port_validate_request Validate a port-in request ~108
Trigger a TNIQ-side re-validation of ALL TNs in the port request. Run after adding TNs (port_add_tns) and applying carrier details (port_set_group_details), then inspect failures via port_get_error_groups and fix them with port_auto_fix. To revalidate only a subset of TNs use port_revalidate_tns. Errors: NOT_FOUND, TNIQ_ERROR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Port request UUID (from port_list_requests or port_create_request) |
No output schema declared.
No examples provided.