# Pipedrive

## Links

- Product page URL: https://www.agentpmt.com/marketplace/pipedrive
- Product markdown URL: https://www.agentpmt.com/marketplace/pipedrive?format=agent-md
- Product JSON URL: https://www.agentpmt.com/marketplace/pipedrive?format=agent-json

## Overview

- Product ID: 69e5b48b106b61b0eb7cc3df
- Type: connector
- Unit type: request
- Price: 500 credits
- Categories: Sales, Sales Engagement & Outreach, Revenue & Commission Tracking, Marketing Automation, Task & Workflow Automation, Appointment & Scheduling
- Generated at: 2026-06-13T13:55:04.159Z

### Page Description

Put your Pipedrive CRM on autopilot. Connect your account and let your AI assistant turn inbound interest into closed deals — capturing leads, creating contacts and organizations, building deals and advancing them through your pipeline, scheduling follow-up calls, logging notes, and attaching proposals automatically. Ask in plain language to find any record, surface stalled deals, route a lead to the right rep, or trigger downstream automations the moment something changes — and skip the manual data entry that eats your selling time.

### Agent Description

Manage Pipedrive sales workflows: discover fields and users, search CRM records, create and update deals, persons, organizations, activities, products, leads, and notes, move records through pipelines and stages, attach or download files through AgentPMT File Manager, and manage webhook subscriptions. Use list_fields, who_am_i, list_pipelines, and list_stages for discovery before writes. Writes are limited by the connected product permission scopes.

## Details

### Details

Put your Pipedrive CRM on autopilot. Connect your account and let your AI assistant turn inbound interest into closed deals — capturing leads, creating contacts and organizations, building deals and advancing them through your pipeline, scheduling follow-up calls, logging notes, and attaching proposals automatically. Ask in plain language to find any record, surface stalled deals, route a lead to the right rep, or trigger downstream automations the moment something changes — and skip the manual data entry that eats your selling time.

### Actions

- `who_am_i` (5 credits): Return the connected Pipedrive user and company details.
- `list_records` (5 credits): List one core resource: deal, person, organization, activity, or product.
- `get_record` (5 credits): Fetch one core resource record by id.
- `create_record` (5 credits): Create one core resource record. Requires add permission.
- `update_record` (5 credits): Update one core resource record. Requires edit permission.
- `delete_record` (5 credits): Delete one core resource record. Requires delete permission.
- `search_records` (5 credits): Search deal, person, organization, or product records by term. Activity is not searchable.
- `list_leads` (5 credits): List leads with filters and pagination.
- `get_lead` (5 credits): Fetch one lead by UUID.
- `create_lead` (5 credits): Create a lead. Requires add permission and title plus person_id or organization_id.
- `update_lead` (5 credits): Update a lead by UUID. Requires edit permission.
- `delete_lead` (5 credits): Delete a lead by UUID. Requires delete permission.
- `search_leads` (5 credits): Search leads by term.
- `convert_lead` (5 credits): Convert a lead by UUID.
- `list_notes` (5 credits): List notes with optional record filters.
- `get_note` (5 credits): Fetch one note by id.
- `create_note` (5 credits): Create a note linked to one record. Requires add permission.
- `update_note` (5 credits): Update a note by id. Requires edit permission.
- `delete_note` (5 credits): Delete a note by id. Requires delete permission.
- `list_pipelines` (5 credits): List pipelines.
- `get_pipeline` (5 credits): Fetch one pipeline by id.
- `list_stages` (5 credits): List stages, optionally filtered by pipeline_id.
- `get_stage` (5 credits): Fetch one stage by id.
- `item_search` (5 credits): Search across Pipedrive item types by term.
- `list_fields` (5 credits): List field metadata for deals, persons, organizations, activities, or products.
- `list_users` (5 credits): List Pipedrive users.
- `list_files` (5 credits): List files with optional record filters.
- `get_file` (5 credits): Fetch Pipedrive file metadata by id.
- `download_file` (5 credits): Download a Pipedrive file into AgentPMT File Manager.
- `upload_file` (5 credits): Upload an AgentPMT File Manager file to Pipedrive as an attachment. Requires add permission.
- `link_remote_file` (5 credits): Link a Google Drive file to a Pipedrive deal, person, or organization. Requires add permission plus an active Google Drive integration in Pipedrive.
- `update_file` (5 credits): Rename or update a Pipedrive file description. Requires edit permission.
- `delete_file` (5 credits): Delete a Pipedrive file. Requires delete permission.
- `list_webhooks` (5 credits): List Pipedrive webhook subscriptions.
- `create_webhook` (5 credits): Subscribe an HTTPS URL to Pipedrive change events. Requires add permission.
- `delete_webhook` (5 credits): Delete a Pipedrive webhook subscription. Requires delete permission.

### Use Cases

Capture and convert inbound leads, Create and update deals contacts and organizations, Move deals through pipeline stages, Schedule follow-up calls and log notes, Search any deal contact or lead, Attach proposals and contracts from File Manager, Generate pipeline hygiene and stalled-deal reports, Trigger automations when CRM records change, Read and write custom fields, Forecast open pipeline value

### Workflows Using This Tool

#### Pipedrive AI Email Writer: Personalized Human-Voice Nurture and Follow-Up Drafts for Any CRM Segment

Turn any Pipedrive segment into a set of genuinely personal sales emails, written one contact at a time and waiting in your Gmail drafts for your final say. Point this AI email writing workflow at a pipeline stage, an owner, a label, or stalled deals with no recent activity, and it pulls each contact's deal history and notes from Pipedrive, finds the strongest personal hook for every relationship, and writes each email in a natural human voice around your goal: re-engaging a quiet deal, a renewal check-in, post-sale nurture, an upsell conversation, or a simple hello. Every email passes an automated writing quality check that catches robotic, overused AI phrasing and rewrites it before you ever see it. Nothing is sent automatically. Each message lands as a Gmail draft for you to review and send personally, while the workflow logs a note and a follow-up activity on every deal in Pipedrive, records the campaign in a Google Sheets log, and emails you a summary of what is ready. Built for account executives, customer success teams, founders doing their own outreach, sales follow-up and renewal plays, and anyone who wants CRM email automation that produces one-to-one messages that read like they wrote them.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-nurture-email-writer-personalized-human-voice-outreach-drafts-for-any-crm-segment
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-nurture-email-writer-personalized-human-voice-outreach-drafts-for-any-crm-segment?format=agent-md
- Published: 2026-06-10T20:59:48.301Z

