Announcing CIMD support for MCP Client registration
Learn more

Which Should Your Agent Use: Pipedrive MCP or API?

Kuntal Banerjee
Founding Engineer

TL;DR

  • Pipedrive MCP and the Pipedrive API overlap on core CRUD but not on surface area. Pipedrive's native MCP server exposes a focused set of about 32 tools; the REST API covers the full CRM, including products, files, saved filters, goals, webhooks, followers, and pipeline analytics that the MCP server does not.
  • The MCP path is OAuth-only and consent-driven. The direct API supports both OAuth 2.0 and a personal API token, and the API token is what makes headless, background execution possible.
  • Pipedrive's MCP is request/response inside an AI assistant. It has no triggers, and nothing runs while the conversation is closed; event-driven and scheduled agents belong on the API.
  • For multi-tenant B2B agents, neither path removes per-user credential isolation. MCP hands you a token per user; the API hands you a credential per user. Storage, rotation, and revocation are yours either way.
  • Scalekit ships connectors for both the Pipedrive REST API and the Pipedrive vendor MCP, and handles the OAuth flow, token vault, and per-user tool scoping, so the MCP-versus-API decision does not change your auth infrastructure.

Your agent needs to read and write Pipedrive. As of mid-2026 there are two ways to give it that access, and they are not the same object. Pipedrive shipped a native Model Context Protocol (MCP) server in June 2026, and it has offered a mature REST API for years. They differ on what your agent can actually do, on the auth path each one puts you on, and on how much operational surface area you own in production. This article is the decision framework for senior engineers building production Pipedrive agents, plus the exact code to wire either path up cleanly.

What Pipedrive MCP and the Pipedrive API actually are

Both give an agent access to the same CRM data. They differ in how that access is packaged, authorized, and maintained. The MCP server is a newer, higher-level surface; the REST API is the full, versioned platform underneath it.

Pipedrive MCP: the native server

Pipedrive launched its native MCP server on June 30, 2026, and it is available on every Pipedrive plan. It is hosted and remote, built and maintained by Pipedrive, and an agent connects to it through a secure OAuth login with no code, middleware, or developer setup required.

The server respects the connecting user's existing Pipedrive permissions, and every action it takes is written to the Pipedrive change log for auditability. Usage draws against per-plan token limits. You can read the details on the official Pipedrive MCP server page.

The important structural fact: MCP here is a request/response surface inside an AI assistant. It has no triggers, and nothing runs when the conversation is closed. It is a doorway, not a background worker.

Pipedrive API: the full REST surface

The Pipedrive REST API is the complete platform. It exposes deals, persons, organizations, leads, activities, notes, products and deal line items, files, saved filters, goals, users, webhooks, followers, participants, and pipeline analytics. The full reference lives on the Pipedrive Developer Hub.

Authentication has two paths. A personal API token is a static string passed in the x-api-token header; it is tied to a single user and company, and each user can have only one active token at a time. OAuth 2.0 is the path for Marketplace apps and issues scoped access_token and refresh_token pairs.

Two production realities shape any Pipedrive API integration. The API is split across v1 and v2, with v2 out of beta since 2025 but not yet covering every resource; leads, for example, remained v1-only into 2026. Rate limiting is token-based rather than a simple requests-per-second cap, and custom fields are addressed by 40-character hash keys rather than human-readable names.

Comparing them where it matters for agents

The comparison that matters is not "which has more endpoints." It is which path gives your specific agent the right capabilities, the right auth model, and the lowest operational surface area. Four dimensions decide it.

What your agent can actually do

The MCP server is deliberately narrow. It covers search, retrieval, and record management for the core sales objects, plus lead-to-deal conversion, which reads cleanly as natural-language actions. The REST API covers everything else the platform can do.

The gap is real and specific. The table below maps the agent-relevant actions across both surfaces. Full means first-class support, Limited means partial or read-only, and None means the surface does not expose it.

Capability (agent action)
Pipedrive MCP
Pipedrive API
Deal, person, organization CRUD
Full
Full
Search deals, persons, organizations, leads
Full
Full
Lead creation and lead-to-deal conversion
Full
Full
Activities and notes
Full
Full
Pipeline and stage creation or editing
Limited
Full
Pipeline analytics (conversion, movement stats)
None
Full
Products and deal line items
None
Full
Files (upload, download, attach)
None
Full
Saved filters, goals, user management
None
Full
Webhooks (event subscriptions)
None
Full
Followers and deal participants
None
Full
Custom field discovery (field keys and hashes)
Limited
Full

The pattern is consistent: if your agent only needs to find records, create them, and move deals along, the MCP surface is enough. The moment it needs line items, files, analytics, or webhooks, you are on the API.

The auth path each one puts you on

