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

# Pipedrive Integration for AI Agents & Workflows

> Sales CRM and pipeline management platform for tracking deals, contacts, activities, and leads.

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img className="block dark:hidden" src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/pipedrive-light.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=103f5a409267a510ee7e4ba0d9c4ec7f" alt="Pipedrive logo" width="72" height="72" data-path="logos/pipedrive-light.svg" />

<img className="hidden dark:block" src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/pipedrive-dark.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=9db47e3324eb940aeae659100b9bf0e1" alt="Pipedrive logo" width="72" height="72" data-path="logos/pipedrive-dark.svg" />

## Overview

Add **Pipedrive** to any ModuleX agent or workflow. Sales CRM and pipeline management platform. Connects to the Pipedrive REST API (`{your-domain}.pipedrive.com/api/v1` and `/api/v2`) to manage deals, contacts, leads, activities, organizations, and notes.

<Info>
  **Categories**: CRM · Sales · **Auth**: OAuth2 · **Actions**: 26
</Info>

## Authentication

### OAuth2 Authentication

Connect using Pipedrive OAuth (recommended)

#### Required Credentials

| Field         | Description                       | Required | Format |
| ------------- | --------------------------------- | -------- | ------ |
| Client ID     | Pipedrive OAuth App Client ID     | Yes      | `-`    |
| Client Secret | Pipedrive OAuth App Client Secret | Yes      | `-`    |

#### OAuth Configuration

* **Authorization URL**: `https://oauth.pipedrive.com/oauth/authorize`
* **Token URL**: `https://oauth.pipedrive.com/oauth/token`
* **Scopes**: `deals:full`, `contacts:full`, `leads:full`, `activities:full`, `search:read`, `users:read`, `admin`

## Available Actions