#### Pipedrive Field Sales Route Planner: Optimized In-Person Visit Itineraries with Maps & Talking Points

Plan a high-impact day of in-person sales visits straight from your CRM. Give this AI workflow a city or area and it pulls every relevant Pipedrive contact and open deal there, optimizes the most efficient driving route across the stops, and generates a map plus a timed itinerary with arrival windows. For each visit it briefs the rep with last activity, open-deal status, and specific talking points drawn from the contact's notes, and can pre-plan a small gift to bring. The finished plan is delivered as a shareable document with calendar events for every stop. Perfect for field sales, account-based selling, territory planning, customer check-ins, QBR tours, and outside sales reps who want CRM-driven, route-optimized visit planning Pipedrive doesn't offer.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-field-sales-route-planner-optimized-in-person-visit-itineraries-with-maps-talking-points
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-field-sales-route-planner-optimized-in-person-visit-itineraries-with-maps-talking-points?format=agent-md
- Published: 2026-06-10T02:47:37.923Z

#### Pipedrive Renewal Reminder & Retention Gifting: Tiered Cards and Gift Baskets Before Renewal Dates

Protect your recurring revenue with a proactive, multi-touch renewal play. This AI workflow watches the renewal and contract dates on your Pipedrive deals and accounts and runs a tiered gifting ladder as each renewal approaches — a thoughtful greeting card at 60 days, then a fruit basket or flowers at 30 days when engagement has gone quiet — while creating timed follow-up activities for the account owner so nothing slips. It personalizes every message from the contact's deal notes and logs each gesture back into the CRM. Ideal for subscription and SaaS renewals, customer retention, churn prevention, account management, customer success, and revenue teams who want a relationship-driven renewal cadence Pipedrive can't orchestrate on its own.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-renewal-reminder-retention-gifting-tiered-cards-and-gift-baskets-before-renewal-dates
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-renewal-reminder-retention-gifting-tiered-cards-and-gift-baskets-before-renewal-dates?format=agent-md
- Published: 2026-06-10T02:47:32.812Z

#### Pipedrive Account News Monitor: Auto-Send Congratulations Cards & Flowers on Client Milestones

Never miss a reason to reach out. This AI workflow monitors the news for your most important Pipedrive accounts every week — funding rounds, awards, expansions, product launches, and executive hires — and turns real headlines into perfectly timed, genuinely relevant congratulations. The agent drafts a personalized note that references the actual news, mails a printed greeting card, and for major milestones like a funding round sends flowers, then logs the outreach and the source article onto the account in Pipedrive and alerts the deal owner. Built for account-based selling, relationship management, customer marketing, executive engagement, and sales teams who want to look remarkably attentive — a timely, news-triggered gifting play Pipedrive cannot do natively.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-account-news-monitor-auto-send-congratulations-cards-flowers-on-client-milestones
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-account-news-monitor-auto-send-congratulations-cards-flowers-on-client-milestones?format=agent-md
- Published: 2026-06-10T02:47:26.060Z

#### Pipedrive Personalized Direct Mail Engine: AI-Designed Greeting Cards to Any CRM Segment

Turn any Pipedrive segment into a personalized direct-mail campaign in minutes. Point this AI workflow at a Pipedrive filter — a pipeline stage, a customer tier, a sales territory, or won deals this quarter — and it writes a unique, on-brand message for every contact from their real deal history and notes, designs a custom greeting-card cover with AI image generation, and mails a premium printed, folded card to each recipient's address with USPS tracking. Every send is logged back onto the contact record for a complete touch history. Perfect for holiday card campaigns, customer appreciation mailers, account-based marketing, thank-you and welcome cards, re-engagement direct mail, and personalized print outreach at scale — the high-response offline channel Pipedrive has no native way to run.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-personalized-direct-mail-engine-ai-designed-greeting-cards-to-any-crm-segment
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-personalized-direct-mail-engine-ai-designed-greeting-cards-to-any-crm-segment?format=agent-md
- Published: 2026-06-10T02:47:20.852Z

#### Pipedrive At-Risk Deal Rescue: Auto-Send Flowers & Gift Baskets to Stalled High-Value Accounts

Automatically win back stalled, high-value Pipedrive deals before they go cold. This AI sales workflow scans your CRM for your most valuable open deals and key accounts with no activity in the last N days, ranks them by deal value, and sends a perfectly chosen physical gift — a handwritten greeting card, a fruit basket, or fresh flowers — scaled to the size of the relationship. It reads each contact's deal notes to personalize the card message and avoid preference and allergy missteps, ships to their address, logs the gesture as a Pipedrive note and follow-up activity, and alerts the deal owner. Ideal for account-based selling, customer retention, churn prevention, pipeline re-engagement, VIP client management, and revenue teams who want to revive aging deals with a human touch Pipedrive can't automate on its own.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-at-risk-deal-rescue-auto-send-flowers-gift-baskets-to-stalled-high-value-accounts
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/pipedrive-at-risk-deal-rescue-auto-send-flowers-gift-baskets-to-stalled-high-value-accounts?format=agent-md
- Published: 2026-06-10T02:46:49.086Z

### Related Content

No related content is currently linked to this product.

## Integration Details

### DynamicMCP

- Setup page URL: https://www.agentpmt.com/dynamic-mcp
- Claude setup guide: https://www.agentpmt.com/dynamic-mcp#platform=claude
- ChatGPT setup guide: https://www.agentpmt.com/dynamic-mcp#platform=chatgpt
- Cursor setup guide: https://www.agentpmt.com/dynamic-mcp#platform=cursor
- Windsurf setup guide: https://www.agentpmt.com/dynamic-mcp#platform=windsurf

Use the local router for command-based MCP clients. It forwards requests to `https://api.agentpmt.com/mcp` and does not execute tools locally.

