> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dncscrub.com/llms.txt
> Use this file to discover all available pages before exploring further.

# scrub_phone_numbers Tool

> Scrub phone numbers against DNC lists and get compliance status

The `scrub_phone_numbers` tool checks phone numbers against federal, state, and your internal DNC lists, returning compliance status and phone metadata.

## Parameters

<ParamField body="phoneNumbers" type="string[]" required>
  Phone numbers in 10-digit North American format. Supports single or batch requests.
</ParamField>

<ParamField body="loginId" type="string">
  API key. Only required if not provided via the `x-dncscrub-api-key` HTTP header.
</ParamField>

<ParamField body="campaignId" type="number">
  Campaign ID for usage tracking and campaign-specific settings.
</ParamField>

<ParamField body="projId" type="string">
  Project ID for usage tracking and project-specific settings.
</ParamField>

## Response

<ResponseField name="success" type="boolean">
  Whether the API call succeeded.
</ResponseField>

<ResponseField name="results" type="array">
  Array of scrub results, one per phone number.

  <Expandable title="result object">
    <ResponseField name="phone" type="string">
      The phone number checked.
    </ResponseField>

    <ResponseField name="resultCode" type="string">
      * `C` - Clean (OK to call)
      * `D` - Do Not Call
    </ResponseField>

    <ResponseField name="reason" type="string">
      Why the number is blocked (if `resultCode` is `D`). Examples: `National (USA)`, `State (California)`, `Litigator`, `Internal DNC`.
    </ResponseField>

    <ResponseField name="region" type="string">
      State/province abbreviation (e.g., `CA`, `NY`).
    </ResponseField>

    <ResponseField name="country" type="string">
      Country code (e.g., `US`, `CA`).
    </ResponseField>

    <ResponseField name="lineType" type="string">
      Phone line type: `Wireless`, `Landline`, `VoIP`, or `Unknown`.
    </ResponseField>

    <ResponseField name="isWireless" type="boolean">
      `true` if the number is wireless or VoIP.
    </ResponseField>

    <ResponseField name="timezone" type="string">
      Timezone code for the phone number's location.
    </ResponseField>

    <ResponseField name="carrier" type="string">
      Carrier name when available.
    </ResponseField>

    <ResponseField name="ebrType" type="string">
      EBR exemption type if one exists (`S`, `I`, or `P`).
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="errorCode" type="string">
  Machine-readable error code (when failed).
</ResponseField>

<ResponseField name="errorMessage" type="string">
  Human-readable error description (when failed).
</ResponseField>

## Result Codes

| Code | Meaning     | Action                                    |
| ---- | ----------- | ----------------------------------------- |
| `C`  | Clean       | OK to call (subject to time-of-day rules) |
| `D`  | Do Not Call | Do not contact this number                |

## Examples

<Tabs>
  <Tab title="Request">
    ```json theme={null}
    {
      "phoneNumbers": ["5039367187", "7075276405"]
    }
    ```
  </Tab>

  <Tab title="Response">
    ```json theme={null}
    {
      "success": true,
      "results": [
        {
          "phone": "5039367187",
          "resultCode": "D",
          "reason": "Litigator",
          "region": "OR",
          "country": "US",
          "lineType": "Wireless",
          "isWireless": true,
          "timezone": "America/Los_Angeles",
          "carrier": "Verizon Wireless"
        },
        {
          "phone": "7075276405",
          "resultCode": "D",
          "reason": "National (USA)",
          "region": "CA",
          "country": "US",
          "lineType": "Landline",
          "isWireless": false,
          "timezone": "America/Los_Angeles",
          "carrier": "AT&T California"
        }
      ]
    }
    ```
  </Tab>

  <Tab title="Clean Number">
    ```json theme={null}
    {
      "success": true,
      "results": [
        {
          "phone": "8005551234",
          "resultCode": "C",
          "reason": "",
          "region": "TX",
          "country": "US",
          "lineType": "Landline",
          "isWireless": false,
          "timezone": "America/Chicago",
          "carrier": "AT&T Texas"
        }
      ]
    }
    ```
  </Tab>
</Tabs>

## Usage Notes

* Batch multiple numbers in a single request for better performance
* Results include rich metadata (carrier, timezone, line type) useful for routing decisions
* The `isWireless` flag is critical for TCPA compliance—wireless numbers have additional consent requirements
* Use `campaignId` or `projId` to apply campaign-specific DNC settings