<AccordionGroup>
  <Accordion title="add_activity — Add a new activity in Pipedrive">
    ### Parameters

    <ResponseField name="subject" type="string" required>
      Subject of the activity
    </ResponseField>

    <ResponseField name="type" type="string" required>
      Type of the activity (e.g. call, meeting, task, deadline, email, lunch). Must match an ActivityType key\_string in Pipedrive.
    </ResponseField>

    <ResponseField name="owner_id" type="integer">
      ID of the user whom the activity will be assigned to. If omitted, assigned to the authorized user.
    </ResponseField>

    <ResponseField name="deal_id" type="string">
      ID of the deal this activity will be associated with
    </ResponseField>

    <ResponseField name="lead_id" type="string">
      ID of the lead this activity will be associated with
    </ResponseField>

    <ResponseField name="org_id" type="integer">
      ID of the organization this activity will be associated with
    </ResponseField>

    <ResponseField name="project_id" type="string">
      ID of the project this activity will be associated with
    </ResponseField>

    <ResponseField name="due_date" type="string">
      Due date of the activity. Format: YYYY-MM-DD
    </ResponseField>

    <ResponseField name="due_time" type="string">
      Due time of the activity in UTC. Format: HH:MM
    </ResponseField>

    <ResponseField name="duration" type="string">
      Duration of the activity. Format: HH:MM
    </ResponseField>

    <ResponseField name="busy" type="boolean">
      Set the activity as Busy or Free
    </ResponseField>

    <ResponseField name="done" type="boolean">
      Whether the activity is done or not
    </ResponseField>

    <ResponseField name="note" type="string">
      Note of the activity (HTML format)
    </ResponseField>

    <ResponseField name="public_description" type="string">
      Additional details about the activity that will be synced to your external calendar
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "AddActivityOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="add_deal — Add a new deal in Pipedrive">
    ### Parameters

    <ResponseField name="title" type="string" required>
      Deal title
    </ResponseField>

    <ResponseField name="owner_id" type="integer">
      ID of the user who will be marked as the owner of this deal
    </ResponseField>

    <ResponseField name="person_id" type="integer">
      ID of the person this deal will be associated with
    </ResponseField>

    <ResponseField name="org_id" type="integer">
      ID of the organization this deal will be associated with
    </ResponseField>

    <ResponseField name="pipeline_id" type="integer">
      ID of the pipeline this deal will be placed in
    </ResponseField>

    <ResponseField name="stage_id" type="integer">
      ID of the stage this deal will be placed in
    </ResponseField>

    <ResponseField name="value" type="string">
      Value of the deal. If omitted, value will be set to 0.
    </ResponseField>

    <ResponseField name="currency" type="string">
      Currency of the deal (3-character code). If omitted, uses the default currency of the authorized user.
    </ResponseField>

    <ResponseField name="status" type="string">
      Status of the deal. Allowed values: open, won, lost, deleted
    </ResponseField>

    <ResponseField name="probability" type="integer">
      Deal success probability percentage
    </ResponseField>

    <ResponseField name="lost_reason" type="string">
      Message about why the deal was lost (when status=lost)
    </ResponseField>

    <ResponseField name="visible_to" type="integer">
      Visibility of the deal. 1 = Owner & followers (private), 3 = Entire company (shared)
    </ResponseField>

    <ResponseField name="expected_close_date" type="string">
      Expected close date of the deal. Format: YYYY-MM-DD
    </ResponseField>

    <ResponseField name="note" type="string">
      Content of a note to attach to the deal after creation
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "AddDealOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="add_labels — Add labels to a lead, person, deal, or organization in Pipedrive">
    ### Parameters

    <ResponseField name="type" type="string" required>
      The type of the item. Allowed values: lead, person, deal, organization
    </ResponseField>

    <ResponseField name="label_ids" type="array" required>
      The IDs of labels to add. Element type: string
    </ResponseField>

    <ResponseField name="lead_id" type="string">
      The ID of the lead (required when type=lead)
    </ResponseField>

    <ResponseField name="person_id" type="integer">
      The ID of the person (required when type=person)
    </ResponseField>

    <ResponseField name="deal_id" type="string">
      The ID of the deal (required when type=deal)
    </ResponseField>

    <ResponseField name="organization_id" type="integer">
      The ID of the organization (required when type=organization)
    </ResponseField>

    <ResponseField name="replace_existing_labels" type="boolean">
      Set to true to replace existing labels with the new ones, false to append (Default: `false`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "AddLabelsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="add_lead — Create a new lead in Pipedrive">
    ### Parameters

    <ResponseField name="title" type="string" required>
      The name of the lead
    </ResponseField>

    <ResponseField name="person_id" type="integer">
      The ID of a person to link to. Required unless organization\_id is specified.
    </ResponseField>

    <ResponseField name="organization_id" type="integer">
      The ID of an organization to link to. Required unless person\_id is specified.
    </ResponseField>

    <ResponseField name="owner_id" type="integer">
      The ID of the user who will own the lead
    </ResponseField>

    <ResponseField name="label_ids" type="array">
      The IDs of lead labels to associate. Element type: string (UUID)
    </ResponseField>

    <ResponseField name="expected_close_date" type="string">
      Expected close date. Format: YYYY-MM-DD
    </ResponseField>

    <ResponseField name="visible_to" type="string">
      Visibility of the lead. Allowed values: 1, 3, 5, 7
    </ResponseField>

    <ResponseField name="was_seen" type="boolean">
      Whether the lead was seen in the Pipedrive UI
    </ResponseField>

    <ResponseField name="note" type="string">
      A note to add to the lead
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "AddLeadOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="add_note — Add a new note to a lead, deal, person, or organization in Pipedrive">
    ### Parameters

    <ResponseField name="content" type="string" required>
      The content of the note in HTML format
    </ResponseField>

    <ResponseField name="lead_id" type="string">
      The ID of the lead to attach the note to
    </ResponseField>

    <ResponseField name="deal_id" type="string">
      The ID of the deal to attach the note to
    </ResponseField>

    <ResponseField name="person_id" type="integer">
      The ID of the person to attach the note to
    </ResponseField>

    <ResponseField name="organization_id" type="integer">
      The ID of the organization to attach the note to
    </ResponseField>

    <ResponseField name="user_id" type="integer">
      The ID of the user marked as the author (admin only)
    </ResponseField>

    <ResponseField name="pinned_to_deal_flag" type="boolean">
      Pin the note to the deal (requires deal\_id) (Default: `false`)
    </ResponseField>

    <ResponseField name="pinned_to_lead_flag" type="boolean">
      Pin the note to the lead (requires lead\_id) (Default: `false`)
    </ResponseField>

    <ResponseField name="pinned_to_org_flag" type="boolean">
      Pin the note to the organization (requires organization\_id) (Default: `false`)
    </ResponseField>

    <ResponseField name="pinned_to_person_flag" type="boolean">
      Pin the note to the person (requires person\_id) (Default: `false`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "AddNoteOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="add_organization — Add a new organization in Pipedrive">
    ### Parameters

    <ResponseField name="name" type="string" required>
      Organization name
    </ResponseField>

    <ResponseField name="owner_id" type="integer">
      ID of the user who will be marked as the owner
    </ResponseField>

    <ResponseField name="visible_to" type="integer">
      Visibility. 1 = Owner & followers (private), 3 = Entire company (shared)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "AddOrganizationOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="add_person — Add a new person (contact) in Pipedrive">
    ### Parameters

    <ResponseField name="name" type="string" required>
      Person name
    </ResponseField>

    <ResponseField name="owner_id" type="integer">
      ID of the user who will be marked as the owner
    </ResponseField>

    <ResponseField name="org_id" type="integer">
      ID of the organization this person will belong to
    </ResponseField>

    <ResponseField name="emails" type="array">
      Email addresses. Element type: object with keys \{value, primary, label}
    </ResponseField>

    <ResponseField name="phones" type="array">
      Phone numbers. Element type: object with keys \{value, primary, label}
    </ResponseField>

    <ResponseField name="visible_to" type="integer">
      Visibility. 1 = Owner & followers (private), 3 = Entire company (shared)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "AddPersonOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_all_leads — Get all leads from Pipedrive with optional filtering">
    ### Parameters

    <ResponseField name="max_results" type="integer">
      Maximum number of results to return. If not provided, all leads are returned.
    </ResponseField>

    <ResponseField name="owner_id" type="integer">
      Filter leads by the given user ID
    </ResponseField>

    <ResponseField name="person_id" type="integer">
      Filter leads by the given person ID
    </ResponseField>

    <ResponseField name="organization_id" type="integer">
      Filter leads by the given organization ID
    </ResponseField>

    <ResponseField name="filter_id" type="integer">
      The ID of the filter to use. Takes precedence over other filters.
    </ResponseField>

    <ResponseField name="sort" type="string">
      Field and direction to sort by. Valid fields: id, title, owner\_id, creator\_id, was\_seen, expected\_close\_date, next\_activity\_id, add\_time, update\_time
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "LeadItem": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "owner_id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Owner Id"
            },
            "person_id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Person Id"
            },
            "organization_id": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Organization Id"
            },
            "was_seen": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Was Seen"
            },
            "expected_close_date": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Expected Close Date"
            },
            "add_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Add Time"
            },
            "update_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Update Time"
            }
          },
          "title": "LeadItem",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "leads": {
          "items": {
            "$ref": "#/$defs/LeadItem"
          },
          "title": "Leads",
          "type": "array"
        },
        "total": {
          "default": 0,
          "title": "Total",
          "type": "integer"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetAllLeadsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_deal — Get a deal by its ID in Pipedrive">
    ### Parameters

    <ResponseField name="deal_id" type="string" required>
      The ID of the deal to retrieve
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetDealOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_lead_by_id — Get a lead by its ID in Pipedrive">
    ### Parameters

    <ResponseField name="lead_id" type="string" required>
      The ID of the lead to retrieve
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetLeadByIdOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_person_details — Get details of a person by their ID in Pipedrive">
    ### Parameters

    <ResponseField name="person_id" type="integer" required>
      The ID of the person to retrieve
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetPersonDetailsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_deals — List deals in Pipedrive with optional filtering and pagination">
    ### Parameters

    <ResponseField name="filter_id" type="integer">
      The ID of the filter to apply
    </ResponseField>

    <ResponseField name="owner_id" type="integer">
      Filter by owner user ID
    </ResponseField>

    <ResponseField name="person_id" type="integer">
      Filter by associated person ID
    </ResponseField>

    <ResponseField name="organization_id" type="integer">
      Filter by associated organization ID
    </ResponseField>

    <ResponseField name="pipeline_id" type="integer">
      Filter by pipeline ID
    </ResponseField>

    <ResponseField name="stage_id" type="integer">
      Filter by stage ID
    </ResponseField>

    <ResponseField name="status" type="string">
      Filter by status. Allowed values: open, won, lost, deleted
    </ResponseField>

    <ResponseField name="sort_by" type="string">
      Field to sort by. Allowed values: id, update\_time, add\_time
    </ResponseField>

    <ResponseField name="sort_direction" type="string">
      Sort direction. Allowed values: asc, desc
    </ResponseField>

    <ResponseField name="limit" type="integer">
      Maximum number of entries to return (max 500)
    </ResponseField>

    <ResponseField name="cursor" type="string">
      Cursor for pagination to the next page of results
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "deals": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Deals",
          "type": "array"
        },
        "cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Cursor"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListDealsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_lead_label_ids_options — Retrieve available lead label options from Pipedrive">
    ### Response

    ```json theme={null}
    {
      "$defs": {
        "LabelOption": {
          "additionalProperties": false,
          "properties": {
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Label"
            },
            "value": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Value"
            }
          },
          "title": "LabelOption",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "options": {
          "items": {
            "$ref": "#/$defs/LabelOption"
          },
          "title": "Options",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListLeadLabelIdsOptionsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_organization_label_ids_options — Retrieve available organization label options from Pipedrive">
    ### Response

    ```json theme={null}
    {
      "$defs": {
        "LabelOption": {
          "additionalProperties": false,
          "properties": {
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Label"
            },
            "value": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Value"
            }
          },
          "title": "LabelOption",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "options": {
          "items": {
            "$ref": "#/$defs/LabelOption"
          },
          "title": "Options",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListOrganizationLabelIdsOptionsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_person_label_ids_options — Retrieve available person label options from Pipedrive">
    ### Response

    ```json theme={null}
    {
      "$defs": {
        "LabelOption": {
          "additionalProperties": false,
          "properties": {
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Label"
            },
            "value": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Value"
            }
          },
          "title": "LabelOption",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "options": {
          "items": {
            "$ref": "#/$defs/LabelOption"
          },
          "title": "Options",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListPersonLabelIdsOptionsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_user_id_options — Retrieve available user options from Pipedrive">
    ### Response

    ```json theme={null}
    {
      "$defs": {
        "UserOption": {
          "additionalProperties": false,
          "properties": {
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Label"
            },
            "value": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Value"
            }
          },
          "title": "UserOption",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "options": {
          "items": {
            "$ref": "#/$defs/UserOption"
          },
          "title": "Options",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListUserIdOptionsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="merge_deals — Merge two deals in Pipedrive">
    ### Parameters

    <ResponseField name="deal_id" type="string" required>
      The ID of the deal to merge (will be removed)
    </ResponseField>

    <ResponseField name="target_deal_id" type="string" required>
      The ID of the deal to merge into (will be kept)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "MergeDealsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="merge_persons — Merge two persons in Pipedrive">
    ### Parameters

    <ResponseField name="person_id" type="integer" required>
      The ID of the person to merge (will be removed)
    </ResponseField>

    <ResponseField name="target_person_id" type="integer" required>
      The ID of the person to merge into (will be kept, data prioritized on conflict)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "MergePersonsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="remove_duplicate_notes — Remove duplicate notes from an object in Pipedrive">
    ### Parameters

    <ResponseField name="lead_id" type="string">
      The ID of the lead whose notes to deduplicate
    </ResponseField>

    <ResponseField name="deal_id" type="string">
      The ID of the deal whose notes to deduplicate
    </ResponseField>

    <ResponseField name="person_id" type="integer">
      The ID of the person whose notes to deduplicate
    </ResponseField>

    <ResponseField name="organization_id" type="integer">
      The ID of the organization whose notes to deduplicate
    </ResponseField>

    <ResponseField name="user_id" type="integer">
      The ID of the user whose notes to deduplicate
    </ResponseField>

    <ResponseField name="project_id" type="string">
      The ID of the project whose notes to deduplicate
    </ResponseField>

    <ResponseField name="keyword" type="string">
      Only remove duplicate notes that contain this keyword
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "total_notes": {
          "default": 0,
          "title": "Total Notes",
          "type": "integer"
        },
        "duplicates_found": {
          "default": 0,
          "title": "Duplicates Found",
          "type": "integer"
        },
        "duplicates_removed": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Duplicates Removed",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "RemoveDuplicateNotesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="remove_labels — Remove labels from a lead, person, deal, or organization in Pipedrive">
    ### Parameters

    <ResponseField name="type" type="string" required>
      The type of the item. Allowed values: lead, person, deal, organization
    </ResponseField>

    <ResponseField name="entity_id" type="string" required>
      ID of the entity to remove labels from
    </ResponseField>

    <ResponseField name="label_ids" type="array" required>
      The label IDs to remove. Element type: string
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "RemoveLabelsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="search_leads — Search for leads by name or email in Pipedrive">
    ### Parameters

    <ResponseField name="term" type="string" required>
      The search term (minimum 2 characters, or 1 with exact\_match)
    </ResponseField>

    <ResponseField name="exact_match" type="boolean">
      When true, only full exact matches are returned (not case sensitive)
    </ResponseField>

    <ResponseField name="fields" type="array">
      Fields to search from. Allowed values: custom\_fields, notes, title. Element type: string
    </ResponseField>

    <ResponseField name="person_id" type="integer">
      Filter by person ID
    </ResponseField>

    <ResponseField name="organization_id" type="integer">
      Filter by organization ID
    </ResponseField>

    <ResponseField name="include_fields" type="string">
      Optional fields to include. Allowed: lead.was\_seen
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "items": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Items",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchLeadsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="search_notes — Search for notes in Pipedrive with filtering options">
    ### Parameters

    <ResponseField name="search_term" type="string">
      The term to search for in note content
    </ResponseField>

    <ResponseField name="lead_id" type="string">
      Filter by lead ID
    </ResponseField>

    <ResponseField name="deal_id" type="string">
      Filter by deal ID
    </ResponseField>

    <ResponseField name="person_id" type="integer">
      Filter by person ID
    </ResponseField>

    <ResponseField name="organization_id" type="integer">
      Filter by organization ID
    </ResponseField>

    <ResponseField name="user_id" type="integer">
      Filter by user ID
    </ResponseField>

    <ResponseField name="sort_field" type="string">
      Sort field. Allowed: id, user\_id, deal\_id, org\_id, person\_id, content, add\_time, update\_time
    </ResponseField>

    <ResponseField name="sort_direction" type="string">
      Sort direction. Allowed: ASC, DESC (Default: `DESC`)
    </ResponseField>

    <ResponseField name="start_date" type="string">
      Date from which to fetch notes. Format: YYYY-MM-DD
    </ResponseField>

    <ResponseField name="end_date" type="string">
      Date until which to fetch notes. Format: YYYY-MM-DD
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of results to return
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "notes": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Notes",
          "type": "array"
        },
        "total": {
          "default": 0,
          "title": "Total",
          "type": "integer"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchNotesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="search_persons — Search for persons by name, email, phone, or notes in Pipedrive">
    ### Parameters

    <ResponseField name="term" type="string" required>
      The search term (minimum 2 characters, or 1 with exact\_match)
    </ResponseField>

    <ResponseField name="fields" type="array">
      Fields to search from. Allowed: custom\_fields, email, notes, phone, name. Element type: string
    </ResponseField>

    <ResponseField name="exact_match" type="boolean">
      When true, only full exact matches are returned (not case sensitive)
    </ResponseField>

    <ResponseField name="organization_id" type="integer">
      Filter by organization ID (upper limit: 2000)
    </ResponseField>

    <ResponseField name="include_fields" type="string">
      Optional fields to include. Allowed: person.picture
    </ResponseField>

    <ResponseField name="start" type="integer">
      Pagination start offset
    </ResponseField>

    <ResponseField name="limit" type="integer">
      Items per page
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "items": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Items",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchPersonsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_deal — Update the properties of a deal in Pipedrive">
    ### Parameters

    <ResponseField name="deal_id" type="string" required>
      ID of the deal to update
    </ResponseField>

    <ResponseField name="title" type="string">
      New deal title
    </ResponseField>

    <ResponseField name="owner_id" type="integer">
      ID of the new owner user
    </ResponseField>

    <ResponseField name="person_id" type="integer">
      ID of the person to associate
    </ResponseField>

    <ResponseField name="org_id" type="integer">
      ID of the organization to associate
    </ResponseField>

    <ResponseField name="pipeline_id" type="integer">
      ID of the pipeline
    </ResponseField>

    <ResponseField name="stage_id" type="integer">
      ID of the stage in the pipeline
    </ResponseField>

    <ResponseField name="value" type="string">
      Value of the deal
    </ResponseField>

    <ResponseField name="currency" type="string">
      Currency (3-character code)
    </ResponseField>

    <ResponseField name="status" type="string">
      Status. Allowed values: open, won, lost, deleted
    </ResponseField>

    <ResponseField name="probability" type="integer">
      Deal success probability percentage
    </ResponseField>

    <ResponseField name="lost_reason" type="string">
      Reason the deal was lost (when status=lost)
    </ResponseField>

    <ResponseField name="visible_to" type="integer">
      Visibility. 1 = private, 3 = shared
    </ResponseField>

    <ResponseField name="note" type="string">
      A note to add to the deal
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateDealOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_lead — Update a lead in Pipedrive">
    ### Parameters

    <ResponseField name="lead_id" type="string" required>
      The ID of the lead to update
    </ResponseField>

    <ResponseField name="title" type="string">
      New title of the lead
    </ResponseField>

    <ResponseField name="person_id" type="integer">
      ID of the person to link to
    </ResponseField>

    <ResponseField name="organization_id" type="integer">
      ID of the organization to link to
    </ResponseField>

    <ResponseField name="owner_id" type="integer">
      ID of the new owner user
    </ResponseField>

    <ResponseField name="label_ids" type="array">
      Lead label IDs. Element type: string (UUID)
    </ResponseField>

    <ResponseField name="expected_close_date" type="string">
      Expected close date. Format: YYYY-MM-DD
    </ResponseField>

    <ResponseField name="visible_to" type="string">
      Visibility. Allowed values: 1, 3, 5, 7
    </ResponseField>

    <ResponseField name="was_seen" type="boolean">
      Whether the lead was seen in the UI
    </ResponseField>

    <ResponseField name="is_archived" type="boolean">
      Whether the lead is archived
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateLeadOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_person — Update an existing person in Pipedrive">
    ### Parameters

    <ResponseField name="person_id" type="integer" required>
      The ID of the person to update
    </ResponseField>

    <ResponseField name="name" type="string">
      New name of the person
    </ResponseField>

    <ResponseField name="owner_id" type="integer">
      ID of the new owner user
    </ResponseField>

    <ResponseField name="org_id" type="integer">
      ID of the organization this person will belong to
    </ResponseField>

    <ResponseField name="emails" type="array">
      Email addresses. Element type: object with keys \{value, primary, label}
    </ResponseField>

    <ResponseField name="phones" type="array">
      Phone numbers. Element type: object with keys \{value, primary, label}
    </ResponseField>

    <ResponseField name="visible_to" type="integer">
      Visibility. 1 = private, 3 = shared
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdatePersonOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* **Rate limits**: Pipedrive enforces per-plan rate limits. Professional plan: 200 requests/10 seconds; Enterprise plan: 400 requests/10 seconds. Exceeding the limit returns HTTP 429.
* **Pagination**: List endpoints use cursor-based (v2) or offset-based (v1) pagination. The `list_deals` tool supports cursor; `get_all_leads` auto-paginates.
* **Error model**: Non-2xx responses and timeouts are caught and returned as `success=False` + `error` rather than raising. The error string includes the HTTP status code and response body for debugging.

## Related integrations

<CardGroup cols={3}>
  <Card title="Clay" href="/integrations/tools/clay" />

  <Card title="Dropcontact" href="/integrations/tools/dropcontact" />

  <Card title="HubSpot" href="/integrations/tools/hubspot" />
</CardGroup>

## Links

* [Pipedrive](https://www.pipedrive.com)
