# io.usefulapi/pipedrive (remote · pipedrive.usefulapi.io)

Read deals, persons, organizations, activities and pipelines; create and update CRM records.

- Trust score: 69/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `pipedrive.usefulapi.io`: 69/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-pipedrive/pipedrive.md), [page](https://verifymcp.io/servers/io-usefulapi-pipedrive/pipedrive)

## Channel facts

- Endpoint: `https://pipedrive.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 70/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2713 tokens (~142/item across 19 items; 19 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http io-usefulapi-pipedrive https://pipedrive.usefulapi.io/mcp
```

### Codex

```toml
[mcp_servers.io-usefulapi-pipedrive]
url = "https://pipedrive.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-pipedrive": {
      "type": "remote",
      "url": "https://pipedrive.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-pipedrive --url https://pipedrive.usefulapi.io/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-pipedrive:
    url: "https://pipedrive.usefulapi.io/mcp"
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-pipedrive": {
      "type": "http",
      "url": "https://pipedrive.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 69, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-08-02 (score 68, +50)

- [security improvement] Authorization: unverified → pass
- [security improvement] Transport: fail → pass
- [security] First check of Authorization: partial
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: excellent
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 100
- [functional] First check of Schema quality: fail

### 2026-08-01 (score 18)

First indexed and scored.

## MCP tools (19)

### `pipedrive_list_deals` (~226 tokens)

List deals

List deals, optionally filtered by filter/owner/person/org/pipeline/stage/status and sorted. Pipedrive REST: GET /api/v2/deals.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response's `next_cursor`.
- `filter_id` (integer): Filter by a saved filter id.
- `limit` (integer): Max results to return (1–500, default 100).
- `org_id` (integer): Filter by linked organization id.
- `owner_id` (integer): Filter by owner (user) id.
- `person_id` (integer): Filter by linked person id.
- `pipeline_id` (integer): Filter by pipeline id.
- `sort_by` (string): Field to sort by — 'id', 'update_time' or 'add_time'.
- `sort_direction` (string): Sort direction — 'asc' or 'desc'.
- `stage_id` (integer): Filter by stage id.
- `status` (string): Filter by deal status — 'open', 'won', 'lost' or 'deleted'.

### `pipedrive_get_deal` (~46 tokens)

Get deal

Get a single deal by its id. Pipedrive REST: GET /api/v2/deals/{id}.

Input parameters:

- `id` (integer, required): Deal id (required).

### `pipedrive_search_deals` (~193 tokens)

Search deals

Search deals by term across selected fields. Pipedrive REST: GET /api/v2/deals/search.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response's `next_cursor`.
- `exact_match` (boolean): If true, only exact matches (case-insensitive) are returned.
- `fields` (string): Comma-separated fields to search — any of 'custom_fields', 'notes', 'title'.
- `limit` (integer): Max results to return (1–500, default 100).
- `organization_id` (integer): Restrict to deals linked to this organization id.
- `person_id` (integer): Restrict to deals linked to this person id.
- `status` (string): Restrict to deals with this status — 'open', 'won' or 'lost'.
- `term` (string, required): Search term (at least 2 characters, required).

### `pipedrive_list_persons` (~161 tokens)

List persons

List persons (contacts), optionally filtered by filter/owner/org and sorted. Pipedrive REST: GET /api/v2/persons.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response's `next_cursor`.
- `filter_id` (integer): Filter by a saved filter id.
- `limit` (integer): Max results to return (1–500, default 100).
- `org_id` (integer): Filter by linked organization id.
- `owner_id` (integer): Filter by owner (user) id.
- `sort_by` (string): Field to sort by — 'id', 'update_time' or 'add_time'.
- `sort_direction` (string): Sort direction — 'asc' or 'desc'.

### `pipedrive_get_person` (~48 tokens)

Get person

Get a single person (contact) by its id. Pipedrive REST: GET /api/v2/persons/{id}.

Input parameters:

- `id` (integer, required): Person id (required).

### `pipedrive_search_persons` (~161 tokens)

Search persons

Search persons (contacts) by term across selected fields. Pipedrive REST: GET /api/v2/persons/search.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response's `next_cursor`.
- `exact_match` (boolean): If true, only exact matches (case-insensitive) are returned.
- `fields` (string): Comma-separated fields to search — any of 'name', 'email', 'phone', 'notes', 'custom_fields'.
- `limit` (integer): Max results to return (1–500, default 100).
- `organization_id` (integer): Restrict to persons linked to this organization id.
- `term` (string, required): Search term (at least 2 characters, required).

### `pipedrive_list_organizations` (~145 tokens)

List organizations

List organizations, optionally filtered by filter/owner and sorted. Pipedrive REST: GET /api/v2/organizations.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response's `next_cursor`.
- `filter_id` (integer): Filter by a saved filter id.
- `limit` (integer): Max results to return (1–500, default 100).
- `owner_id` (integer): Filter by owner (user) id.
- `sort_by` (string): Field to sort by — 'id', 'update_time' or 'add_time'.
- `sort_direction` (string): Sort direction — 'asc' or 'desc'.

### `pipedrive_get_organization` (~46 tokens)

Get organization

Get a single organization by its id. Pipedrive REST: GET /api/v2/organizations/{id}.

Input parameters:

- `id` (integer, required): Organization id (required).

### `pipedrive_search_organizations` (~138 tokens)

Search organizations

Search organizations by term across selected fields. Pipedrive REST: GET /api/v2/organizations/search.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response's `next_cursor`.
- `exact_match` (boolean): If true, only exact matches (case-insensitive) are returned.
- `fields` (string): Comma-separated fields to search — any of 'address', 'custom_fields', 'name', 'notes'.
- `limit` (integer): Max results to return (1–500, default 100).
- `term` (string, required): Search term (at least 2 characters, required).

### `pipedrive_list_activities` (~208 tokens)

List activities

List activities (tasks/events), optionally filtered by filter/owner/deal/person/org/done/updated_since. Pipedrive REST: GET /api/v2/activities.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response's `next_cursor`.
- `deal_id` (integer): Filter by linked deal id.
- `done` (boolean): Filter by completion — true for done, false for not done.
- `filter_id` (integer): Filter by a saved filter id.
- `limit` (integer): Max results to return (1–500, default 100).
- `org_id` (integer): Filter by linked organization id.
- `owner_id` (integer): Filter by owner (user) id.
- `person_id` (integer): Filter by linked person id.
- `updated_since` (string): Only activities updated after this RFC 3339 timestamp, e.g. '2024-01-01T00:00:00Z'.

### `pipedrive_list_pipelines` (~108 tokens)

List pipelines

List all pipelines. Pipedrive REST: GET /api/v2/pipelines.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response's `next_cursor`.
- `limit` (integer): Max results to return (1–500, default 100).
- `sort_by` (string): Field to sort by — 'id', 'update_time' or 'add_time'.
- `sort_direction` (string): Sort direction — 'asc' or 'desc'.

### `pipedrive_list_stages` (~89 tokens)

List stages

List stages, optionally restricted to a single pipeline. Pipedrive REST: GET /api/v2/stages.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response's `next_cursor`.
- `limit` (integer): Max results to return (1–500, default 100).
- `pipeline_id` (integer): Restrict to stages of this pipeline id.

### `pipedrive_search_items` (~212 tokens)

Search items

Global search across multiple item types (deals, persons, organizations, products, leads, files, etc.). Pipedrive REST: GET /api/v2/itemSearch.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a previous response's `next_cursor`.
- `exact_match` (boolean): If true, only exact matches (case-insensitive) are returned.
- `fields` (string): Comma-separated fields to search within (depends on item types).
- `item_types` (string): Comma-separated item types to search — any of 'deal', 'person', 'organization', 'product', 'lead', 'file', 'mail_attachment', 'project'.
- `limit` (integer): Max results to return (1–500, default 100).
- `search_for_related_items` (boolean): If true, also return items related to the matches (e.g. deals of a matched person).
- `term` (string, required): Search term (at least 2 characters, required).

### `pipedrive_get_current_user` (~41 tokens)

Get current user

Get the authenticated user's profile (name, email, company, locale, timezone). Pipedrive REST: GET /api/v1/users/me.

### `pipedrive_list_notes` (~177 tokens)

List notes

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 parameters:

- `deal_id` (integer): Filter by linked deal id.
- `lead_id` (string): Filter by linked lead id (a UUID string).
- `limit` (integer): Max results to return (v1 limit).
- `org_id` (integer): Filter by linked organization id.
- `person_id` (integer): Filter by linked person id.
- `sort` (string): Sort expression, e.g. 'add_time DESC'.
- `start` (integer): Pagination offset (v1 start; default 0).
- `user_id` (integer): Filter by the note author (user) id.

### `pipedrive_create_deal` (~213 tokens)

Create deal

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 parameters:

- `currency` (string): Currency code for `value`, e.g. 'USD'.
- `expected_close_date` (string): Expected close date, yyyy-mm-dd.
- `org_id` (integer): Link to this organization id.
- `owner_id` (integer): Assign to this owner (user) id.
- `person_id` (integer): Link to this person id.
- `pipeline_id` (integer): Place in this pipeline id.
- `stage_id` (integer): Place in this stage id.
- `status` (string): Deal status — 'open' (default), 'won' or 'lost'.
- `title` (string, required): Deal title (required).
- `value` (number): Deal monetary value.
- `visible_to` (integer): Visibility group id (Pipedrive visibility setting).

### `pipedrive_create_person` (~149 tokens)

Create person

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 parameters:

- `email` (string): Primary email address (mapped to the emails array).
- `name` (string, required): Person full name (required).
- `org_id` (integer): Link to this organization id.
- `owner_id` (integer): Assign to this owner (user) id.
- `phone` (string): Primary phone number (mapped to the phones array).
- `visible_to` (integer): Visibility group id (Pipedrive visibility setting).

### `pipedrive_create_activity` (~216 tokens)

Create activity

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 parameters:

- `deal_id` (integer): Link to this deal id.
- `done` (boolean): Whether the activity is already marked done.
- `due_date` (string): Due date, yyyy-mm-dd.
- `due_time` (string): Due time, HH:MM (24h).
- `duration` (string): Duration, HH:MM.
- `note` (string): Free-text note attached to the activity.
- `org_id` (integer): Link to this organization id.
- `owner_id` (integer): Assign to this owner (user) id.
- `person_id` (integer): Link to this person id.
- `subject` (string, required): Activity subject/title (required).
- `type` (string): Activity type key, e.g. 'call', 'meeting', 'task', 'email'.

### `pipedrive_add_note` (~136 tokens)

Add note

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 parameters:

- `content` (string, required): Note body — HTML or plain text (required).
- `deal_id` (integer): Attach to this deal id.
- `lead_id` (string): Attach to this lead id (a UUID string).
- `org_id` (integer): Attach to this organization id.
- `person_id` (integer): Attach to this person id.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-pipedrive/pipedrive#diagnostics

## Score history

- 2026-08-03: 69
- 2026-08-02: 68
- 2026-08-01: 18

## Links

- Remote endpoint: https://pipedrive.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-pipedrive/pipedrive/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-pipedrive/pipedrive/changelog.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-pipedrive/pipedrive