MCP is OAuth exclusively. Connecting triggers a browser-based consent flow, and the agent acts with a token bound to the consenting user. That is the right model for an interactive assistant where a human is present to authorize.

The API adds a second option. Alongside OAuth 2.0, the personal API token lets an agent authenticate without a browser round-trip, which is what makes headless and background execution possible. That flexibility is also a liability: an API token is tied to one user and grants access to all of that user's data, so it is a broad, long-lived credential to hold.

Here is the structural point that holds on both paths. In a multi-tenant B2B agent, every user has their own Pipedrive credential. MCP's OAuth flow gives you a token per user; the API gives you a credential per user. Neither path solves storage, rotation, or revocation. Those are infrastructure problems regardless of which surface you pick.

What you own in production

The MCP server manages tool schemas, endpoint normalization, and some of the request shaping for you. What you still own is the part that breaks at 3am: token storage, refresh, revocation, and tenant isolation across every connected user.

With the direct API you own more. You own schema definitions for every tool your agent exposes, error handling, retries against token-based rate limits, the v1-to-v2 split, the 40-character custom-field hash mapping, and the full token lifecycle. The upside is total control; the cost is a maintenance obligation that runs parallel to your actual product.

The maintenance trajectories differ too. MCP schemas change when Pipedrive updates the server, and your agent inherits those changes without a code deploy. API contracts are versioned, so you migrate on your own schedule but you also carry the migration work.

When to use MCP, when to use the API

Neither path is universally correct. Match the path to the agent.

Use Pipedrive MCP when:

  • You are building an interactive assistant where a user is present to authorize and to read results in a chat.
  • The workload is core CRM: searching deals and contacts, creating records, converting leads, moving deals through stages.
  • You want the provider to own tool schemas and to normalize the surface for you.
  • Speed to first working agent matters more than deterministic control.

Use the Pipedrive API when:

  • The agent runs headless or on a schedule, with no human in the loop to consent per session.
  • You need capabilities the MCP server does not expose: products and line items, files, saved filters, goals, user management, followers, or pipeline analytics.
  • You need webhooks so the agent reacts to CRM events instead of polling.
  • You are building a deterministic pipeline where every step and its inputs are fixed, not chosen at runtime by the model.

The credential problem that exists on both paths

Both surfaces hand your agent a credential per user. Neither hands you a vault, a rotation policy, or a revocation flow. In a multi-tenant agent, that is not one credential; it is N credentials, one for every user who ever connected Pipedrive.

The problem is identical whether you chose MCP or the API. The token type differs — an OAuth token on one path and an OAuth token or API token on the other — but the infrastructure required is the same: encrypted per-tenant storage, proactive refresh, and event-driven revocation. A naive "store the token in a row and read it back" approach works in demos and does not survive production scale, because tokens expire mid-workflow, users revoke consent without telling your agent, and over-scoped credentials accumulate quietly until an audit surfaces them.

This is where Scalekit's Pipedrive connectors fit. Scalekit handles the OAuth flow, token vault, and rotation for both the REST API and the vendor MCP, so the MCP-versus-API decision does not change your auth infrastructure. Credentials never touch the agent runtime; the agent executes against scoped identifiers instead of raw tokens.

Building Pipedrive agents with Scalekit

Scalekit exposes both surfaces as connectors, so you can pick per agent without changing how auth works. The Pipedrive REST connector ships 105 prebuilt tools over the full API using OAuth 2.0, and the Pipedrive MCP connector wraps Pipedrive's native server — about 32 tools — with OAuth 2.1 and Dynamic Client Registration (DCR).

Two connectors, one auth model

The only thing that changes between the two paths is the connection_name you pass. For the REST surface, use pipedrive; for the vendor MCP, use pipedrivemcp. The value must match the connection you configured in the Scalekit dashboard exactly, including case; a mismatched connection name is the single most common integration error.

Prebuilt tools remove the hidden tax of writing and maintaining tool schemas per connector. Every connector you build by hand is a connector you now maintain across API versions and model upgrades. Scalekit's tools ship as LLM-ready schemas tested against the live Pipedrive API, so the team builds the agent, not the tooling. Browse the full setup for either surface on the Scalekit AgentKit SDK docs.

Authorize the user and scope the tools

Start by making sure the current user has an active connected account. If they do not, send them through the OAuth consent link. This is the same pattern for both connectors.

