pipedrive
Read deals, persons, organizations, activities and pipelines; create and update CRM records.
Should I use this
Quality & Safety
Findings (3)
- HIGH
- MEDIUMin pipedrive_list_deals
- MEDIUMin pipedrive_list_activities
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"pipedrive": {
"url": "https://pipedrive.usefulapi.io/mcp"
}
}
}Remote endpoints
https://pipedrive.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (19)
🟢pipedrive_list_deals(filter_id, owner_id, person_id, org_id, pipeline_id, ...)
List deals, optionally filtered by filter/owner/person/org/pipeline/stage/status and sorted. Pipedrive REST: GET /api/v2/deals.
Input Schema
{
"type": "object",
"properties": {
"filter_id": {
"description": "Filter by a saved filter id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner_id": {
"description": "Filter by owner (user) id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"person_id": {
"description": "Filter by linked person id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"org_id": {
"description": "Filter by linked organization id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"pipeline_id": {
"description": "Filter by pipeline id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"stage_id": {
"description": "Filter by stage id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"description": "Filter by deal status — 'open', 'won', 'lost' or 'deleted'.",
"type": "string",
"enum": [
"open",
"won",
"lost",
"deleted"
]
},
"sort_by": {
"description": "Field to sort by — 'id', 'update_time' or 'add_time'.",
"type": "string",
"enum": [
"id",
"update_time",
"add_time"
]
},
"sort_direction": {
"description": "Sort direction — 'asc' or 'desc'.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Max results to return (1–500, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"cursor": {
"description": "Opaque pagination cursor from a previous response's `next_cursor`.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_get_deal(id)
Get a single deal by its id. Pipedrive REST: GET /api/v2/deals/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Deal id (required)."
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_search_deals(term, fields, person_id, organization_id, status, ...)
Search deals by term across selected fields. Pipedrive REST: GET /api/v2/deals/search.
Input Schema
{
"type": "object",
"properties": {
"term": {
"type": "string",
"minLength": 2,
"description": "Search term (at least 2 characters, required)."
},
"fields": {
"description": "Comma-separated fields to search — any of 'custom_fields', 'notes', 'title'.",
"type": "string"
},
"person_id": {
"description": "Restrict to deals linked to this person id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"organization_id": {
"description": "Restrict to deals linked to this organization id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"description": "Restrict to deals with this status — 'open', 'won' or 'lost'.",
"type": "string",
"enum": [
"open",
"won",
"lost"
]
},
"exact_match": {
"description": "If true, only exact matches (case-insensitive) are returned.",
"type": "boolean"
},
"limit": {
"description": "Max results to return (1–500, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"cursor": {
"description": "Opaque pagination cursor from a previous response's `next_cursor`.",
"type": "string"
}
},
"required": [
"term"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_list_persons(filter_id, owner_id, org_id, sort_by, sort_direction, ...)
List persons (contacts), optionally filtered by filter/owner/org and sorted. Pipedrive REST: GET /api/v2/persons.
Input Schema
{
"type": "object",
"properties": {
"filter_id": {
"description": "Filter by a saved filter id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner_id": {
"description": "Filter by owner (user) id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"org_id": {
"description": "Filter by linked organization id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sort_by": {
"description": "Field to sort by — 'id', 'update_time' or 'add_time'.",
"type": "string",
"enum": [
"id",
"update_time",
"add_time"
]
},
"sort_direction": {
"description": "Sort direction — 'asc' or 'desc'.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Max results to return (1–500, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"cursor": {
"description": "Opaque pagination cursor from a previous response's `next_cursor`.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_get_person(id)
Get a single person (contact) by its id. Pipedrive REST: GET /api/v2/persons/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Person id (required)."
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_search_persons(term, fields, organization_id, exact_match, limit, ...)
Search persons (contacts) by term across selected fields. Pipedrive REST: GET /api/v2/persons/search.
Input Schema
{
"type": "object",
"properties": {
"term": {
"type": "string",
"minLength": 2,
"description": "Search term (at least 2 characters, required)."
},
"fields": {
"description": "Comma-separated fields to search — any of 'name', 'email', 'phone', 'notes', 'custom_fields'.",
"type": "string"
},
"organization_id": {
"description": "Restrict to persons linked to this organization id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"exact_match": {
"description": "If true, only exact matches (case-insensitive) are returned.",
"type": "boolean"
},
"limit": {
"description": "Max results to return (1–500, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"cursor": {
"description": "Opaque pagination cursor from a previous response's `next_cursor`.",
"type": "string"
}
},
"required": [
"term"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_list_organizations(filter_id, owner_id, sort_by, sort_direction, limit, ...)
List organizations, optionally filtered by filter/owner and sorted. Pipedrive REST: GET /api/v2/organizations.
Input Schema
{
"type": "object",
"properties": {
"filter_id": {
"description": "Filter by a saved filter id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner_id": {
"description": "Filter by owner (user) id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sort_by": {
"description": "Field to sort by — 'id', 'update_time' or 'add_time'.",
"type": "string",
"enum": [
"id",
"update_time",
"add_time"
]
},
"sort_direction": {
"description": "Sort direction — 'asc' or 'desc'.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Max results to return (1–500, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"cursor": {
"description": "Opaque pagination cursor from a previous response's `next_cursor`.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_get_organization(id)
Get a single organization by its id. Pipedrive REST: GET /api/v2/organizations/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Organization id (required)."
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_search_organizations(term, fields, exact_match, limit, cursor)
Search organizations by term across selected fields. Pipedrive REST: GET /api/v2/organizations/search.
Input Schema
{
"type": "object",
"properties": {
"term": {
"type": "string",
"minLength": 2,
"description": "Search term (at least 2 characters, required)."
},
"fields": {
"description": "Comma-separated fields to search — any of 'address', 'custom_fields', 'name', 'notes'.",
"type": "string"
},
"exact_match": {
"description": "If true, only exact matches (case-insensitive) are returned.",
"type": "boolean"
},
"limit": {
"description": "Max results to return (1–500, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"cursor": {
"description": "Opaque pagination cursor from a previous response's `next_cursor`.",
"type": "string"
}
},
"required": [
"term"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_list_activities(filter_id, owner_id, deal_id, person_id, org_id, ...)
List activities (tasks/events), optionally filtered by filter/owner/deal/person/org/done/updated_since. Pipedrive REST: GET /api/v2/activities.
Input Schema
{
"type": "object",
"properties": {
"filter_id": {
"description": "Filter by a saved filter id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner_id": {
"description": "Filter by owner (user) id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"deal_id": {
"description": "Filter by linked deal id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"person_id": {
"description": "Filter by linked person id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"org_id": {
"description": "Filter by linked organization id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"done": {
"description": "Filter by completion — true for done, false for not done.",
"type": "boolean"
},
"updated_since": {
"description": "Only activities updated after this RFC 3339 timestamp, e.g. '2024-01-01T00:00:00Z'.",
"type": "string"
},
"limit": {
"description": "Max results to return (1–500, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"cursor": {
"description": "Opaque pagination cursor from a previous response's `next_cursor`.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_list_pipelines(sort_by, sort_direction, limit, cursor)
List all pipelines. Pipedrive REST: GET /api/v2/pipelines.
Input Schema
{
"type": "object",
"properties": {
"sort_by": {
"description": "Field to sort by — 'id', 'update_time' or 'add_time'.",
"type": "string",
"enum": [
"id",
"update_time",
"add_time"
]
},
"sort_direction": {
"description": "Sort direction — 'asc' or 'desc'.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Max results to return (1–500, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"cursor": {
"description": "Opaque pagination cursor from a previous response's `next_cursor`.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_list_stages(pipeline_id, limit, cursor)
List stages, optionally restricted to a single pipeline. Pipedrive REST: GET /api/v2/stages.
Input Schema
{
"type": "object",
"properties": {
"pipeline_id": {
"description": "Restrict to stages of this pipeline id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"limit": {
"description": "Max results to return (1–500, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"cursor": {
"description": "Opaque pagination cursor from a previous response's `next_cursor`.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_search_items(term, item_types, fields, search_for_related_items, exact_match, ...)
Global search across multiple item types (deals, persons, organizations, products, leads, files, etc.). Pipedrive REST: GET /api/v2/itemSearch.
Input Schema
{
"type": "object",
"properties": {
"term": {
"type": "string",
"minLength": 2,
"description": "Search term (at least 2 characters, required)."
},
"item_types": {
"description": "Comma-separated item types to search — any of 'deal', 'person', 'organization', 'product', 'lead', 'file', 'mail_attachment', 'project'.",
"type": "string"
},
"fields": {
"description": "Comma-separated fields to search within (depends on item types).",
"type": "string"
},
"search_for_related_items": {
"description": "If true, also return items related to the matches (e.g. deals of a matched person).",
"type": "boolean"
},
"exact_match": {
"description": "If true, only exact matches (case-insensitive) are returned.",
"type": "boolean"
},
"limit": {
"description": "Max results to return (1–500, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"cursor": {
"description": "Opaque pagination cursor from a previous response's `next_cursor`.",
"type": "string"
}
},
"required": [
"term"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_get_current_user
Get the authenticated user's profile (name, email, company, locale, timezone). Pipedrive REST: GET /api/v1/users/me.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pipedrive_list_notes(user_id, deal_id, person_id, org_id, lead_id, ...)
List notes, optionally filtered by user/deal/person/org/lead. Uses v1 (v2 has no notes endpoint) with start+limit pagination. Pipedrive REST: GET /api/v1/notes.
Input Schema
{
"type": "object",
"properties": {
"user_id": {
"description": "Filter by the note author (user) id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"deal_id": {
"description": "Filter by linked deal id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"person_id": {
"description": "Filter by linked person id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"org_id": {
"description": "Filter by linked organization id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"lead_id": {
"description": "Filter by linked lead id (a UUID string).",
"type": "string"
},
"sort": {
"description": "Sort expression, e.g. 'add_time DESC'.",
"type": "string"
},
"start": {
"description": "Pagination offset (v1 start; default 0).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"limit": {
"description": "Max results to return (v1 limit).",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴pipedrive_create_deal(title, value, currency, person_id, org_id, ...)
Create a new deal. `title` is required; link it to a person/org/pipeline/stage/owner as needed. Pipedrive REST: POST /api/v2/deals.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"description": "Deal title (required)."
},
"value": {
"description": "Deal monetary value.",
"type": "number"
},
"currency": {
"description": "Currency code for `value`, e.g. 'USD'.",
"type": "string"
},
"person_id": {
"description": "Link to this person id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"org_id": {
"description": "Link to this organization id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"pipeline_id": {
"description": "Place in this pipeline id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"stage_id": {
"description": "Place in this stage id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner_id": {
"description": "Assign to this owner (user) id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"description": "Deal status — 'open' (default), 'won' or 'lost'.",
"type": "string",
"enum": [
"open",
"won",
"lost"
]
},
"expected_close_date": {
"description": "Expected close date, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"visible_to": {
"description": "Visibility group id (Pipedrive visibility setting).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"title"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴pipedrive_create_person(name, owner_id, org_id, email, phone, ...)
Create a new person (contact). `name` is required; `email`/`phone` are convenience strings mapped to Pipedrive's structured emails/phones arrays. Pipedrive REST: POST /api/v2/persons.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Person full name (required)."
},
"owner_id": {
"description": "Assign to this owner (user) id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"org_id": {
"description": "Link to this organization id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"email": {
"description": "Primary email address (mapped to the emails array).",
"type": "string"
},
"phone": {
"description": "Primary phone number (mapped to the phones array).",
"type": "string"
},
"visible_to": {
"description": "Visibility group id (Pipedrive visibility setting).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"name"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴pipedrive_create_activity(subject, type, due_date, due_time, duration, ...)
Create a new activity (task/event). `subject` is required; link it to a deal/person/org and set type/date/time as needed. Pipedrive REST: POST /api/v2/activities.
Input Schema
{
"type": "object",
"properties": {
"subject": {
"type": "string",
"minLength": 1,
"description": "Activity subject/title (required)."
},
"type": {
"description": "Activity type key, e.g. 'call', 'meeting', 'task', 'email'.",
"type": "string"
},
"due_date": {
"description": "Due date, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"due_time": {
"description": "Due time, HH:MM (24h).",
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"duration": {
"description": "Duration, HH:MM.",
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"deal_id": {
"description": "Link to this deal id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"person_id": {
"description": "Link to this person id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"org_id": {
"description": "Link to this organization id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner_id": {
"description": "Assign to this owner (user) id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"done": {
"description": "Whether the activity is already marked done.",
"type": "boolean"
},
"note": {
"description": "Free-text note attached to the activity.",
"type": "string"
}
},
"required": [
"subject"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴pipedrive_add_note(content, deal_id, person_id, org_id, lead_id)
Add a note, linked to at least one of a deal/person/organization/lead. `content` is required (HTML or plain text). Uses v1 (v2 has no notes endpoint). Pipedrive REST: POST /api/v1/notes.
Input Schema
{
"type": "object",
"properties": {
"content": {
"type": "string",
"minLength": 1,
"description": "Note body — HTML or plain text (required)."
},
"deal_id": {
"description": "Attach to this deal id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"person_id": {
"description": "Attach to this person id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"org_id": {
"description": "Attach to this organization id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"lead_id": {
"description": "Attach to this lead id (a UUID string).",
"type": "string"
}
},
"required": [
"content"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Recommended Prompts
pipedrive_search_dealspipedrive_search_dealspipedrive_get_dealpipedrive_get_dealpipedrive_list_dealsCommunity
Evidence