```bash
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

### REST API

The live page renders cURL, Python, JavaScript, and Node.js examples. Logged-in users see those examples prefilled with their own API and budget credentials.

- Purchase endpoint: https://api.agentpmt.com/products/purchase
- Authorization format: `Bearer <base64(apiKey:budgetKey)>`

```bash
curl -X POST "https://api.agentpmt.com/products/purchase" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eW91ci1hcGkta2V5LWhlcmU6eW91ci1idWRnZXQta2V5LWhlcmU=" \
  -d '{
    "product_id": "69e5b48b106b61b0eb7cc3df",
    "parameters": {
      "action": "who_am_i"
    }
  }'
```

### Autonomous Agents

Autonomous agents can access this tool through AgentAddress credit balances or direct x402 payments. Use the Autonomous Agent API reference for endpoint shapes after choosing the access pattern below.

- Autonomous Agent API reference URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents
- Autonomous Agent API reference markdown URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents?format=agent-md
- Credit-Based Access Using AgentAddress: https://www.agentpmt.com/docs/autonomous-agents/credit-based-tool-usage-with-agentaddress
- AgentAddress is preferred for persistent file access, stored platform state, and maximum tool use ability across repeated calls.
- Direct x402 is for independent one-off tool calls that do not require shared files or stored platform state.
- Direct x402 public payments: USDC on Base, Arbitrum, Optimism, Polygon, and Avalanche.

### Schema

#### Credentials

These runtime credentials should be provided under `parameters._credentials` when required.

- Pipedrive OAuth (`pipedrive_oauth`, oauth_token, required)
  Connection ID: 69e6c76ad31863ef9bea4bb8
- Pipedrive Permission Level (`permissions`, other, required)
  Connection ID: 69e6c76ad31863ef9bea4bb8

#### Parameters

- Schema type: actions

```json
{
  "actions": {
    "who_am_i": {
      "description": "Return the connected Pipedrive user and company details.",
      "properties": {
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "list_records": {
      "description": "List one core resource: deal, person, organization, activity, or product.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Core resource to list.",
          "required": true,
          "enum": [
            "deal",
            "person",
            "organization",
            "activity",
            "product"
          ]
        },
        "limit": {
          "type": "integer",
          "description": "Page size from 1 to 500.",
          "required": false,
          "minimum": 1,
          "maximum": 500
        },
        "cursor": {
          "type": "string",
          "description": "Cursor for v2 pagination.",
          "required": false
        },
        "sort_by": {
          "type": "string",
          "description": "Sort field name.",
          "required": false
        },
        "sort_direction": {
          "type": "string",
          "description": "Sort direction.",
          "required": false,
          "enum": [
            "asc",
            "desc"
          ]
        },
        "filter_id": {
          "type": "integer",
          "description": "Pipedrive filter id.",
          "required": false
        },
        "owner_id": {
          "type": "integer",
          "description": "Owner user id filter.",
          "required": false
        },
        "updated_since": {
          "type": "string",
          "description": "ISO-8601 timestamp for incremental pulls.",
          "required": false
        },
        "include": {
          "type": "array",
          "description": "Public alias mapped to Pipedrive include_fields where supported.",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "custom_fields": {
          "type": "array",
          "description": "Custom field hash keys to return.",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "deal_id": {
          "type": "integer",
          "description": "Deal filter for supported resources.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Person filter for supported resources.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Public organization id; connector sends org_id where required.",
          "required": false
        },
        "pipeline_id": {
          "type": "integer",
          "description": "Pipeline filter for deals.",
          "required": false
        },
        "stage_id": {
          "type": "integer",
          "description": "Stage filter for deals.",
          "required": false
        },
        "status": {
          "type": "string",
          "description": "Status filter for supported resources.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "get_record": {
      "description": "Fetch one core resource record by id.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Core resource to fetch.",
          "required": true,
          "enum": [
            "deal",
            "person",
            "organization",
            "activity",
            "product"
          ]
        },
        "deal_id": {
          "type": "integer",
          "description": "Deal id when resource is deal.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Person id when resource is person.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Organization id when resource is organization.",
          "required": false
        },
        "activity_id": {
          "type": "integer",
          "description": "Activity id when resource is activity.",
          "required": false
        },
        "product_id": {
          "type": "integer",
          "description": "Product id when resource is product.",
          "required": false
        },
        "include": {
          "type": "array",
          "description": "Public alias mapped to Pipedrive include_fields where supported.",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "custom_fields": {
          "type": "array",
          "description": "Custom field hash keys to return.",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "create_record": {
      "description": "Create one core resource record. Requires add permission.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Core resource to create.",
          "required": true,
          "enum": [
            "deal",
            "person",
            "organization",
            "activity",
            "product"
          ]
        },
        "title": {
          "type": "string",
          "description": "Deal title.",
          "required": false
        },
        "name": {
          "type": "string",
          "description": "Person, organization, product, or file name.",
          "required": false
        },
        "subject": {
          "type": "string",
          "description": "Activity subject.",
          "required": false
        },
        "value": {
          "type": "object",
          "description": "Deal monetary amount. Accepts either a number or object form {amount, currency}; object form is normalized to numeric value plus currency.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Associated person id.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Public organization id; connector sends org_id where required.",
          "required": false
        },
        "pipeline_id": {
          "type": "integer",
          "description": "Pipeline id for deals.",
          "required": false
        },
        "stage_id": {
          "type": "integer",
          "description": "Stage id for deals.",
          "required": false
        },
        "owner_id": {
          "type": "integer",
          "description": "Owner user id.",
          "required": false
        },
        "data": {
          "type": "object",
          "description": "Raw JSON body. Keys here win over convenience fields.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        },
        "deal_id": {
          "type": "integer",
          "description": "Associated deal id for activity records.",
          "required": false
        }
      }
    },
    "update_record": {
      "description": "Update one core resource record. Requires edit permission.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Core resource to update.",
          "required": true,
          "enum": [
            "deal",
            "person",
            "organization",
            "activity",
            "product"
          ]
        },
        "deal_id": {
          "type": "integer",
          "description": "Deal id when resource is deal.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Person id when resource is person.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Organization id when resource is organization, or associated organization id for supported body updates.",
          "required": false
        },
        "activity_id": {
          "type": "integer",
          "description": "Activity id when resource is activity.",
          "required": false
        },
        "product_id": {
          "type": "integer",
          "description": "Product id when resource is product.",
          "required": false
        },
        "title": {
          "type": "string",
          "description": "Deal title.",
          "required": false
        },
        "name": {
          "type": "string",
          "description": "Person, organization, product, or file name.",
          "required": false
        },
        "subject": {
          "type": "string",
          "description": "Activity subject.",
          "required": false
        },
        "value": {
          "type": "object",
          "description": "Deal monetary amount. Accepts either a number or object form {amount, currency}; object form is normalized to numeric value plus currency.",
          "required": false
        },
        "data": {
          "type": "object",
          "description": "Raw JSON body. Keys here win over convenience fields.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "delete_record": {
      "description": "Delete one core resource record. Requires delete permission.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Core resource to delete.",
          "required": true,
          "enum": [
            "deal",
            "person",
            "organization",
            "activity",
            "product"
          ]
        },
        "deal_id": {
          "type": "integer",
          "description": "Deal id when resource is deal.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Person id when resource is person.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Organization id when resource is organization.",
          "required": false
        },
        "activity_id": {
          "type": "integer",
          "description": "Activity id when resource is activity.",
          "required": false
        },
        "product_id": {
          "type": "integer",
          "description": "Product id when resource is product.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "search_records": {
      "description": "Search deal, person, organization, or product records by term. Activity is not searchable.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Core resource to search.",
          "required": true,
          "enum": [
            "deal",
            "person",
            "organization",
            "product"
          ]
        },
        "term": {
          "type": "string",
          "description": "Search term.",
          "required": true
        },
        "fields": {
          "type": "array",
          "description": "Fields to search in. Allowed values depend on the resource.",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "exact_match": {
          "type": "boolean",
          "description": "Search for an exact phrase only.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Person filter for deal searches.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Organization filter for deal and person searches.",
          "required": false
        },
        "status": {
          "type": "string",
          "description": "Status filter for deal searches.",
          "required": false
        },
        "include": {
          "type": "array",
          "description": "Public alias mapped to Pipedrive include_fields for deal, person, and product searches.",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "limit": {
          "type": "integer",
          "description": "Page size from 1 to 500.",
          "required": false,
          "minimum": 1,
          "maximum": 500
        },
        "cursor": {
          "type": "string",
          "description": "Cursor for v2 pagination.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "list_leads": {
      "description": "List leads with filters and pagination.",
      "properties": {
        "limit": {
          "type": "integer",
          "description": "Page size from 1 to 500.",
          "required": false,
          "minimum": 1,
          "maximum": 500
        },
        "start": {
          "type": "integer",
          "description": "Offset for v1 pagination.",
          "required": false,
          "minimum": 0
        },
        "filter_id": {
          "type": "integer",
          "description": "Filter id.",
          "required": false
        },
        "owner_id": {
          "type": "integer",
          "description": "Owner user id filter.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Person filter.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Organization filter.",
          "required": false
        },
        "sort_by": {
          "type": "string",
          "description": "Sort field name.",
          "required": false
        },
        "sort_direction": {
          "type": "string",
          "description": "Sort direction.",
          "required": false,
          "enum": [
            "asc",
            "desc"
          ]
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "get_lead": {
      "description": "Fetch one lead by UUID.",
      "properties": {
        "lead_id": {
          "type": "string",
          "description": "Lead UUID.",
          "required": true
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "create_lead": {
      "description": "Create a lead. Requires add permission and title plus person_id or organization_id.",
      "properties": {
        "title": {
          "type": "string",
          "description": "Lead title.",
          "required": true
        },
        "person_id": {
          "type": "integer",
          "description": "Associated person id. Supply person_id or organization_id.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Associated organization id. Supply person_id or organization_id.",
          "required": false
        },
        "value": {
          "type": "object",
          "description": "Lead monetary value object with amount and currency.",
          "required": false
        },
        "owner_id": {
          "type": "integer",
          "description": "Owner user id.",
          "required": false
        },
        "data": {
          "type": "object",
          "description": "Raw JSON body. Keys here win over convenience fields.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "update_lead": {
      "description": "Update a lead by UUID. Requires edit permission.",
      "properties": {
        "lead_id": {
          "type": "string",
          "description": "Lead UUID.",
          "required": true
        },
        "title": {
          "type": "string",
          "description": "Lead title.",
          "required": false
        },
        "value": {
          "type": "object",
          "description": "Lead monetary value object with amount and currency.",
          "required": false
        },
        "data": {
          "type": "object",
          "description": "Raw JSON body. Keys here win over convenience fields.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "delete_lead": {
      "description": "Delete a lead by UUID. Requires delete permission.",
      "properties": {
        "lead_id": {
          "type": "string",
          "description": "Lead UUID.",
          "required": true
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "search_leads": {
      "description": "Search leads by term.",
      "properties": {
        "term": {
          "type": "string",
          "description": "Search term.",
          "required": true
        },
        "fields": {
          "type": "array",
          "description": "Fields to search in.",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "exact_match": {
          "type": "boolean",
          "description": "Search for an exact phrase only.",
          "required": false
        },
        "include": {
          "type": "array",
          "description": "Public alias mapped to Pipedrive include_fields where supported.",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "limit": {
          "type": "integer",
          "description": "Page size from 1 to 500.",
          "required": false,
          "minimum": 1,
          "maximum": 500
        },
        "cursor": {
          "type": "string",
          "description": "Cursor for v2 pagination.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "convert_lead": {
      "description": "Convert a lead by UUID.",
      "properties": {
        "lead_id": {
          "type": "string",
          "description": "Lead UUID.",
          "required": true
        },
        "data": {
          "type": "object",
          "description": "Raw conversion body.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "list_notes": {
      "description": "List notes with optional record filters.",
      "properties": {
        "deal_id": {
          "type": "integer",
          "description": "Deal filter.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Person filter.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Public organization id; connector sends org_id where required.",
          "required": false
        },
        "lead_id": {
          "type": "string",
          "description": "Lead UUID filter.",
          "required": false
        },
        "user_id": {
          "type": "integer",
          "description": "User filter.",
          "required": false
        },
        "limit": {
          "type": "integer",
          "description": "Page size from 1 to 500.",
          "required": false,
          "minimum": 1,
          "maximum": 500
        },
        "start": {
          "type": "integer",
          "description": "Offset for v1 pagination.",
          "required": false,
          "minimum": 0
        },
        "sort_by": {
          "type": "string",
          "description": "Sort field name.",
          "required": false
        },
        "sort_direction": {
          "type": "string",
          "description": "Sort direction.",
          "required": false,
          "enum": [
            "asc",
            "desc"
          ]
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "get_note": {
      "description": "Fetch one note by id.",
      "properties": {
        "note_id": {
          "type": "integer",
          "description": "Note id.",
          "required": true
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "create_note": {
      "description": "Create a note linked to one record. Requires add permission.",
      "properties": {
        "content": {
          "type": "string",
          "description": "Note content.",
          "required": true
        },
        "deal_id": {
          "type": "integer",
          "description": "Associated deal id.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Associated person id.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Public organization id; connector sends org_id where required.",
          "required": false
        },
        "lead_id": {
          "type": "string",
          "description": "Associated lead UUID.",
          "required": false
        },
        "data": {
          "type": "object",
          "description": "Raw JSON body. Keys here win over convenience fields.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "update_note": {
      "description": "Update a note by id. Requires edit permission.",
      "properties": {
        "note_id": {
          "type": "integer",
          "description": "Note id.",
          "required": true
        },
        "content": {
          "type": "string",
          "description": "Note content.",
          "required": false
        },
        "data": {
          "type": "object",
          "description": "Raw JSON body. Keys here win over convenience fields.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "delete_note": {
      "description": "Delete a note by id. Requires delete permission.",
      "properties": {
        "note_id": {
          "type": "integer",
          "description": "Note id.",
          "required": true
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "list_pipelines": {
      "description": "List pipelines.",
      "properties": {
        "limit": {
          "type": "integer",
          "description": "Page size from 1 to 500.",
          "required": false,
          "minimum": 1,
          "maximum": 500
        },
        "cursor": {
          "type": "string",
          "description": "Cursor for pagination.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "get_pipeline": {
      "description": "Fetch one pipeline by id.",
      "properties": {
        "pipeline_id": {
          "type": "integer",
          "description": "Pipeline id.",
          "required": true
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "list_stages": {
      "description": "List stages, optionally filtered by pipeline_id.",
      "properties": {
        "pipeline_id": {
          "type": "integer",
          "description": "Pipeline filter.",
          "required": false
        },
        "limit": {
          "type": "integer",
          "description": "Page size from 1 to 500.",
          "required": false,
          "minimum": 1,
          "maximum": 500
        },
        "cursor": {
          "type": "string",
          "description": "Cursor for pagination.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "get_stage": {
      "description": "Fetch one stage by id.",
      "properties": {
        "stage_id": {
          "type": "integer",
          "description": "Stage id.",
          "required": true
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "item_search": {
      "description": "Search across Pipedrive item types by term.",
      "properties": {
        "term": {
          "type": "string",
          "description": "Search term.",
          "required": true
        },
        "item_types": {
          "type": "array",
          "description": "Item types to include.",
          "required": false,
          "items": {
            "type": "string",
            "enum": [
              "deal",
              "person",
              "organization",
              "product",
              "lead",
              "file",
              "activity",
              "project"
            ]
          }
        },
        "fields": {
          "type": "array",
          "description": "Fields to search in.",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "search_for_related_items": {
          "type": "boolean",
          "description": "Include related items in results.",
          "required": false
        },
        "exact_match": {
          "type": "boolean",
          "description": "Search for an exact phrase only.",
          "required": false
        },
        "limit": {
          "type": "integer",
          "description": "Page size from 1 to 500.",
          "required": false,
          "minimum": 1,
          "maximum": 500
        },
        "cursor": {
          "type": "string",
          "description": "Cursor for pagination.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "list_fields": {
      "description": "List field metadata for deals, persons, organizations, activities, or products.",
      "properties": {
        "module": {
          "type": "string",
          "description": "Module name.",
          "required": true,
          "enum": [
            "deals",
            "persons",
            "organizations",
            "activities",
            "products"
          ]
        },
        "limit": {
          "type": "integer",
          "description": "Page size from 1 to 500.",
          "required": false,
          "minimum": 1,
          "maximum": 500
        },
        "cursor": {
          "type": "string",
          "description": "Cursor for pagination.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "list_users": {
      "description": "List Pipedrive users.",
      "properties": {
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "list_files": {
      "description": "List files with optional record filters.",
      "properties": {
        "deal_id": {
          "type": "integer",
          "description": "Deal filter.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Person filter.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Public organization id; connector sends org_id where required.",
          "required": false
        },
        "activity_id": {
          "type": "integer",
          "description": "Activity filter.",
          "required": false
        },
        "lead_id": {
          "type": "string",
          "description": "Lead UUID filter.",
          "required": false
        },
        "product_id": {
          "type": "integer",
          "description": "Product filter.",
          "required": false
        },
        "limit": {
          "type": "integer",
          "description": "Page size from 1 to 500.",
          "required": false,
          "minimum": 1,
          "maximum": 500
        },
        "start": {
          "type": "integer",
          "description": "Offset for v1 pagination.",
          "required": false,
          "minimum": 0
        },
        "sort_by": {
          "type": "string",
          "description": "Sort field name.",
          "required": false
        },
        "sort_direction": {
          "type": "string",
          "description": "Sort direction.",
          "required": false,
          "enum": [
            "asc",
            "desc"
          ]
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "get_file": {
      "description": "Fetch Pipedrive file metadata by id.",
      "properties": {
        "pipedrive_file_id": {
          "type": "integer",
          "description": "Pipedrive file id.",
          "required": true
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "download_file": {
      "description": "Download a Pipedrive file into AgentPMT File Manager.",
      "properties": {
        "pipedrive_file_id": {
          "type": "integer",
          "description": "Pipedrive file id.",
          "required": true
        },
        "ingest_expiration_days": {
          "type": "integer",
          "description": "File Manager expiration days from 1 to 7.",
          "required": false,
          "minimum": 1,
          "maximum": 7
        },
        "attachment_expiration_minutes": {
          "type": "integer",
          "description": "Signed URL TTL minutes from 10 to 1440.",
          "required": false,
          "minimum": 10,
          "maximum": 1440
        }
      }
    },
    "upload_file": {
      "description": "Upload an AgentPMT File Manager file to Pipedrive as an attachment. Requires add permission.",
      "properties": {
        "file_id": {
          "type": "string",
          "description": "AgentPMT File Manager file id.",
          "required": true
        },
        "deal_id": {
          "type": "integer",
          "description": "Associate to deal id.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Associate to person id.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Public organization id; connector sends org_id where required.",
          "required": false
        },
        "activity_id": {
          "type": "integer",
          "description": "Associate to activity id.",
          "required": false
        },
        "lead_id": {
          "type": "string",
          "description": "Associate to lead UUID.",
          "required": false
        },
        "product_id": {
          "type": "integer",
          "description": "Associate to product id.",
          "required": false
        },
        "file_name_override": {
          "type": "string",
          "description": "Optional file name override.",
          "required": false
        }
      }
    },
    "link_remote_file": {
      "description": "Link a Google Drive file to a Pipedrive deal, person, or organization. Requires add permission plus an active Google Drive integration in Pipedrive.",
      "properties": {
        "remote_location": {
          "type": "string",
          "description": "Remote provider. Currently only googledrive is supported.",
          "required": true,
          "enum": [
            "googledrive"
          ]
        },
        "remote_id": {
          "type": "string",
          "description": "Google Drive remote file id visible to the connected Pipedrive Google Drive integration.",
          "required": true
        },
        "file_name_override": {
          "type": "string",
          "description": "Optional file title override.",
          "required": false
        },
        "deal_id": {
          "type": "integer",
          "description": "Associate to this deal id. Supply exactly one of deal_id, person_id, or organization_id.",
          "required": false
        },
        "person_id": {
          "type": "integer",
          "description": "Associate to this person id. Supply exactly one of deal_id, person_id, or organization_id.",
          "required": false
        },
        "organization_id": {
          "type": "integer",
          "description": "Associate to this organization id. Supply exactly one of deal_id, person_id, or organization_id.",
          "required": false
        }
      }
    },
    "update_file": {
      "description": "Rename or update a Pipedrive file description. Requires edit permission.",
      "properties": {
        "pipedrive_file_id": {
          "type": "integer",
          "description": "Pipedrive file id.",
          "required": true
        },
        "file_name_override": {
          "type": "string",
          "description": "New file name.",
          "required": false
        },
        "file_description": {
          "type": "string",
          "description": "New file description.",
          "required": false
        }
      }
    },
    "delete_file": {
      "description": "Delete a Pipedrive file. Requires delete permission.",
      "properties": {
        "pipedrive_file_id": {
          "type": "integer",
          "description": "Pipedrive file id.",
          "required": true
        }
      }
    },
    "list_webhooks": {
      "description": "List Pipedrive webhook subscriptions.",
      "properties": {
        "user_id": {
          "type": "integer",
          "description": "Filter webhooks by user id.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "create_webhook": {
      "description": "Subscribe an HTTPS URL to Pipedrive change events. Requires add permission.",
      "properties": {
        "subscription_url": {
          "type": "string",
          "description": "Publicly reachable HTTPS URL Pipedrive will POST events to.",
          "required": true
        },
        "event_action": {
          "type": "string",
          "description": "Trigger action.",
          "required": true,
          "enum": [
            "create",
            "change",
            "delete",
            "*"
          ]
        },
        "event_object": {
          "type": "string",
          "description": "Resource to watch.",
          "required": true,
          "enum": [
            "activity",
            "deal",
            "lead",
            "note",
            "organization",
            "person",
            "pipeline",
            "product",
            "stage",
            "user",
            "*"
          ]
        },
        "webhook_name": {
          "type": "string",
          "description": "Human-readable webhook name.",
          "required": false
        },
        "user_id": {
          "type": "integer",
          "description": "Owner user for the webhook.",
          "required": false
        },
        "webhook_version": {
          "type": "string",
          "description": "Payload version. Defaults to 2.0.",
          "required": false,
          "enum": [
            "1.0",
            "2.0"
          ]
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    },
    "delete_webhook": {
      "description": "Delete a Pipedrive webhook subscription. Requires delete permission.",
      "properties": {
        "webhook_id": {
          "type": "integer",
          "description": "Webhook id.",
          "required": true
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters that do not override connector-set parameters.",
          "required": false
        }
      }
    }
  }
}
```

### Usage Instructions

# Pipedrive

Manage deals, persons, organizations, activities, products, leads, notes, pipelines, stages, and file attachments in Pipedrive.

## Base rules

- Connection and access checks are handled by the platform.
- Writes require the matching permission scope: `add` for create, `edit` for update, `delete` for delete. Reads are allowed by default.
- `data` is a pass-through JSON body for writes. Convenience fields (`title`, `name`, `value`, `subject`, `content`) are merged underneath `data`; keys in `data` win.
- `options` is a pass-through query-param dict. It can only fill gaps — the dispatcher's params always win. It cannot change the URL or HTTP verb.
- Pagination: v2 actions use `cursor` + `limit` (max 500). v1 actions use `start` + `limit`. Responses expose `additional_data.next_cursor` (v2) or `additional_data.pagination` (v1).
- Every response is wrapped in `{"action": "...", "result": <raw Pipedrive body>}`.

## Public aliases

- `organization_id` is the public AgentPMT field. The connector maps it to Pipedrive `org_id` for deal, person, activity, notes, and files actions that require `org_id`. Lead and search actions that document `organization_id` keep that spelling.
- `include` is the public AgentPMT field for extra returned fields. The connector maps it to Pipedrive `include_fields`.
- Deal `value` can be sent as a number or as `{ "amount": 5000, "currency": "USD" }`. The object form is accepted for compatibility and normalized to numeric `value` plus `currency` for deal create/update. Lead `value` remains `{ "amount": 5000, "currency": "USD" }`.
- `data` wins over convenience fields. If raw `data` supplies `org_id`, `value`, or `currency`, that raw intent is preserved. Unsupported `organization_id` in a body is normalized to `org_id` only for actions that require `org_id`.

## Discovery flow

1. `who_am_i` — confirm connection, company, locale.
2. `list_fields` with `module` in `{deals, persons, organizations, activities, products}` — discover field names and hash keys for custom fields.
3. `list_pipelines` + `list_stages` — find `pipeline_id` / `stage_id`.
4. `search_records` or `item_search` — look up records by term.
5. Read → update → verify.

## Generic CRUD (deal / person / organization / activity / product)

All five core resources share a single set of six verbs and a `resource` parameter.

```json
{"action":"list_records","resource":"deal","limit":50,"pipeline_id":1,"status":"open"}
{"action":"get_record","resource":"deal","deal_id":42,"include":["products_count"]}
{"action":"create_record","resource":"deal","title":"Acme website","value":{"amount":5000,"currency":"USD"},"person_id":10}
{"action":"create_record","resource":"deal","title":"Acme website","value":5000,"data":{"currency":"USD"},"person_id":10,"organization_id":20}
{"action":"update_record","resource":"deal","deal_id":42,"data":{"stage_id":3,"status":"won"}}
{"action":"delete_record","resource":"deal","deal_id":42}
{"action":"search_records","resource":"deal","term":"Acme","fields":["title"],"limit":25}

{"action":"create_record","resource":"person","name":"Jane Doe","data":{"emails":[{"value":"jane@acme.com","primary":true}]}}
{"action":"search_records","resource":"person","term":"jane@acme.com","fields":["email"]}

{"action":"create_record","resource":"organization","name":"Acme Corp","data":{"address":"1 Main St"}}

{"action":"create_record","resource":"activity","subject":"Intro call","data":{"type":"call","due_date":"2026-05-01","due_time":"15:00","deal_id":42}}

{"action":"create_record","resource":"product","name":"Consulting hour","data":{"prices":[{"currency":"USD","price":250}]}}
```

Required primary field for `create_record` by resource:
- `deal` → `title`
- `person` / `organization` / `product` → `name`
- `activity` → `subject`

`search_records` is not supported for `activity` (use `list_records` with filters).

## Leads

`list_leads`, `get_lead`, `create_lead`, `update_lead`, `delete_lead` run on v1 (UUIDs). `search_leads` and `convert_lead` run on v2.

```json
{"action":"list_leads","limit":50,"owner_id":3}
{"action":"get_lead","lead_id":"a1b2c3d4-..."}
{"action":"create_lead","title":"Acme — inbound","person_id":10,"value":{"amount":1000,"currency":"USD"}}
{"action":"update_lead","lead_id":"a1b2c3d4-...","data":{"label_ids":["hot"]}}
{"action":"delete_lead","lead_id":"a1b2c3d4-..."}
{"action":"search_leads","term":"Acme"}
{"action":"convert_lead","lead_id":"a1b2c3d4-..."}
```

## Notes

```json
{"action":"list_notes","deal_id":42,"limit":50}
{"action":"get_note","note_id":123}
{"action":"create_note","content":"Called Jane — follow up Tuesday","deal_id":42}
{"action":"update_note","note_id":123,"content":"Updated summary"}
{"action":"delete_note","note_id":123}
```

## Pipelines & stages (read-only)

```json
{"action":"list_pipelines"}
{"action":"get_pipeline","pipeline_id":1}
{"action":"list_stages","pipeline_id":1}
{"action":"get_stage","stage_id":3}
```

## Global search & metadata

```json
{"action":"item_search","term":"Acme","item_types":["deal","person","organization"]}
{"action":"list_fields","module":"deals"}
{"action":"list_users"}
{"action":"who_am_i"}
```

## Files

File actions integrate with the AgentPMT File Manager. Upload bytes to File Manager first (via the file-management tool), then pass the resulting `file_id` here for `upload_file`. For `download_file`, Pipedrive-hosted bytes are pulled from Pipedrive and stored in File Manager under the caller's budget; the response returns the new File Manager `file_id` and a signed URL. Google Drive remote attachments created by `link_remote_file` are not Pipedrive-hosted bytes: use `get_file` or `list_files` to read `remote_id`, then use the Google Drive tool's `download_file_to_storage` action with that file id.

```json
{"action":"list_files","deal_id":42}
{"action":"get_file","pipedrive_file_id":7}
{"action":"download_file","pipedrive_file_id":7}
{"action":"upload_file","file_id":"<file-manager-file-id>","deal_id":42,"file_name_override":"proposal.pdf"}
{"action":"link_remote_file","remote_location":"googledrive","remote_id":"<drive-file-id>","deal_id":42}
{"action":"update_file","pipedrive_file_id":7,"file_name_override":"proposal-v2.pdf","file_description":"Signed version"}
{"action":"delete_file","pipedrive_file_id":7}
```

`upload_file` requires **exactly one** association id: `deal_id`, `person_id`, `organization_id`, `activity_id`, `lead_id`, or `product_id`.

`link_remote_file` uses Pipedrive's remote-file item contract and supports **exactly one** of `deal_id`, `person_id`, or `organization_id`.

## Webhooks

Subscribe an external `subscription_url` (n8n webhook, Zapier, your own server) to Pipedrive change events. Pipedrive POSTs to that URL when matching records are created, changed, or deleted.

- `event_action`: `create`, `change`, `delete`, or `*` (all).
- `event_object`: `activity`, `deal`, `lead`, `note`, `organization`, `person`, `pipeline`, `product`, `stage`, `user`, or `*`.
- Combine action + object for the event you want (e.g. `create` + `deal` fires on every new deal).
- `webhook_version` is `"2.0"` by default — prefer 2.0 for new subscriptions.

```json
{"action":"list_webhooks"}
{"action":"create_webhook","subscription_url":"<https-webhook-url>","event_action":"change","event_object":"deal","webhook_name":"deal-change-relay"}
{"action":"create_webhook","subscription_url":"<https-webhook-url>","event_action":"*","event_object":"lead"}
{"action":"delete_webhook","webhook_id":123}
```

`create_webhook` requires `add` permission. `delete_webhook` requires `delete` permission. `list_webhooks` is read-only.

## Response shape

Every call returns:
```json
{"action":"<action>","result":{"success":true,"data":..., "additional_data":...}}
```

`additional_data.next_cursor` (v2) / `additional_data.pagination.next_start` (v1) drive pagination.

### Additional Product Content

## Pipedrive on Autopilot

Connect your Pipedrive account and let your AI assistant handle the CRM busywork that slows your sales team down. Capture inbound leads, create contacts and organizations, build deals and move them through your pipeline, schedule follow-up calls, log notes, and attach proposals — all from a plain-language request. No copy-paste, no tab-switching, no stale pipeline.

### What you can do

1.  **Turn interest into pipeline.** Capture a lead the moment it lands, check for an existing contact so you don't create duplicates, and stand up a fully linked organization, person, and deal in a single step.
2.  **Keep deals moving.** Advance deals through stages, update values and owners, and mark deals won or lost — by name, not by hunting for record IDs.
3.  **Never drop a follow-up.** Schedule calls and meetings, log a note after every touch, and surface the deals that have gone quiet.
4.  **Find anything instantly.** Search deals, contacts, organizations, products, and leads — or run one global search across everything at once.
5.  **Attach the right documents.** Push proposals, contracts, and decks from File Manager straight onto a deal, link a Google Drive file, or pull existing CRM attachments back into File Manager for review.
6.  **Trigger downstream automation.** Subscribe your own webhook endpoints to deal, lead, and activity changes so the rest of your stack reacts in real time.
7.  **Report on demand.** Generate pipeline-hygiene snapshots, open-pipeline value, and stalled-deal lists whenever you ask.

### Example things to ask

1.  “A lead just came in from acme.com for 25 seats — create the org, contact, and deal, and book a discovery call Thursday.”
2.  “Show me every open deal over $10k with no activity in two weeks and book follow-ups for Monday.”
3.  “Move the Globex deal to Negotiation and attach the signed order form.”
4.  “Convert the hottest inbound lead into a deal and assign it to me.”
5.  “Notify our automation whenever any deal changes stage.”

### Built for real sales teams

It works with your existing pipelines, stages, custom fields, and record ownership. Your assistant discovers your field names and pipeline structure before it writes, so every update lands in exactly the right place — including your custom fields.

### You stay in control

You connect your own Pipedrive account and grant exactly the access you want. The connection is read-only by default; creating, editing, and deleting records are each separate permissions you choose to enable. Start with safe, read-only insights and turn on writes when you're ready — your assistant can never do more than you've allowed.

### Frequently Asked Questions

#### How do I connect this tool to an external agent?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

You can install the local MCP server by opening a terminal and running:

```
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

This will connect you to local agents like Claude Code, Windsurf, Grok Build, Cursor, etc.

Alternatively you can connect to the hosted version with this config block, no installation required:

```
{
  "mcpServers": {
    "agentpmt": {
      "type": "streamable-http",
      "url": "https://api.agentpmt.com/mcp",
      "headers": {
        "Authorization": "Bearer <AGENTPMT_BEARER_TOKEN>",
        "x-instance-metadata": "{\"client\":\"generic-mcp\",\"platform\":\"remote\"}"
      }
    }
  }
}
```

[View MCP Connection Instructions](/docs/mcp-reference/connection) for more details.

#### How does an external agent use this tool?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

After the external agent is connected to an Agent Group that can use this tool, paste this prompt into the agent:

> Use the AgentPMT-Tool-Search-and-Execution tool. First call action 'get\_instructions' so you know how to use the tool search interface. Then call action 'get\_schema' with tool\_id 69e5b48b106b61b0eb7cc3df ("Pipedrive"). After reading the schema and any returned instructions, tell me what this tool can do, what inputs it needs, and what you need from me before running it. Do not call action 'call\_tool' until I confirm the request and provide the required parameters.

The agent should fetch the tool schema first, collect the required parameters for your request, and then call the tool through AgentPMT.

#### Can it attach proposals and contracts to a deal?

- Page URL: https://www.agentpmt.com/faq#faq-6a2743588773e153162b7bcf
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a2743588773e153162b7bcf
- Tags: Product Specific

Yes. It can attach files from your AgentPMT File Manager directly to a deal, contact, or organization, link Google Drive files, and pull existing CRM attachments back into File Manager for review.

#### Can it handle both leads and deals?

- Page URL: https://www.agentpmt.com/faq#faq-6a2743578773e153162b7bce
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a2743578773e153162b7bce
- Tags: Product Specific

Yes. It manages your Leads Inbox and your deal pipeline, and can convert a qualified lead into a deal — carrying over the linked person, organization, and value.

#### Can it keep my pipeline clean and trigger other automations?

- Page URL: https://www.agentpmt.com/faq#faq-6a2743588773e153162b7bd0
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a2743588773e153162b7bd0
- Tags: Product Specific

Yes. Ask for a pipeline-hygiene report to surface stalled or aging deals, then book follow-ups and update stages in bulk. You can also subscribe webhooks so deal, lead, or activity changes instantly notify the rest of your stack.

#### Do I need a Pipedrive account, and how do I connect it?

- Page URL: https://www.agentpmt.com/faq#faq-6a2743578773e153162b7bca
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a2743578773e153162b7bca
- Tags: Product Specific

Yes. You connect your own Pipedrive account with a secure one-click authorization. Once connected, your assistant works inside your existing pipelines, stages, and custom fields — there is nothing to export, import, or reconfigure.

#### Does it work with my custom fields?

- Page URL: https://www.agentpmt.com/faq#faq-6a2743578773e153162b7bcd
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a2743578773e153162b7bcd
- Tags: Product Specific

Yes. The assistant can discover your custom field names and keys for deals, contacts, organizations, activities, and products, then read and write those fields just like the standard ones.

#### Is it safe to let an assistant edit my CRM?

- Page URL: https://www.agentpmt.com/faq#faq-6a2743578773e153162b7bcb
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a2743578773e153162b7bcb
- Tags: Product Specific

You decide exactly what it can do. Access is read-only by default, and creating, editing, and deleting records are separate permissions you choose to grant. Start with read-only insights and enable writes when you are comfortable — the assistant can never exceed the access you have granted.

#### What can I do with the Pipedrive connection?

- Page URL: https://www.agentpmt.com/faq#faq-6a2743578773e153162b7bc9
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a2743578773e153162b7bc9
- Tags: Product Specific

Your AI assistant can run your entire sales workflow in Pipedrive: capture and convert leads, create and update deals, contacts, and organizations, move deals through your pipeline stages, schedule calls and activities, log notes, search any record, attach proposals from File Manager, and subscribe webhooks so other tools react to CRM changes — all from plain-language requests.

#### Will it create duplicate contacts or deals?

- Page URL: https://www.agentpmt.com/faq#faq-6a2743578773e153162b7bcc
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a2743578773e153162b7bcc
- Tags: Product Specific

It searches before it creates. When you ask to add a lead or contact, the assistant first looks for an existing match by email or name, so it links to the right record instead of cluttering your CRM with duplicates.

### Dependencies

This product has no public dependency products.