> For the complete documentation index, see [llms.txt](https://help.delpha.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.delpha.io/use-cases/required-input-fields.md).

# Required Input Fields: Validate, Find & Compare

Delpha runs the same dynamic engine across every channel — Salesforce, the API, and MCP agents. You never select a mode explicitly: the inputs you provide route each request automatically into Validate, Find, or Compare.

### Input Classification

* Mandatory inputs: required to trigger the engine. Omitting a mandatory input rejects the request (over the API, this returns `HTTP 400 Bad Request`).
* Support inputs: contextual attributes (e.g., website, company name) that improve AI confidence scoring and match precision.

### Execution Logic & Workflow Routing

For any supported data attribute (Email, Address, Phone, Legal ID, Website, LinkedIn, Ultimate Parent), Delpha routes execution into one of three distinct modes based on which inputs are present:

```mermaid
flowchart TD
    classDef input fill:#0f172a,stroke:#334155,stroke-width:2px,color:#ffffff,font-weight:bold,rx:8px,ry:8px;
    classDef path fill:#f8fafc,stroke:#94a3b8,stroke-width:1.5px,color:#334155,font-weight:600,rx:6px,ry:6px;
    classDef mode1 fill:#eff6ff,stroke:#3b82f6,stroke-width:2px,color:#1e3a8a,rx:8px,ry:8px;
    classDef mode2 fill:#f0fdf4,stroke:#22c55e,stroke-width:2px,color:#14532d,rx:8px,ry:8px;
    classDef mode3 fill:#faf5ff,stroke:#a855f7,stroke-width:2px,color:#581c87,rx:8px,ry:8px;

    A["📥 INPUT ANALYSIS"]:::input

    A --> B["Primary Input Only<br/><i>e.g., email present</i>"]:::path
    A --> C["Support Inputs Only<br/><i>e.g., primary empty, context present</i>"]:::path
    A --> D["Primary + Support Inputs<br/><i>e.g., email + context present</i>"]:::path

    B --> E
    C --> F
    D --> G

    subgraph Engine ["Delpha Dynamic 3-in-1 Engine"]
        E["<b>MODE 1: VALIDATE</b><br/>───────────────<br/>• Check syntax & structure<br/>• Verify deliverability/format"]:::mode1
        F["<b>MODE 2: FIND</b><br/>───────────────<br/>• Search trusted sources<br/>• Discover & enrich missing value"]:::mode2
        G["<b>MODE 3: COMPARE</b><br/>───────────────<br/>• Cross-verify attributes<br/>• Score accuracy & fix mismatches"]:::mode3
    end
```

#### Execution Modes

* Mode 1: Validate (Syntax & Deliverability)
  * Trigger: Primary input provided; support inputs omitted or empty.
  * Behavior: Verifies syntax, structural integrity, domain status, and functional deliverability.
* Mode 2: Find & Recommend (Data Enrichment)
  * Trigger: Primary input empty; support inputs provided.
  * Behavior: Uses contextual attributes (e.g., Name + Website) to query internal and external data sources to discover the missing value.
* Mode 3: Compare & Measure Accuracy (Data Verification & Scoring)
  * Trigger: Both primary input and support inputs provided.
  * Behavior: Cross-verifies attribute alignment, detects personal vs. professional mismatches, and outputs an Accuracy Confidence Score alongside suggested corrections.

### Field Matrix by Capability

The same inputs apply whether Delpha runs inside Salesforce, is called by an AI agent over MCP, or is invoked through the API.

| **Capability**  | **Execution Mode** | **Mandatory Inputs**                                                                                                                                                   | **Support / Optional Inputs**                                                                                                       |
| --------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| Email           | Validate           | `email`                                                                                                                                                                | *None*                                                                                                                              |
| Email           | Find               | `email: null`, `website`, `first_name`, `last_name`                                                                                                                    | *None*                                                                                                                              |
| Email           | Compare            | `email`, `website`, `first_name`, `last_name`                                                                                                                          | *None*                                                                                                                              |
| Legal ID        | Validate           | `legal_id`, `legal_id_type` (or `country`)                                                                                                                             | *None*                                                                                                                              |
| Legal ID        | Find               | `legal_id: null`, `company_name`, `legal_id_type` (or `country`)                                                                                                       | `address`, `website`                                                                                                                |
| Legal ID        | Compare            | `legal_id`, `company_name`, `legal_id_type` (or `country`)                                                                                                             | `address`, `website`                                                                                                                |
| Address         | Validate           | `street`, `postal_code`, `city`, `country`, `state`                                                                                                                    | *None*                                                                                                                              |
| Address         | Find               | `address: null`, `company_name`, (`website` \| `legal_id` \| `linkedin`)                                                                                               | `website`, `legal_id`, `linkedin`                                                                                                   |
| Address         | Compare            | `address`, `company_name`, (`website` \| `legal_id` \| `linkedin`)                                                                                                     | `website`, `legal_id`, `linkedin`                                                                                                   |
| Phone           | Validate           | `phone`                                                                                                                                                                | `country`                                                                                                                           |
| Website         | Validate           | `website`                                                                                                                                                              | *None*                                                                                                                              |
| Website         | Find               | `website: null`, `company_name`                                                                                                                                        | `legal_id`, `linkedin`, `email`, `country`                                                                                          |
| Website         | Compare            | `website`, `company_name`                                                                                                                                              | `legal_id`, `linkedin`, `email`, `country`                                                                                          |
| Name            | Validate           | `first_name`, `last_name`                                                                                                                                              | *None*                                                                                                                              |
| LinkedIn        | Validate           | `url`                                                                                                                                                                  | *None*                                                                                                                              |
| LinkedIn        | Find               | <p>Account: <code>url: null</code>, <code>company\_name</code></p><p><br></p><p>Contact: <code>url: null</code>, <code>first\_name</code>, <code>last\_name</code></p> | <p>Account: <code>country</code>, <code>website</code></p><p><br></p><p>Contact: <code>company\_name</code>, <code>email</code></p> |
| LinkedIn        | Compare            | <p>Account: <code>url</code>, <code>company\_name</code></p><p><br></p><p>Contact: <code>url</code>, <code>first\_name</code>, <code>last\_name</code></p>             | <p>Account: <code>country</code>, <code>website</code></p><p><br></p><p>Contact: <code>company\_name</code>, <code>email</code></p> |
| Ultimate Parent | Find               | `company_name`, `website`                                                                                                                                              | `country`                                                                                                                           |

> Note on empty inputs: Leaving support inputs empty (or `null`) is valid. Delpha defaults to Validate Mode whenever support inputs are missing.

### Calling the Engine via the API

Base URL: `https://api.delpha.io/v1`

Headers: `Authorization: Bearer <YOUR_API_KEY>` | `Content-Type: application/json`

Each capability maps to one endpoint — the mode is inferred from the payload, exactly as in the matrix above:

| **Capability**  | **Endpoint**               |
| --------------- | -------------------------- |
| Email           | `POST /v1/email`           |
| Legal ID        | `POST /v1/legal_id`        |
| Address         | `POST /v1/address`         |
| Phone           | `POST /v1/phone`           |
| Website         | `POST /v1/website`         |
| Name            | `POST /v1/name`            |
| LinkedIn        | `POST /v1/linkedin`        |
| Ultimate Parent | `POST /v1/ultimate-parent` |

#### JSON Payload Reference Examples

**1. Check Validity Mode Payload**

Endpoint: `POST /v1/email`

```json
{
  "email": "samantha.parker@gmail.com",
  "first_name": null,
  "last_name": null,
  "website": null
}
```

* Triggered Behavior: Validates syntax and verifies inbox deliverability for `samantha.parker@gmail.com`.

**2. Find & Recommend Mode Payload**

Endpoint: `POST /v1/email`

```json
{
  "email": null,
  "first_name": "Samantha",
  "last_name": "Parker",
  "website": "https://cogicog.com"
}
```

* Triggered Behavior: Queries data sources to discover the missing professional email address for Samantha Parker at Cogicog.

**3. Compare & Measure Accuracy Mode Payload**

Endpoint: `POST /v1/email`

```json
{
  "email": "samantha.parker@gmail.com",
  "first_name": "Samantha",
  "last_name": "Parker",
  "website": "https://cogicog.com"
}
```

* Triggered Behavior: Evaluates alignment between the personal address (`gmail.com`) and corporate domain (`cogicog.com`), returning a confidence score and suggesting `samantha.parker@cogicog.com`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.delpha.io/use-cases/required-input-fields.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
