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

# Enformion: Contact Enrich

> Find personal mobile phones for SMB owners with no LinkedIn or B2B presence, from first name, last name and city/state. Strip middle initials from last_name.

Find personal mobile phones for SMB owners with no LinkedIn or B2B presence, from first name, last name and city/state.

> [!NOTE]
>
> Tool ID: `enformion_contact_enrich`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'enformion_contact_enrich',
  {
    "first_name": "Jane",
    "last_name": "Doe",
    "city_state": "California"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute enformion_contact_enrich --input '{
  "first_name": "Jane",
  "last_name": "Doe",
  "city_state": "California"
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "person": {
    "name": {
      "firstName": "Jane",
      "middleName": "Example",
      "lastName": "Doe"
    },
    "age": "example",
    "addresses": [
      {
        "firstReportedDate": "2026-01-15T12:00:00Z",
        "lastReportedDate": "2026-01-15T12:00:00Z",
        "street": "example",
        "unit": "example",
        "city": "San Francisco",
        "state": "California",
        "zip": "example"
      }
    ],
    "phones": [
      {
        "number": "example",
        "type": "example",
        "isConnected": true,
        "firstReportedDate": "2026-01-15T12:00:00Z",
        "lastReportedDate": "2026-01-15T12:00:00Z"
      }
    ],
    "emails": [
      "jane.doe@example.com"
    ]
  },
  "message": "Example message",
  "identityScore": 123,
  "isError": true
}
```

Use `deepline describe enformion_contact_enrich --json` for the latest machine-readable contract.

## Input reference

Consumer skip-trace via EnformionGO. Finds personal mobile phones from name + city/state (optionally narrowed by a street address). Designed for SMB restaurant/retail owners with no B2B presence. Returns typed phones (mobile/landline) with isConnected flag and identityScore (0–100). Hit rate \~53% on named rows. Do NOT pass middle initials in last\_name.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.first_name` | `string` | Yes | — | Owner first name. Do not include middle name or initial. Minimum length: 1. |
| `payload.last_name` | `string` | Yes | — | Owner last name. The integration automatically strips middle initials and compound surname prefixes (e.g. 'De La Cruz' → 'Cruz') because EnformionGO returns zero results for multi-word last names. Minimum length: 1. |
| `payload.city_state` | `string` | Yes | — | City and state as "City, ST" (e.g. "Cleveland, OH"). Used as Address.addressLine2 in the EnformionGO request. Minimum length: 1. |
| `payload.address_line1` | `string` | No | — | Street address (e.g. "123 Q Street"). Used as Address.addressLine1 alongside city\_state. Narrows the match when you already know the resident's street, instead of a separate property lookup first. Minimum length: 1. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Consumer skip-trace via EnformionGO. Finds personal mobile phones from name + city/state (optionally narrowed by a street address). Designed for SMB restaurant/retail owners with no B2B presence. Returns typed phones (mobile/landline) with isConnected flag and identityScore (0–100). Hit rate ~53% on named rows. Do NOT pass middle initials in last_name.",
    "properties": {
      "first_name": {
        "type": "string",
        "description": "Owner first name. Do not include middle name or initial.",
        "minLength": 1
      },
      "last_name": {
        "type": "string",
        "description": "Owner last name. The integration automatically strips middle initials and compound surname prefixes (e.g. 'De La Cruz' → 'Cruz') because EnformionGO returns zero results for multi-word last names.",
        "minLength": 1
      },
      "city_state": {
        "type": "string",
        "description": "City and state as \"City, ST\" (e.g. \"Cleveland, OH\"). Used as Address.addressLine2 in the EnformionGO request.",
        "minLength": 1
      },
      "address_line1": {
        "type": "string",
        "description": "Street address (e.g. \"123 Q Street\"). Used as Address.addressLine1 alongside city_state. Narrows the match when you already know the resident's street, instead of a separate property lookup first.",
        "minLength": 1
      }
    },
    "required": [
      "first_name",
      "last_name",
      "city_state"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.person` | `object` | Yes | — | — |
| `result.person.name` | `object` | Yes | — | — |
| `result.person.name.firstName` | `string` | Yes | — | — |
| `result.person.name.middleName` | `string` | Yes | — | — |
| `result.person.name.lastName` | `string` | Yes | — | — |
| `result.person.age` | `string` | Yes | — | — |
| `result.person.addresses` | `array` | Yes | — | — |
| `result.person.addresses[].firstReportedDate` | `string` | Yes | — | — |
| `result.person.addresses[].lastReportedDate` | `string` | Yes | — | — |
| `result.person.addresses[].street` | `string` | Yes | — | — |
| `result.person.addresses[].unit` | `string` | Yes | — | — |
| `result.person.addresses[].city` | `string` | Yes | — | — |
| `result.person.addresses[].state` | `string` | Yes | — | — |
| `result.person.addresses[].zip` | `string` | Yes | — | — |
| `result.person.phones` | `array` | Yes | — | — |
| `result.person.phones[].number` | `string` | Yes | — | — |
| `result.person.phones[].type` | `string` | Yes | — | — |
| `result.person.phones[].isConnected` | `boolean` | Yes | — | — |
| `result.person.phones[].firstReportedDate` | `string` | Yes | — | — |
| `result.person.phones[].lastReportedDate` | `string` | Yes | — | — |
| `result.person.emails` | `array` | Yes | — | — |
| `result.message` | `string` | Yes | — | — |
| `result.identityScore` | `integer` | Yes | — | — |
| `result.isError` | `boolean` | Yes | — | — |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "properties": {
      "person": {
        "type": "object",
        "properties": {
          "name": {
            "type": "object",
            "properties": {
              "firstName": {
                "type": "string"
              },
              "middleName": {
                "type": "string"
              },
              "lastName": {
                "type": "string"
              }
            },
            "required": [
              "firstName",
              "middleName",
              "lastName"
            ],
            "additionalProperties": true
          },
          "age": {
            "type": "string"
          },
          "addresses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "firstReportedDate": {
                  "type": "string"
                },
                "lastReportedDate": {
                  "type": "string"
                },
                "street": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "city": {
                  "type": "string"
                },
                "state": {
                  "type": "string"
                },
                "zip": {
                  "type": "string"
                }
              },
              "required": [
                "firstReportedDate",
                "lastReportedDate",
                "street",
                "unit",
                "city",
                "state",
                "zip"
              ],
              "additionalProperties": true
            }
          },
          "phones": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "number": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "isConnected": {
                  "type": "boolean"
                },
                "firstReportedDate": {
                  "type": "string"
                },
                "lastReportedDate": {
                  "type": "string"
                }
              },
              "required": [
                "number",
                "type",
                "isConnected",
                "firstReportedDate",
                "lastReportedDate"
              ],
              "additionalProperties": true
            }
          },
          "emails": {
            "type": "array",
            "items": {}
          }
        },
        "required": [
          "name",
          "age",
          "addresses",
          "phones",
          "emails"
        ],
        "additionalProperties": true
      },
      "message": {
        "type": "string"
      },
      "identityScore": {
        "type": "integer"
      },
      "isError": {
        "type": "boolean"
      }
    },
    "required": [
      "person",
      "message",
      "identityScore",
      "isError"
    ],
    "additionalProperties": true
  }
  ```
</details>

## Deepline cost

* Pricing model: `per_result` (per result).
* Estimated Deepline credits: `0.7` per pricing unit.

## Related documentation

* [Enformion provider guide](https://deepline.com/docs/providers/enformion/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.