import os from scalekit.client import ScalekitClient from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage, ToolMessage scalekit = ScalekitClient( env_url=os.getenv("SCALEKIT_ENV_URL"), client_id=os.getenv("SCALEKIT_CLIENT_ID"), client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"), ) actions = scalekit.actions # connection_name must match the connection configured in the Scalekit dashboard connection_name = "pipedrive" identifier = "user_123" account = actions.get_or_create_connected_account( connection_name=connection_name, identifier=identifier, ) if account.connected_account.status != "ACTIVE": link = actions.get_authorization_link( connection_name=connection_name, identifier=identifier, ) print("Authorize Pipedrive:", link.link) input("Press Enter after authorizing...")

With an active connected account, retrieve the tools that account is authorized to call. This is not a flat connector catalog; it is the scoped surface for this specific user, derived from what they individually authorized.

tools = actions.langchain.get_tools( identifier=identifier, connection_names=[connection_name], page_size=100, # Pipedrive exposes 100+ tools; raise the page size so none are dropped ) tool_map = {t.name: t for t in tools}

Handing an LLM the full catalog degrades tool selection and burns tokens before the agent does any work. A scoped surface is both an accuracy lever and a cost lever: the agent sees only what this user can do, which means what the user cannot do, the agent cannot do either.

Run the agent loop

Bind the scoped tools to your model and run the standard tool-calling loop. Scalekit returns native LangChain StructuredTool objects, so there is no schema reshaping.

llm = ChatOpenAI(model="gpt-4o").bind_tools(tools) messages = [HumanMessage( "Find open deals over $10k in the Enterprise pipeline that have not " "moved in two weeks, and add a follow-up activity to each." )] while True: response = llm.invoke(messages) messages.append(response) if not response.tool_calls: print(response.content) break for tc in response.tool_calls: result = tool_map[tc["name"]].invoke(tc["args"]) messages.append(ToolMessage(content=str(result), tool_call_id=tc["id"]))

For a deterministic pipeline where you do not want the model choosing tools, call one directly with execute_tool. The tool name comes from the connector's tool list.

result = actions.execute_tool( tool_name="pipedrive_deals_search", tool_input={"term": "Acme", "status": "open"}, connection_name="pipedrive", identifier="user_123", ) print(result)

Switching to the vendor MCP is a one-line change

To target Pipedrive's native MCP server instead of the REST surface, change the connector and the tool name. Here it is in TypeScript against the pipedrivemcp connection.

import { ScalekitClient } from '@scalekit-sdk/node' import 'dotenv/config' const scalekit = new ScalekitClient( process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET, ) const actions = scalekit.actions // 'pipedrivemcp' targets Pipedrive's native MCP server; 'pipedrive' targets the REST API const connector = 'pipedrivemcp' const identifier = 'user_123' const result = await actions.executeTool({ connector, identifier, toolName: 'pipedrivemcp_searchdeals', toolInput: { term: 'Acme', status: 'open' }, }) console.log(result)

Per-user audit logs for every tool call

Because every execute_tool call runs against a specific connected account, each downstream action is attributable to the user it acted for. That gives you per-user agent auth logs of exactly what the agent did in Pipedrive, which is the observability enterprise security review asks for and which a shared service account cannot provide.

Multi-tenant and multi-tool with Virtual MCP

A standard MCP server exposes every tool it has, and a shared credential gives every user the same surface. For a multi-tenant agent, that is both a security failure and an accuracy failure. Scalekit's Virtual MCP servers fix both: you declare exactly which connections and tools an agent role can see, and each run receives a short-lived session token scoped to one user's connected accounts.

One server definition serves all users. You configure it once per agent role, and before each run you mint a token bound to the current user; the endpoint is static, the identity is not. That is what makes a Pipedrive agent that also touches Slack or a calendar safe to run across tenants without deploying a server per customer.

from langchain_mcp_adapters.client import MultiServerMCPClient # mcp_url is your Scalekit Virtual MCP endpoint; session_token is minted per user per run async with MultiServerMCPClient( {"pipedrive": { "transport": "streamable_http", "url": mcp_url, "headers": {"Authorization": f"Bearer {session_token}"}, }} ) as client: tools = client.get_tools() tool_map = {t.name: t for t in tools} # bind tools and run the same loop shown above

Recommended reading: the CRM AI agent development guide walks through the same connected-account model applied end to end for sales agents.

Which one to build against

If your Pipedrive agent is an interactive assistant doing core CRM work with a user present to authorize, build against MCP; it is the faster path and Pipedrive maintains the surface for you. If your agent runs headless or on a schedule, reacts to webhooks, or needs products, files, analytics, or user management, build against the API directly.

Either way, the credential management problem is the same. Both paths give you a token per user and neither gives you the vault, rotation, and revocation that a multi-tenant agent requires. That is the part worth solving once, at the infrastructure layer, so it does not have to be re-solved every time you add a connector or move an agent from MCP to the API.

Compare plans on the Scalekit pricing page, or browse the Pipedrive connector to see the full tool surface.

Building a Pipedrive agent and want a second set of eyes on the auth model? Join the Scalekit Slack community, or talk to us for immediate help.

No items found.
Agent
Auth Quickstart
On this page
Share this article
Agent
Auth Quickstart

Acquire enterprise customers with
zero upfront cost.

Every feature unlocked. No hidden fees.